RU2445705C2 - Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель - Google Patents

Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель Download PDF

Info

Publication number
RU2445705C2
RU2445705C2 RU2010114314/08A RU2010114314A RU2445705C2 RU 2445705 C2 RU2445705 C2 RU 2445705C2 RU 2010114314/08 A RU2010114314/08 A RU 2010114314/08A RU 2010114314 A RU2010114314 A RU 2010114314A RU 2445705 C2 RU2445705 C2 RU 2445705C2
Authority
RU
Russia
Prior art keywords
frame buffer
data structure
areas
video encoder
data
Prior art date
Application number
RU2010114314/08A
Other languages
English (en)
Other versions
RU2010114314A (ru
Inventor
Дастин БАЙФОРД (US)
Дастин БАЙФОРД
Энтони КЭННОН (US)
Энтони КЭННОН
Рамеш ДХАРАН (US)
Рамеш ДХАРАН
Original Assignee
ВиЭмвеэ, Инк.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ВиЭмвеэ, Инк. filed Critical ВиЭмвеэ, Инк.
Publication of RU2010114314A publication Critical patent/RU2010114314A/ru
Application granted granted Critical
Publication of RU2445705C2 publication Critical patent/RU2445705C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/04Display device controller operating with a plurality of display units
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • G09G5/397Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)
  • Computer And Data Communications (AREA)
  • Facsimiles In General (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящая заявка относится к заявке на патент США с названием "Способ и устройство для распознавания графических примитивов при выборочной передаче на удаленный дисплей" (номер дела А335), имеющей такую же, как у настоящей заявки дату подачи и полностью включенной в настоящее описание посредством ссылки.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0002] Существующие операционные системы обычно содержат уровень интерфейса графического изображения, к которому имеют доступ приложения для формирования изображений на устройстве отображения, например мониторе. Уровень интерфейса графического изображения обеспечивает для приложений интерфейс программирования приложений для изображений и преобразует изображения, запрашиваемые такими приложениями, в набор графических команд, которые далее поступают на драйвер видеоадаптера. Драйвер видеоадаптера, в свою очередь, принимает графические команды, преобразует их в соответствующие графические примитивы для видеоадаптера и направляет их на видеоадаптер (например, видеокарту, интегрированный видеочипсет и т.д.). Видеоадаптер принимает графические примитивы и немедленно обрабатывает их или сохраняет в буфере обратного магазинного типа (FIFO буфер) для последовательного выполнения с целью обновления буфера кадров в видеоадаптере, который используют для формирования и передачи видеосигнала на связанный внешний монитор. Одним из примеров такого уровня интерфейса графического изображения является интерфейс графических устройств (интерфейс GDI) операционной системы (ОС) Microsoft® Windows, который реализован в виде динамически подключаемых библиотек на уровне пользователя и уровне ядра, доступных через ОС Windows.
[0003] По мере развития технологий, например при технологии вычислений на базе сервера (SBC) и инфраструктуры виртуального рабочего стола (VDI), организации способны заменить традиционные персональные компьютеры (PC) исполняемыми копиями рабочих столов, размещенных на удаленных настольных серверах (или в выполняемых на них виртуальных машинах) в информационном центре. Приложение клиент-терминала, установленное на терминале пользователя, подключается к удаленному настольному серверу, который передает графический пользовательский интерфейс сеанса работы операционной системы для воспроизведения на дисплее терминала пользователя. Одним из примеров такого удаленного настольного сервера может служить виртуальная вычислительная сеть (VNC), которая использует протокол удаленного буфера кадров (RFB) для передачи буферов кадров (содержащих значения каждого пиксела, отображаемого на экране) с удаленного настольного сервера клиенту. Для уменьшения количества отображаемых данных, относящихся к графическому пользовательскому интерфейсу, пересылаемому приложению клиент-терминала, удаленный настольный сервер может иметь вторую копию буфера кадров, которая отражает предшествующее состояние буфера кадров. Эта вторая копия обеспечивает возможность сравнения удаленным настольным сервером предшествующего и текущего состояний буфера кадров для распознавания различий отображаемых данных с целью кодирования (сужения ширины полосы пропускания сети) и последующей передачи в сеть приложению клиент-терминала.
[0004] Однако обработка данных до копирования буфера кадров в такой второй буфер кадров может значительно ухудшить производительность удаленного настольного сервера. Например, для непрерывного копирования данных из буфера кадров, поддерживающего разрешающую способность 1920×1200 и глубину цвета 24 бит на пиксел, во второй буфер кадров со скоростью 60 раз в секунду, необходимо копировать более 3,09 Гбит/сек (гигабит в секунду).
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] При передаче данных на удаленный клиентский терминал отображаемые данные обрабатывают для сужения полосы пропускания. В одном из вариантов реализации изобретения сервер содержит первый буфер кадров для хранения отображаемых данных и видеокодер, в котором использован второй буфер кадров для передачи отображаемых данных на удаленный клиентский терминал. Распознают ограничивающий прямоугольник, который охватывает обновления отображаемых данных в первом буфере кадров, и отмечают элементы, соответствующие ограничивающему прямоугольнику в структуре данных. Каждый элемент структуры данных соответствует различной области в первом буфере кадров, а отмеченные элементы соответствуют областям ограничивающего прямоугольника. Области первого буфера кадров сопоставляют с соответствующими областями второго буфера кадров, а усеченную структуру данных, которая содержит отмеченные элементы только сравниваемых областей с различиями, помещают на видеокодере. Таким образом, видеокодер обладает способностью передавать обновленные отображаемые данные областей второго буфера кадров, которые соответствуют отмеченным элементам в усеченной структуре данных.
[0006] В одном из вариантов реализации изобретения элементы структуры данных после помещения обнуляют для подготовки к последующей передаче отображаемых данных на удаленный терминал. В другом варианте реализации изобретения те области, в которых на этапе сравнения выявляют различия, копируют из первого буфера кадров в соответствующие области второго буфера кадров для предоставления ему обновленных отображаемых данных
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] На фиг.1 приведена функциональная схема удаленного настольного сервера согласно одному из вариантов реализации изобретения.
[0008] На фиг.2 приведена структура данных "передаваемого битового массива" согласно одному из вариантов реализации изобретения.
[0009] На фиг.3 приведена вторая структура данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
[0010] На фиг.4 представлена структурная схема, представляющая этапы передачи запрашиваемых графических изображений от приложения на видеоадаптер согласно одному из вариантов реализации изобретения.
[0011] На фиг.5 представлена структурная схема, представляющая этапы передачи данных из буфера кадров в видеокодер согласно одному из вариантов реализации изобретения.
[0012] На фиг.6 представлена структурная схема, представляющая этапы усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
[0013] На фиг.7 приведен наглядный пример усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0014] На фиг.1 приведена функциональная схема удаленного настольного сервера согласно одному или более вариантам реализации изобретения. Удаленный настольный сервер 100 может быть создан на рабочем столе, ноутбуке или платформе аппаратных средств сервера 102, например архитектурной платформе х86. Такая платформа аппаратных средств может содержать центральный процессор 104, оперативную память 106, сетевой адаптер 108, жесткий диск 110 и другие устройства ввода/вывода, например, помимо прочего, мышь и клавиатуру (на фиг.1 не показаны).
[0015] В дополнение к платформе аппаратных 102 средств установлен уровень программного обеспечения виртуализации, именуемый в дальнейшем гипервизором 124. Гипервизор 124 поддерживает виртуальное пространство выполнения машины 126, внутри которого могут быть одновременно синхронизированы и выполнены множество виртуальных машин (виртуальные машины 1281-128N). В одном из вариантов реализации изобретения каждая виртуальная машина 1281-128N работает с определенным пользователем, удаленно соединенным посредством определенного клиентского терминала. Гипервизор 124 каждой виртуальной машины 1281-128N управляет соответствующей виртуальной платформой аппаратных средств (т.е. виртуальными платформами аппаратных средств 1301-130N), которые содержат эмулируемые аппаратные средства, реализованные в программном обеспечении, например центральный процессор 132, оперативная память 134, жесткий диск 136, сетевой адаптер 138 и видеоадаптер 140. Эмулируемый видеоадаптер 140 резервирует и поддерживает буфер 142 кадров, который представляет собой часть используемой видеоадаптером 140 памяти, хранящей буфер значений пикселей, с помощью которого может быть обновлен видеотерминал (т.е. "кадр"), и буфер 144 обратного магазинного типа (FIFO), который представляет собой часть используемой видеоадаптером 140 памяти, хранящей список графических примитивов, используемых для обновления буфера 142 кадров. В одном из вариантов реализации изобретения буфер 144 представляет собой буфер разделяемой памяти, к которому обеспечен доступ и который поделен между видеоадаптером 140 и драйвером 154 видеоадаптера.
[0016] Виртуальная платформа аппаратных средств 1301 может выполнять функцию эквивалента стандартной архитектуры аппаратных средств х86 так, что любая операционная система, поддерживающая формат х86, например Microsoft Windows®, Linux®, Solaris® х86, NetWare, FreeBSD, и т.д., может быть установлена в качестве гостевой операционной системы (ОС) 146 для выполнения приложений 148 для виртуальной машины, например виртуальной машины 1281. Приложения 148, требующие наличия изображения на дисплее, запрашивают графические изображения через интерфейс программирования приложений, предлагаемый уровнем графического интерфейса 150 (например, Microsoft Windows® GDI в одном из вариантов реализации изобретения) который, в свою очередь, преобразует запрашиваемые графические изображения в графические команды и посылает их на драйвер 154 видеоадаптера в уровне 152 драйвера устройства. Как показано в варианте реализации изобретения (см. фиг.1), драйвер 154 видеоадаптера резервирует и поддерживает структуру 156 пространственных данных, именуемую в дальнейшем структурой данных "передаваемого битового массива", которая отслеживает потенциально измененные области буфера 142 кадров видеоадаптера 140. Дополнительные сведения о реализации и использовании структур данных передаваемого битового массива будут описаны далее. Уровень 152 драйвера устройства содержит драйверы дополнительных устройств, например драйвер 158 сетевого адаптера, которые взаимодействуют с эмулируемыми устройствами в виртуальной платформе аппаратных средств 1301 (например, виртуальный сетевой адаптер 138 и т.д.) так, словно такие эмулируемые устройства представляют собой действующие физические устройства платформы 102 аппаратных средств. Обычно гипервизор 124 отвечает за прием запросов от драйверов устройств в уровне 152, полученных эмулируемыми устройствами в виртуальной платформе 1301, и их преобразование в соответствующие запросы о драйверах реальных устройств в уровне драйвера физического устройства гипервизора 124, который связан с реальными устройствами в платформе аппаратных средств 102.
[0017] Для передачи графических пользовательских интерфейсов на дисплей удаленного клиентского терминала виртуально машина 1281 дополнительно содержит видеокодер 160, выполненный с возможностью взаимодействия с драйвером 154 видеоадаптера (например, через интерфейс программирования приложений) для приема данных от буфера 142 кадров для кодирования (например, сужения ширины полосы пропускания сети) и последующей их передачи в сеть через драйвер 158 сетевого адаптера (например, через виртуальный сетевой адаптер 138 и, в конечном счете, через физический сетевой адаптер 108). Видеокодер 160 резервирует и поддерживает второй буфер 162 кадров для хранения данных, полученных от буфера 142 кадров, а также его собственной структуры 164 данных передаваемого битового массива (именуемой далее структурой 164 данных передаваемого битового массива, относящейся к кодеру) для распознавания измененных областей во втором буфере 162 кадров. В одном из вариантов реализации изобретения видеокодер 160 непрерывно опрашивает драйвер 154 (например, 30 или 60 раз в секунду) для копирования изменений, произошедших в буфере 142 кадров, во второй буфер 162 кадров и передачи на удаленный клиентский терминал.
[0018] Следует отметить, что, как это понятно специалистам в данной области, различные термины, уровни и классификации, используемые для описания элементов виртуализации (фиг.1), могут быть названы по-другому без выхода за пределы их функциональных возможностей или предмета изобретения. Например, виртуальные платформы аппаратных средств 1301-130N можно рассматривать как часть мониторов 1661-166N виртуальных машин, которые обеспечивают поддержку виртуальной системы, необходимую для координирования операций между гипервизором 124 и соответствующей виртуальной машиной 1281-128N. Кроме того, виртуальные платформы 1301-130N аппаратных средств можно считать независимыми от мониторов 1661-166N виртуальных машин, а мониторы 1661-166N виртуальных машин можно считать независимыми от гипервизора 124. В качестве примера гипервизора 124, который может быть использован в варианте реализации изобретения, может быть элемент программы VMware's ESX™, доступной для приобретения в VMware, Inc., Пало Альто, Калифорния. Кроме того, варианты реализации изобретения могут быть применены в других виртуализированных компьютерных системах, например в централизованных виртуальных машинных системах, где помимо операционной системы может быть использован гипервизор.
[0019] На фиг.2 представлена структура данных передаваемого битового массива по одному из вариантов реализации изобретения. Как в драйвере 154, так и в видеокодере 160, использована структура данных передаваемого битового массива для отслеживания измененных областей буфера 142 кадров и второго буфера 162 кадров соответственно. В варианте реализации изобретения, представленном на фиг.2, структура данных передаваемого битового массива представляет собой двумерный битовый вектор, где каждый бит (именуемый также «элементом передаваемого битового массива») в битовом векторе представляет область соответствующего буфера кадров размером N×N. Установленный бит (именуемый также "отмеченным" элементом передаваемого битового массива) в битовом векторе указывает, что по меньшей мере одно значение пиксела в соответствующей области буфера кадров размером N×N было изменено в конкретный интервал времени (например, между запросами видеокодера 160 при опросе). Например, на фиг.2 показан пиксельный блок 200 буфера кадров размером 64х64, где черными точками изображены значения пикселей, которые были изменены в конкретный интервал времени. Битовый вектор 205 размером 8х8 отображает соответствующий блок элементов передаваемого битового массива структуры данных передаваемого битового массива, где каждый бит (или элемент передаваемого битового массива) соответствует области 8х8 в пиксельном блоке 200. Установленный бит (или отмеченный элемент передаваемого битового массива) в битовом векторе 205 обозначают символом "X". Например, отмеченный элемент 210 передаваемого битового массива соответствует области 215 буфера кадров, все значения пикселей в которой были изменены в указанный интервал времени, на что указывают черные точки. На фиг.2 представлены другие отмеченные элементы передаваемого битового массива в битовом векторе 205, соответствующие областям в пиксельном блоке 200 буфера кадров, которые имеют измененные значения пикселей, изображенные черными точками. Отслеживая сходные с вектором 205, показанным на фиг.2, двумерные битовые векторы структуры данных передаваемого битового массива, можно определить области буфера кадров размером N×N, измененные в интервал времени (и пропустить области, которые не были изменены в интервал времени).
[0020] На фиг.3 представлена вторая структура данных передаваемого битового массива по одному из вариантов реализации изобретения. В варианте реализации изобретения, который приведен на фиг.3, структура данных передаваемого битового массива представляет собой область дерева квадрантов, где каждый уровень дерева отображает битовый вектор с более высоким разрешением блоков пикселей 2N×2N. На фиг.3 показан пиксельный блок 300 буфера кадров размером 64×64, где черными точками изображены значения пикселей, которые были изменены в конкретный интервал времени. Блок пикселей последовательно подразделяют на все меньшие и меньшие подквадранты так, чтобы каждый измененный пиксел (например, черные точки) мог быть заключен внутри самого маленького подквадранта. В пиксельном блоке 300 самый маленький подквадрант представляет собой область пикселей 8×8, например области 305, 310 и 315. Большие подквадранты включают в себя подквадранты 16×16, например, 320 и 325, а также подквадранты 32×32, например, 330. Дерево квадрантов 335 четырехуровневой области отображает структуру данных передаваемого битового массива, которая соответствует пиксельному блоку 300 буфера кадров размером 64×64. Как видно из фиг.3, каждый уровень области дерева квадрантов 335 может представлять собой битовый вектор, биты которого соответствуют подквадранту конкретного размера в пиксельном блоке 300 с размером от 64×64 до 8×8 в зависимости от уровня битового вектора. Область узла дерева квадрантов 335, который отмечен как "X", указывает, что по меньшей мере одно значение пиксела в соответствующем подквадранте узла в пиксельном блоке 300 изменено в конкретный интервал времени (т.е. имеет черную точку). Например, узел 300Q уровня 0 (уровень 64×64) области дерева квадрантов 335 представляет собой блок пикселей размером 64×64 и отмечен как "X", т.к. по меньшей мере одно значение пикселей в блоке 300 может быть изменено. В отличие от этого, узел 330Q уровня 1 (уровень 32×32) области дерева квадрантов 335 представляет собой подквадрант 32×32 330 и не отмечен, т.к. не изменены никакие значения пикселей в подквадранте 330. Аналогично, узлы 320Q и 325Q уровня 2 (уровень 16×16) представляют собой подквадранты 16×16 320 и 325 соответственно и не отмечены, т.к. не изменены никакие значения пикселей в подквадрантах 320 и 325. Узлы 305Q, 310Q и 315Q уровня 3 (уровень 8×8) соответствуют областям 8×8 305, 310 и 315 пиксельного блока 300 соответственно и отмечены соответствующим образом. В варианте дерева квадрантов области структуры данных передаваемого битового массива, например, в варианте, представленном на фиг.3, каждый узел в самом глубоком уровне дерева квадрантов области (т.е. уровне, который соответствует самому маленькому подквадранту, например, области пикселей 8×8) представляет собой элемент передаваемого битового массива. Отслеживая вариант дерева квадрантов области структуры данных передаваемого битового массива, можно легко определить, какая из областей 8×8 (или другой подквадрант наименьшего размера) буфера кадров изменен за интервал времени. Кроме того, структура его дерева позволяет быстро пропускать подквадранты в буфере кадров больших размеров, которые не были изменены в интервал времени. Далее, следует отметить, что в варианте дерева квадрантов области структуры данных передаваемого битового массива может быть сохранена память, используемая структурой данных передаваемого битового массива, в зависимости от конкретной реализации дерева квадрантов области. Например, в то время как двумерный вариант битового вектора структуры 205 данных передаваемого битового массива (фиг.2) может расходовать 64 бита независимо от того, сколько областей 8х8 не отмечены, область дерева квадрантов 335 (фиг.3) расходует меньшее количество битов, если отмечено меньшее количество областей 8х8. Видно, что в структуре 205 данных передаваемого битового массива использовано 64 бита, в то время как в структуре 335 данных передаваемого битового массива использовано 33 бита. Следует отметить, что структура 164 данных передаваемого битового массива, относящаяся к кодеру, и структура 156 данных передаваемого битового массива, относящаяся к драйверу, могут быть реализованы с помощью разнообразных структур данных, включая приведенные на фиг.2 и 3, и что в любом конкретном варианте реализации изобретения структура 164 данных может использовать структуру, отличную от структуры 156 данных.
[0021] На фиг.4 представлена структурная схема, которая описывает операции передачи запрашиваемых графических изображений от приложения на видеоадаптер согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0022] Согласно варианту реализации изобретения, представленному на фиг.4, на этапе 405 приложение 400 (т.е. одно из приложений 148, работающих на гостевой операционной системе 146), может получить доступ к интерфейсу программирования приложений уровня графического интерфейса 150 (например, интерфейс GDI в Microsoft Windows) для отсылки запрашиваемых графических изображений на экран, например, обновления его графического пользовательского интерфейса в ответ на действие пользователя. На этапе 410 уровень графического интерфейса 150 через гостевую операционную систему 146 принимает запрашиваемые графические изображения и преобразовывает их в графические команды, которые могут быть распознаны драйвером 154. На этапе 415 уровень графического интерфейса 150 передает графические команды драйверу 154. На этапе 420 драйвер 154 принимает графические команды и отмечает элементы структуры 156 данных, указывая, что по меньшей мере часть значений пикселей в областях буфера 142 кадров, соответствующих отмеченным элементам структуры 156 данных, может быть обновлена в результате выполнения графических команд. В одном из вариантов реализации изобретения драйвер 154 вычисляет или иным способом определяет область внутри буфера 142 кадров, например прямоугольник минимального размера, который заключает в себе пикселы, которые могут быть обновлены в результате выполнения графических команд (именуемый также "ограничивающим прямоугольником"). Далее, драйвер 154 обеспечивает возможность распознавания и отметки всех элементов передаваемого битового массива в структуре 156 данных, соответствующих областям буфера 154 кадров, которые содержат значения пикселей определенной области. На этапе 425 драйвер 154 преобразует графические команды в определенные графические примитивы устройства, а на этапе 430 вставляет графические примитивы в буфер 144 (например, в варианте реализации изобретения, в котором буфер 144 поделен между драйвером 154 и видеоадаптером 140). Затем на этапе 435 видеоадаптер 140 может обновить буфер 142 кадров в зависимости от степени готовности к действию графических примитивов (т.е. при достижении этими графическими примитивами края буфера 144).
[0023] На фиг.5 представлена структурная схема, которая описывает операции передачи данных буфера кадров из видеоадаптера в видеокодер согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0024] Согласно варианту реализации изобретения, приведенному на фиг.5, видеокодер 160 представляет собой приложение, работающее под управлением гостевой операционной системе 146, которое выполняет непрерывный опрос (например, 30 или 60 раз в секунду) драйвера 154 для приема данных в буфере 154 кадров видеоадаптера 140, их кодирования и передачи в сеть (например, через драйвер 158 сетевого адаптера) для приема терминалом удаленного клиента. На этапе 500 видеокодер 160 через подпрограмму интерфейса программирования приложений, предоставленную драйвером 154, формирует запрос драйверу 154 видеоадаптера на обновление буфера кадров и пересылает ему обращение (например, указатель) к памяти второго буфера 162 кадров, для разрешения драйверу 154 непосредственного обновления второго буфера 162 кадров. На этапе 505 драйвер 154 принимает запрос на обновление буфера кадров, а на этапе 510 он просматривает структуру 156 данных для распознавания отмеченных элементов передаваемого битового массива, которые соответствуют областям буфера 142 кадров, измененным после предыдущего запроса на обновление буфера кадров от видеокодера 160 (в результате графических запросов от приложений, см. фиг.4). Если на этапе 515 будет отмечен активный элемент передаваемого битового массива, то на этапе 520 драйвер 154 запрашивает у видеоадаптера 140 соответствующую область (т.е. значения пиксела в этой области) буфера 142 кадров. На этапе 525 видеоадаптер 140 принимает запрос и пересылает драйверу 154 требуемую область буфера 142 кадров.
[0025] На этапе 530 драйвер 154 принимает требуемую область буфера 142 кадров, а на этапе 535 сравнивает значения пикселей в полученной запрашиваемой области буфера 142 кадров со значениями пикселей соответствующей области во вторичном буфере 162 кадров, которые отражают предыдущее состояние буфера 142 кадров по окончании ответного действия драйвера 154 на предыдущий запрос видеокодера 160 на обновление буфера кадров. Эта операция 535 сравнения позволяет драйверу 154 распознать возможное несоответствие, которое является результатом избыточной передачи (передачи с резервированием) приложениями графических запросов (см. фиг.4). Например, из-за отсутствия внимания к аспектам выполняемых ими функций, связанным с выбором оптимальной графики, некоторые приложения могут на этапе 405 выдавать графические запросы (фиг.4), которые избыточно обновляют весь графический пользовательский интерфейс, даже в случае фактического изменения приложением только небольшой области графического пользовательского интерфейса. Такие графические запросы приводят к отметке элементов структуры 156 данных передаваемого битового массива, относящейся к драйверу, на этапе 420 (фиг.4), даже если области отмеченных элементов передаваемого битового массива соответствующего буфера 142 кадров не должны быть обновлены новыми значениями пикселей (т.е. области соответствуют разделам графического пользовательского интерфейса, которые фактически не изменены). При наличии таких отмеченных элементов передаваемого битового массива на этапе 535 сравнения может быть показано, что области буфера 142 кадров и второго буфера 162 кадров, соответствующие отмеченным элементам передаваемого битового массива, совпадают, поскольку значения пикселей этих областей не меняются из-за неоптимизированных графических запросов приложений (на этапе 405) по завершении реакции драйвера 154 видеоадаптера на предыдущий запрос видеокодера 160 на обновление буфера кадров.
[0026] Таким образом, если этап 535 сравнения на этапе 540 указывает, что области буфера 142 кадров и второго буфера 162 кадров совпадают, то на этапе 545 драйвер 154 видеоадаптера "усекает" структуру 156 данных за счет обнуления отмеченных элементов передаваемого битового массива, чтобы указать, что никакие фактические значения пикселей в соответствующей области буфера 142 кадров не изменены после завершения видеоадаптером 154 ответных действий на предыдущий запрос видеокодера 160 на обновление буфера кадров.
[0027] На фиг.6 представлена структурная схема, которая описывает операции усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0028] На этапе 600 драйвер 154 принимает графические команды от уровня интерфейса графического изображения 150, а на этапе 605 распознает ограничивающий прямоугольник в буфере 142 кадров, который охватывает все обновления значений пикселей при выполнении графических команд. На этапе 610 драйвер 154 отмечает элементы передаваемого битового массива в структуре 156 данных, которые соответствуют областям буфера 142 кадров (или участкам областей) внутри ограничивающего прямоугольника. Следует отметить, что этапы 605 - 610 соответствуют подэтапам, которые составляют часть этапа 420 (фиг.4). При приеме запроса на обновление буфера кадров от видеокодера на этапе 615 драйвер 154 видеоадаптера на этапе 620 сравнивает области буфера 142 кадров в ограничивающем прямоугольнике (на что указывают отмеченные элементы передаваемого битового массива в структуре 156 данных) с соответствующими областями во втором буфере 164 кадров (который содержит информацию о состоянии буфера 142 кадров по завершении ответного действия драйвера 154 на запрос на обновление буфера кадров). На этапе 625 драйвер 154 видеоадаптера помещает на видеокодере 160 усеченную структуру данных передаваемого битового массива, только отмеченные элементы которой соответствуют сравниваемым на этапе 620 областям, где фактически имеются различия. На этапе 630 драйвер 154 видеоадаптера обнуляет структуру 154 данных всех отмеченных элементов. Следует отметить, что этапы 615-630 обычно соответствуют этапам 505, 535, 560 и 565 (фиг.5) соответственно. На этапе 635 видеокодер 160 принимает усеченную структуру данных передаваемого битового массива, а на этапе 640 передает отображаемые данные в области, которые соответствуют отмеченным элементам в усеченной структуре данных передаваемого битового массива.
[0029] На фиг.7 приведен наглядный пример усечения структуры данных передаваемого битового массива и представлен пиксельный блок 700 буфера 142 кадров 142 размером 88×72. Каждый подразделенный блок, например 705, представляет собой область пикселей размером 8×8, которая соответствует элементу передаваемого битового массива в структуре 156 данных. Как видно из фиг.7, на этапе 600 (фиг.6) драйвер 154 видеоадаптера принимает графические команды, относящиеся к графическим запросам приложения для изображения улыбающегося лица (смайлика) (см. изображение в пиксельном блоке 700). Однако графические команды посылают нечеткий запрос об обновлении изображения пиксельного блока 700 вместо того, чтобы просто запросить изображение конкретных пикселей непосредственно самого смайлика. Таким образом, каждый из элементов передаваемого битового массива в соответствующем блоке 710 передаваемого битового массива размером 11×9 структуры 156 данных передаваемого битового массива, относящейся к драйверу, отмечен драйвером 154 видеоадаптера как при выполнении этапа 610, указанного на фиг.6 (см. отмеченный элемент 715 передаваемого битового массива). Однако при приеме драйвером 154 запроса видеокодера 160 на обновление буфера кадров, как при выполнении этапа 615, драйвер 154 обеспечивает усечение блока 710 передаваемого битового массива, создавая таким образом блок 720 передаваемого битового массива, и воспроизводит на видеокодере 160 блок 710 при выполнении этапов 620 и 625, например, путем обнуления элементов передаваемого битового массива, таких как неотмеченного элемента 725 передаваемого битового массива, соответствующие области которого в буфере 142 кадров фактически не изменены (т.е. не содержат обновленных пикселей смайликов), как при выполнении этапа 545 (фиг.5).
[0030] Однако если при выполнении этапа 540 (см. фиг.5) операция сравнения 535 указывает на тот факт, что области буфера 142 кадров и второго буфера 162 кадров отличны (т.е. фактические значения пикселей в области буфера 142 кадров были изменены в результате графических запросов приложений на этапе 405 по завершении ответного действия на предыдущий запрос видеокодера 160 на обновление буфера кадров), то на этапе 550 драйвер 154 копирует значения пикселей в области буфера 142 кадров в соответствующую область второго буфера 162 кадров для точного воспроизведения во втором буфере 162 кадров измененных значений пикселей в области буфера 142 кадров. Если на этапе 555 драйвер 154 видеоадаптера не закончит просматривать структуру 156 данных, то процесс будет возвращен к выполнению этапа 510. Если на этапе 555 драйвер 154 видеоадаптера завершает просматривание структуры 156 данных, то на этапе 560 драйвер 154 обеспечивает копирование на видеокодер 160 структуры 156 данных, которую именуют структурой 164 данных передаваемого битового массива, относящейся к кодеру. В случае если на этапе 545 отмеченные элементы передаваемого битового массива в структуре 156 данных обнулены, то структура 164 данных отражает более оптимизированное представление областей во втором буфере 162 кадров, которые имеют фактические измененные значения пикселей. На этапе 565 все отмеченные элементы передаваемого битового массива в структуре 156 данных могут быть обнулены драйвером 154 видеоадаптера при подготовке к приему от видеокодера 160 последующего запроса на обновление буфера кадров, а видеокодеру 160 может быть указано на завершение его ответного действия на запрос обновления буфера кадров, посланный на этапе 500.
[0031] После завершения ответного действия драйвера 154 на запрос обновления буфера кадров, посланный видеокодером 160 на этапе 500, второй буфер 162 кадров может содержать все измененные значения пикселей, полученные в результате запросов графических изображений у приложений (на этапе 405, показанном на фиг.4), т.к. завершенное ответное действие на предшествующий запрос видеокодера 160 на обновление буфера кадров и структура 164 данных содержат отмеченные элементы передаваемого битового массива растровых изображений, которые указывают, какие из областей внутри второго буфера 162 кадров содержат такие измененные значения пикселей. При наличии такой информации на этапе 570 структура 164 данных может быть просмотрена видеокодером 160 с точки зрения отмеченных элементов передаваемого битового массива, а извлечены могут быть только те области во втором буфере 162 кадров, которые соответствуют таким отмеченным элементам передаваемого битового массива при кодировании и передаче на дисплей удаленного клиента.
[0032] Хотя на фиг.1 приведен вариант изобретения, в котором видеокодер 160 реализован внутри виртуальной машины 1281, следует отметить, что в других вариантах изобретения видеокодер 160 может быть реализован в других компонентах удаленного настольного сервера 100, например внутри монитора виртуальной машины 1661 или другом месте в гипервизоре 124. Аналогично, хотя на фиг.1 приведен вариант изобретения, в котором видеокодер 160 и драйвер 154 могут работать в виртуальной машине 1281, связанной с виртуальным видеоадаптером 140 в гипервизоре 124, следует отметить, что эти компоненты могут быть использованы в любой архитектуре удаленного настольного сервера, включая архитектуру вычислительной системы на базе невиртуальных машин. Кроме того, вместо использования видеокодера 160 и виртуального видеоадаптера 140 в качестве компонентов программного обеспечения сервера альтернативные варианты реализации изобретения могут использовать в каждом или любом из них компоненты аппаратных средств ЭВМ. Следует также отметить, что альтернативные варианты изобретения могут не нуждаться в каких-либо виртуальных видеоадаптерах. Вместо этого в таких альтернативных вариантах реализации изобретения, например, драйвер 154 может резервировать и управлять как буфером 142 кадров, так и непосредственно буфером 144. Точно так же в альтернативных вариантах реализации изобретения видеоадаптер 140 может не иметь буфера FIFO, например буфера 140 FIFO, но может обрабатывать входные графические примитивы сразу же после приема. Следует также отметить, что другие описанные здесь разнообразные структуры данных и буферы могут быть зарезервированы и поддержаны компонентами других систем. Например, вместо резервирования и поддержки видеокодером 160 второго буфера 162 кадров и передачи ссылки на ячейку памяти драйверу 154 (см. этап 500 фиг.5) драйвер 154 может резервировать и поддерживать второй буфер 162 кадров (а также структуру 164 данных) и обеспечить доступ к ссылке на ячейку памяти видеокодера 160 в альтернативном варианте. Кроме того, следует отметить, что некоторые выполняемые драйвером 154 функции и операции могут быть реализованы в специальном расширении или компоненте ранее существовавшего или стандартного драйвера видеоадаптера (то есть, видеокодер 160 может быть связан с таким специальным расширением драйвера видеоадаптера, а не с самим драйвером). Следует отметить, что в альтернативных вариантах количество и типы данных, которыми могут обмениваться компоненты системы, могут быть изменены, а также могут быть использованы различные методы оптимизации. Например, на этапе 560 (фиг.5) вместо копирования и предоставления всей структуры 156 данных в качестве структуры 164 данных в альтернативном варианте реализации изобретения видеокодеру 160 могут быть предоставлены только соответствующие части структуры 156 данных или же использована альтернативная структура данных для предоставления видеокодеру 160 таких соответствующих частей структуры 156 данных. Точно так же следует отметить, что для оптимизации обучающих частей может быть использован способ кэширования. Драйвер 154 может поддерживать промежуточный кэш буфера 144 для снижения издержек обработки данных (вычисления), например, на этапе 420 (фиг.4). Точно так же вместо (или в дополнение к) драйвера 154, который выполняет непрерывный опрос, в альтернативных вариантах реализации изобретения видеокодером 160 могут быть приняты обратные вызовы или сигналы прерывания, выдаваемые драйвером 154, при обновлении буфером 142 кадров своего содержания и/или дополнительном приеме запросов отдаленного клиента на обновление буфера кадров.
[0033] В различных рассмотренных здесь вариантах реализации изобретения могут быть использованы различные реализуемые при помощи компьютера операции с данными, хранящимися в вычислительных системах. Например, для выполнения этих операций может быть необходима физическая обработка физических величин, которые, обычно, хотя и не обязательно, могут принимать вид электрических или магнитных сигналов, при этом эти сигналы или их представления допускают хранение, передачу, группирование, сравнивание и другие способы обработки. Кроме того, к видам обработки, о которых идет речь, могут быть отнесены, например, создание, распознавание, определение или сравнение. Любые рассмотренные здесь операции, которые составляют часть одного или более вариантов реализации изобретения, могут представлять собой применимые машинные операции. Кроме того, один или более вариантов реализации изобретения также относятся к устройству или аппаратуре для выполнения этих операций. Устройство может быть разработано специально для конкретных требуемых целей или может представлять собой универсальный компьютер, избирательно активированный или сконфигурированный компьютерной программой, хранящейся в компьютере. В частности, для выполнения необходимых операций, могут быть использованы различные универсальные машины, в которых применены компьютерные программы, написанные в соответствии с изложенным здесь, или наиболее удобным может оказаться создание специализированного устройства.
[0034] Различные рассмотренные здесь варианты реализации изобретения могут быть использованы с компьютерными системами других конфигураций, включая портативные устройства, микропроцессорные системы, микропроцессорную бытовую электронику или бытовую электронику с программным управлением, миникомпьютеры, универсальные ЭВМ и т.п.
[0035] Один или более вариантов настоящего изобретения могут быть реализованы в виде по меньшей мере одной компьютерной программы, либо в виде по меньшей мере одного программного модуля, включенного по меньшей мере в один машиночитаемый носитель данных. Термин машиночитаемый носитель данных относится к любому устройству накопления, в котором могут храниться данные, вводимые впоследствии в машиночитаемый носитель данных, созданный на основе любой существующей или впоследствии разработанной технологии реализации компьютерных программ способом, который может обеспечить считывание компьютером. Примерами машиночитаемых носителей данных могут служить накопитель на жестких дисках, сетевая система хранения данных (NAS), постоянное запоминающее устройство, запоминающее устройство с произвольной выборкой (например, флэш-память), дисковод для компакт-дисков (CD-ROM), CD-R или CD-RW диск, DVD (цифровой универсальный диск), магнитная лента и другие оптические и неоптические устройства хранения данных. Машиночитаемый носитель данных может также храниться в компьютерной системе, связанной с сетью таким образом, что компьютерная программа может быть сохранена и выполнена распределенным способом.
[0036] Хотя один или более вариантов реализации настоящего изобретения описаны более подробно для лучшего понимания, однако очевидно, что в пределах объема притязаний могут быть сделаны некоторые изменения и модификации. Соответственно предложенные варианты реализации изобретения нужно рассматривать как иллюстративные, а не ограничительные, кроме того, объем притязаний не должен быть ограничен приведенными здесь деталями, но может быть изменен в пределах формулы изобретения. Ни формула, ни устройства и операции не подразумевают никакого конкретного порядка работы, если это явно не указано в формуле.
[0037] Кроме того, несмотря на тот факт, что рассмотренные здесь способы виртуализации, как правило, предполагают, что виртуальные машины представляют собой интерфейсы, совместимые с конкретной системой аппаратных средств, специалистам в данной области понятно, что описанные способы могут быть использованы в сочетании с виртуализациями, не соответствующими непосредственно никакой конкретной системе аппаратных средств. Могут быть предусмотрены системы виртуализации, соответствующие различным вариантам, реализованным в виде основных или неосновных вариантов, либо в виде вариантов, которые стремятся стереть различия между этими двумя. Кроме того, в аппаратных средствах могут быть полностью или частично осуществлены различные операции виртуализации. Например, в аппаратной реализации может быть использована справочная таблица модификации запросов на обращение к памяти для защиты данных, не содержащихся на диске.
[0038] Независимо от степени виртуализации возможно большое количество изменений, модификаций, дополнений и усовершенствований. Следовательно, программное обеспечение виртуализации может содержать элементы главной вычислительной машины, пульта управления или гостевой операционной системы, выполняющей функции виртуализации. Множество примеров может быть предусмотрено для компонентов, операций или структур, приведенных здесь в качестве одного примера. И, наконец, границы между различными компонентами, операциями и устройствами хранения данных несколько произвольны, поэтому отдельные операции описаны в контексте конкретных иллюстративных конфигураций. Другие распределения функциональных возможностей могут подпасть под объем притязаний изобретения. Как правило, структуры и функциональные возможности, представленные в конфигурациях, приведенных в качестве примера, в виде отдельных компонентов, могут быть выполнены как комбинированные структура или компонент. Аналогично, структуры и функциональные возможности, представленные в виде одного компонента, могут быть выполнены как отдельные компоненты. Эти и другие изменения, модификации, дополнения и усовершенствования могут подпасть под область притязаний прилагаемой формулы изобретения.

Claims (20)

1. Способ подготовки отображаемых данных в сервере, содержащем первый буфер кадров для хранения отображаемых данных и видеокодер, который использует второй буфер кадров для передачи отображаемых данных на удаленный клиентский терминал, для передачи на указанный удаленный клиентский терминал, согласно которому
распознают ограничивающий прямоугольник, относящийся к обновлениям отображаемых данных в первом буфере кадров;
отмечают элементы в структуре данных, в которой каждый элемент соответствует различной области в первом буфере кадров, причем отмеченные элементы далее соответствуют областям ограничивающего прямоугольника;
сравнивают области первого буфера кадров с соответствующими областями второго буфера кадров; и
помещают на видеокодере усеченную структуру данных, которая содержит отмеченные элементы только для сравниваемых областей, имеющих различия, так, что видеокодер обладает способностью передачи обновленных отображаемых данных областей второго буфера кадров, которые соответствуют отмеченным элементам усеченной структуры данных.
2. Способ по п.1, согласно которому после помещения обнуляют элементы в структуре данных.
3. Способ по п.1, согласно которому дополнительно копируют области, для которых при сравнении выявлены отличия от первого буфера кадров, в соответствующие области второго буфера кадров.
4. Способ по п.1, согласно которому первый буфер кадров представляет собой буфер памяти, который выделен виртуальным видеоадаптером, а структура данных выделена драйвером видеоадаптера, связанным с виртуальным видеоадаптером.
5. Способ по п.4, согласно которому драйвер видеоадаптера представляет собой элемент гостевой операционной системы виртуальной машины, реализованной на сервере.
6. Способ по п.1, согласно которому структура данных представляет собой двумерный битовый вектор.
7. Способ по п.1, согласно которому структура данных представляет собой область дерева квадрантов.
8. Машиночитаемый носитель информации, содержащий команды, выполнение которых процессором сервера, содержащим первый буфер кадров для хранения отображаемых данных и видеокодер, который использует второй буфер кадров для передачи отображаемых данных на удаленный клиентский терминал, приводит к подготовке процессором отображаемых данных для передачи на удаленный клиентский терминал посредством выполнения следующих этапов;
распознавание ограничивающего прямоугольника, относящегося к обновлениям отображаемых данных в первом буфере кадров;
отметка элементов в структуре данных, в которой каждый элемент соответствует различной области в первом буфере кадров, причем отмеченные элементы далее соответствуют областям ограничивающего прямоугольника;
сравнение областей первого буфера кадров с соответствующими областями второго буфера кадров; и
помещение на видеокодере усеченной структуры данных, которая содержит отмеченные элементы только для сравниваемых областей, имеющих различия, так что видеокодер обладает способностью передачи обновленных отображаемых данных областей второго буфера кадров, которые соответствуют отмеченным элементам усеченной структуры данных.
9. Машиночитаемый носитель по п.8, отличающийся тем, что указанный процессор дополнительно выполняет этап обнуления элементов структуры данных после этапа помещения.
10. Машиночитаемый носитель по п.8, отличающийся тем, что указанный процессор дополнительно выполняет этап копирования областей, для которых на этапе сравнения выявлены отличия от первого буфера кадров, в соответствующие области второго буфера кадров.
11. Машиночитаемый носитель по п.8, отличающийся тем, что первый буфер кадров представляет собой буфер памяти, выделенный виртуальным видеоадаптером, а структура данных выделена драйвером видеоадаптера, связанным с виртуальным видеоадаптером.
12. Машиночитаемый носитель по п.8, отличающийся тем, что драйвер видеоадаптера представляет собой элемент гостевой операционной системы виртуальной машины, реализованной на сервере.
13. Машиночитаемый носитель по п.8, в котором структура данных представляет собой двумерный битовый вектор.
14. Машиночитаемый носитель по п.8, в котором структура данных представляет собой область дерева квадрантов.
15. Способ подготовки отображаемых данных в сервере, содержащем первый буфер кадров для хранения отображаемых данных и видеокодер, который использует второй буфер кадров для передачи отображаемых данных на удаленный клиентский терминал, для передачи на указанный удаленный клиентский терминал, согласно которому
принимают от видеокодера запрос на обновление второго буфера кадров;
распознают отмеченные элементы структуры пространственных данных для определения областей первого буфера кадров, которые содержат обновленные отображаемые данные, причем каждый элемент пространственной структуры данных соответствует разной области первого буфера кадров;
копируют отображаемые данные, хранящиеся в определенных областях первого буфера кадров, в соответствующие области во втором буфере кадров; и
обнуляют отмеченные элементы в структуре пространственных данных, обеспечивая возможность передачи видеокодером обновленных отображаемых данных областей второго буфера кадров, которые соответствуют отмеченным элементам структуры пространственных данных.
16. Способ по п.15, согласно которому перед копированием второй буфер кадров содержит отображаемые данные, отражающие предшествующее состояние первого буфера кадров после завершения ответного действия на предшествующий запрос от видеокодера на обновление второго буфера кадров.
17. Способ по п.15, согласно которому дополнительно
принимают графические команды, соответствующие графическим запросам приложения, работающего на сервере;
устанавливают область первого буфера кадров для обновления в результате выполнения графических команд; и
отмечают все элементы структуры пространственных данных, соответствующие областям первого буфера, которые содержат отображаемые данные в установленной области.
18. Способ по п.17, согласно которому установленная область представляет собой прямоугольник, который ограничивает все отображаемые данные в первом буфере кадров, предназначенные для обновления в результате выполнения графических команд.
19. Способ по п.15, согласно которому дополнительно перед обнулением передают видеокодеру копию структуры пространственных данных, при этом видеокодер передает отображаемые данные, находящиеся в областях второго буфера кадров, соответствующих отмеченным элементам копии структуры пространственных данных.
20. Способ по п.19, согласно которому дополнительно перед копированием сравнивают определенные области первого буфера кадров с согласующимися областями второго буфера кадров; и
обнуляют каждый из отмеченных элементов в структуре пространственных данных, соответствующий определенным областям первого буфера кадров, которые содержат те же отображаемые данные дисплея, что соответствующие согласующиеся области второго буфера кадров.
RU2010114314/08A 2009-04-23 2010-04-12 Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель RU2445705C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/428,971 US8441494B2 (en) 2009-04-23 2009-04-23 Method and system for copying a framebuffer for transmission to a remote display
US12/428,971 2009-04-23

Publications (2)

Publication Number Publication Date
RU2010114314A RU2010114314A (ru) 2011-10-20
RU2445705C2 true RU2445705C2 (ru) 2012-03-20

Family

ID=42671795

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2010114314/08A RU2445705C2 (ru) 2009-04-23 2010-04-12 Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель

Country Status (10)

Country Link
US (1) US8441494B2 (ru)
EP (1) EP2244183B1 (ru)
JP (1) JP5027899B2 (ru)
KR (1) KR101144694B1 (ru)
CN (1) CN101872293B (ru)
AU (1) AU2010201050B2 (ru)
CA (1) CA2697143C (ru)
IL (1) IL204818A (ru)
MX (1) MX2010004475A (ru)
RU (1) RU2445705C2 (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2602970C2 (ru) * 2014-12-01 2016-11-20 Общество С Ограниченной Ответственностью "Яндекс" Способ организации множества объектов, содержащихся в дереве квадрантов, в односвязный список и компьютер, используемый в нем
RU2742860C1 (ru) * 2017-07-17 2021-02-11 Зте Корпорейшн Способ и система для отображения данных виртуального рабочего стола

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392497B2 (en) * 2009-11-25 2013-03-05 Framehawk, LLC Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client
US9146884B2 (en) * 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
US8754900B2 (en) * 2010-06-17 2014-06-17 Thinci, Inc. Processing of graphics data of a server system for transmission
US9373152B2 (en) * 2010-06-17 2016-06-21 Thinci, Inc. Processing of graphics data of a server system for transmission including multiple rendering passes
US8442224B2 (en) * 2010-06-28 2013-05-14 Intel Corporation Protecting video content using virtualization
CN101977324A (zh) * 2010-11-09 2011-02-16 青岛海信宽带多媒体技术有限公司 一种实现屏幕共享的方法
WO2012177464A1 (en) * 2011-06-13 2012-12-27 Lynuxworks, Inc. Systems and methods of secure domain isolation
EP2563038A1 (en) 2011-08-26 2013-02-27 Streamtainment Systems OÜ Method for transmitting video signals from an application on a server over an IP network to a client device
US10031636B2 (en) * 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
US8560719B2 (en) 2011-09-14 2013-10-15 Mobitv, Inc. Fragment server directed device fragment caching
US9348552B2 (en) * 2011-11-16 2016-05-24 Cisco Technology, Inc. Network appliance for transcoding or enriching virtual desktop infrastructure desktop images
KR20130062463A (ko) 2011-11-25 2013-06-13 한국전자통신연구원 다중 사용자 및 멀티 플랫폼 지원을 위한 게임 스트리밍 시스템 및 방법
CN103139634B (zh) * 2011-11-30 2017-03-15 国云科技股份有限公司 云终端虚拟桌面视频播放方法
US10430036B2 (en) * 2012-03-14 2019-10-01 Tivo Solutions Inc. Remotely configuring windows displayed on a display device
CN103455292B (zh) * 2012-05-28 2016-09-21 展讯通信(上海)有限公司 业务数据显示处理方法与装置、用户设备
US9798508B2 (en) * 2012-07-16 2017-10-24 Microsoft Technology Licensing, Llc Implementing previously rendered frame buffer information in a customized GUI display
US9277237B2 (en) 2012-07-30 2016-03-01 Vmware, Inc. User interface remoting through video encoding techniques
US9213556B2 (en) 2012-07-30 2015-12-15 Vmware, Inc. Application directed user interface remoting using video encoding techniques
WO2014074090A1 (en) * 2012-11-06 2014-05-15 Hewlett-Packard Development Company, L.P. Interactive display
CN103105131B (zh) * 2013-01-24 2015-08-19 东莞市嘉腾仪器仪表有限公司 一种影像测量仪显示图像的方法
CN103049883A (zh) * 2013-01-29 2013-04-17 陕西汽车集团有限责任公司 一种快速绘图的方法和装置
CN103618911B (zh) * 2013-10-12 2017-02-01 北京视博云科技有限公司 一种基于视频属性信息的视频流提供方法及装置
GB2528870A (en) * 2014-07-31 2016-02-10 Displaylink Uk Ltd Managing display data for display
CN105516229B (zh) * 2014-10-15 2020-02-28 中兴通讯股份有限公司 一种更新虚拟桌面的方法和装置
US10102664B1 (en) * 2014-12-03 2018-10-16 Charles Schwab & Co., Inc. System and method for causing graphical information to be rendered
CN106161368B (zh) 2015-04-07 2020-04-14 阿里巴巴集团控股有限公司 一种用于对云应用进行远程访问的方法、装置及系统
US10082941B2 (en) * 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
CN106227491B (zh) * 2016-08-04 2019-05-14 浪潮电子信息产业股份有限公司 一种远程桌面视频播放方法、服务器、客户端及系统
CN107479821B (zh) * 2017-08-28 2021-07-27 海信视像科技股份有限公司 一种界面绘制方法及装置
CN107608588B (zh) * 2017-10-20 2021-11-30 京东方科技集团股份有限公司 显示层、显示方法、显示系统和操作系统
CN111208966B (zh) * 2019-12-31 2021-07-16 华为技术有限公司 显示方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2007132740A (ru) * 2007-06-26 2009-03-10 Авермедиа Текнолоджиз, Инк. (Tw) Способ и система обеспечения трансляции видеопрограммы

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1003121A (en) 1910-01-31 1911-09-12 John N Oveson Curtain-stretcher.
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US6343313B1 (en) * 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
DE19912770A1 (de) 1999-03-22 2000-09-28 Bosch Gmbh Robert Zündsteuervorrichtung und -verfahren
JP3466951B2 (ja) * 1999-03-30 2003-11-17 株式会社東芝 液晶表示装置
US6331855B1 (en) 1999-04-28 2001-12-18 Expertcity.Com, Inc. Method and apparatus for providing remote access, control of remote systems and updating of display information
US7038696B2 (en) * 2002-01-04 2006-05-02 Hewlett-Packard Development Company Method and apparatus for implementing color graphics on a remote computer
US7386324B2 (en) * 2002-04-17 2008-06-10 Lenovo (Singapore) Pte. Ltd. System and method for dual path terminal connection
US7447997B2 (en) * 2002-05-30 2008-11-04 Microsoft Corporation Reducing information transfer in screen capture series
JP2004086550A (ja) * 2002-08-27 2004-03-18 Matsushita Electric Ind Co Ltd 表示画面更新システム
US20060282855A1 (en) * 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
JP4878782B2 (ja) * 2005-07-05 2012-02-15 シャープ株式会社 プラズマ処理装置及びプラズマ処理方法
JP2007025073A (ja) * 2005-07-13 2007-02-01 Sony Corp データ伝送方法、データ送信装置及びデータ受信装置、並びにプログラム
US7899864B2 (en) * 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
WO2007057053A1 (en) 2005-11-21 2007-05-24 Agilent Technologies, Inc. Conditional updating of image data in a memory buffer
KR20080018396A (ko) 2006-08-24 2008-02-28 한국문화콘텐츠진흥원 이동통신 단말기의 디스플레이 정보를 외부 디스플레이장치에서 디스플레이하기 위한 모바일 애플리케이션 및pc 애플리케이션을 기록한 컴퓨터 판독 가능 기록매체
JP4852012B2 (ja) * 2007-07-09 2012-01-11 株式会社東芝 画像を処理する装置、画像の更新を検出する方法およびプログラム
US9184072B2 (en) * 2007-07-27 2015-11-10 Mattson Technology, Inc. Advanced multi-workpiece processing chamber
US20090206056A1 (en) * 2008-02-14 2009-08-20 Songlin Xu Method and Apparatus for Plasma Process Performance Matching in Multiple Wafer Chambers
US8617347B2 (en) * 2009-08-06 2013-12-31 Applied Materials, Inc. Vacuum processing chambers incorporating a moveable flow equalizer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2007132740A (ru) * 2007-06-26 2009-03-10 Авермедиа Текнолоджиз, Инк. (Tw) Способ и система обеспечения трансляции видеопрограммы

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2602970C2 (ru) * 2014-12-01 2016-11-20 Общество С Ограниченной Ответственностью "Яндекс" Способ организации множества объектов, содержащихся в дереве квадрантов, в односвязный список и компьютер, используемый в нем
RU2742860C1 (ru) * 2017-07-17 2021-02-11 Зте Корпорейшн Способ и система для отображения данных виртуального рабочего стола

Also Published As

Publication number Publication date
KR20100117043A (ko) 2010-11-02
JP5027899B2 (ja) 2012-09-19
AU2010201050B2 (en) 2012-03-29
EP2244183A3 (en) 2011-06-08
CN101872293B (zh) 2012-07-25
RU2010114314A (ru) 2011-10-20
KR101144694B1 (ko) 2012-05-24
EP2244183A2 (en) 2010-10-27
JP2010257454A (ja) 2010-11-11
EP2244183B1 (en) 2017-09-20
IL204818A0 (en) 2010-11-30
MX2010004475A (es) 2010-10-22
CN101872293A (zh) 2010-10-27
AU2010201050A1 (en) 2010-11-11
US8441494B2 (en) 2013-05-14
US20100271379A1 (en) 2010-10-28
CA2697143C (en) 2013-12-31
IL204818A (en) 2015-07-30
CA2697143A1 (en) 2010-10-23

Similar Documents

Publication Publication Date Title
RU2445705C2 (ru) Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель
US11397553B2 (en) Method and system for identifying drawing primitives for selective transmission to a remote display
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
US20090089453A1 (en) Remote visualization of a graphics application
US20100141678A1 (en) Command remoting
US10733689B2 (en) Data processing
US9460481B2 (en) Systems and methods for processing desktop graphics for remote display
CN113613043A (zh) 屏幕显示和图像处理方法以及嵌入式设备和云服务器
CN113835816A (zh) 一种虚拟机桌面显示方法、装置、设备及可读存储介质
CN116126441A (zh) 数据处理方法及装置