СПОСОБ И СИСТЕМА ДЛЯ ОТОБРАЖЕНИЯ ДАННЫХ ВИРТУАЛЬНОГО РАБОЧЕГО СТОЛА
METHOD AND SYSTEM FOR DISPLAYING VIRTUAL DESKTOP DATA

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к области технологий беспроводной связи и, в частности, к способу и системе для отображения данных виртуального рабочего стола.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Система облачного рабочего стола является важным достижением технологии облачных вычислений, которая очень широко используется в сферах, связанных с правительственными организациями, предпринимательством, образованием и т.д. Плавность операций облачного рабочего стола непосредственно влияет на опыт пользователя и является наиболее простым и важным показателем производительности системы облачного рабочего стола. Пользователь каждого облачного клиента выполняет вход в свой собственный облачный рабочий стол. Необходимо обеспечить плавность операций рабочего стола. Плавность ограничена двумя основными условиями: пропускной способностью сети и аппаратной производительностью сервера, особенно вычислительной мощностью центрального процессора (CPU).
Массовые решения для отображения данных рабочего стола, представленные на рынке в настоящее время, описаны ниже.
Первое решение заключается в отправке данных рабочего стола облачному клиенту без выполнения какой-либо обработки данных рабочего стола или отправки данных рабочего стола облачному клиенту после выполнения простого кодирования со сжатием (такого как Mjpeg) данных рабочего стола. Из-за отсутствия сжатия или относительно низкого коэффициента сжатия сервер оказывает относительно низкое воздействие на CPU. В случае достаточной пропускной способности сети данные рабочего стола могут быть быстро отправлены клиенту для обработки и могут быть быстро обработаны клиентом (декодирование и разуплотнение являются быстрыми или вообще не нужны). Недостатки первого решения также являются очевидными. То есть, требования к пропускной способности сети являются слишком высокими из-за относительно большого количества передаваемых данных рабочего стола. Дополнительно, поскольку один серверный хост отображен на нескольких виртуальных облачных рабочих столах, одновременный вход нескольких пользователей на облачный рабочий стол обязательно резервирует пропускную способность сети. В результате, скорость передачи данных рабочего стола ограничена и возникают такие проблемы как задержка или нарушение синхронизаций операций рабочего стола.
Второе решение заключается в кодировании изображения (кадра рабочего стола) данных всего рабочего стола с высоким коэффициентом сжатия (таким, как Н264/Н265) и последующей отправке изображения клиенту. Из-за сильного сжатия количество данных рабочего стола существенно уменьшается, и использование пропускной способности также существенно уменьшается. Недостаток второго решения заключается в том, что кодирование с высоким коэффициентом сжатия является большой нагрузкой для CPU сервера и представляет большую проблему, связанную с затратами времени и эффективностью декодирования и разуплотнения клиентом.
КРАТКОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Далее представлено краткое описание предмета изобретения, подробно описанного в настоящем документе. Это краткое описание не предназначено для ограничения объема формулы изобретения.
Способ и система для отображения данных виртуального рабочего стола предоставлены в вариантах осуществления настоящего изобретения для решения проблемы, заключающейся в том, что кодирование изображения (кадра рабочего стола) данных всего рабочего стола сервером с высоким коэффициентом сжатия приводит к большой нагрузке на CPU, обладает высокими требованиями к производительности декодирования и разуплотнения клиентом и приводит к снижению эффективности декодирования и разуплотнения клиентом.
Согласно вариантам осуществления настоящего изобретения предоставлен способ отображения данных виртуального рабочего стола.
Способ включает: разделение сервером виртуального рабочего стола на множество блоков виртуального рабочего стола равного размера согласно разрешению виртуального рабочего стола, при этом каждый из блоков виртуального рабочего стола соответствует небольшому потоку рабочего стола и нескольким небольшим кадрам рабочего стола; выполнение сервером кодирования со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому из блоков виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола; и отправку сервером кадров небольшого потока клиенту, так что клиент воспроизводит каждый кадр изображения виртуального рабочего стола сервера путем выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении принятых кадров небольшого потока.
Согласно вариантам осуществления настоящего изобретения предоставлена система для отображения данных виртуального рабочего стола. Система содержит сервер и клиент.
Сервер содержит модуль разделения, который выполнен с возможностью разделения виртуального рабочего стола на множество блоков виртуального рабочего стола равного размера согласно разрешению виртуального рабочего стола, при этом каждый из множества блоков виртуального рабочего стола соответствует небольшому потоку рабочего стола и нескольким небольшим кадрам рабочего стола; модуль кодирования со сжатием, который выполнен с возможностью выполнения кодирования со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому из множества блоков виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола; и модуль отправки, который выполнен с возможностью отправки кадров небольшого потока клиенту, так что клиент воспроизводит каждый кадр изображения виртуального рабочего стола сервера путем выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении принятых кадров небольшого потока.
Согласно вариантам осуществления настоящего изобретения дополнительно предоставлен машиночитаемый носитель данных. Носитель данных хранит команды, исполняемые компьютером, которые при исполнении процессором обеспечивают выполнение процессором способа, описанного выше.
Другие аспекты могут стать понятными после прочтения и понимания сопроводительных графических материалов и подробного описания.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
На фиг. 1 показана блок-схема способа отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения;
на фиг. 2 показано схематическое изображение системы для отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения;
на фиг. 3 показана структурная схема системы для отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения;
на фиг. 4 показана блок-схема генерирования потоковых данных на стороне сервера согласно вариантам осуществления настоящего изобретения; и
на фиг. 5 показана блок-схема обработки нескольких потоков на стороне клиента согласно вариантам осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
Иллюстративные варианты осуществления настоящего изобретения будут подробно описаны ниже в сочетании с графическими материалами. Следует понимать, что иллюстративные варианты осуществления, описанные ниже, предназначены для иллюстрации и объяснения и не предназначены для ограничения настоящего изобретения.
На фиг. 1 показана блок-схема способа отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения. Как показано на фиг. 1, способ включает этапы, описанные ниже.
На этапе S101 сервер делит виртуальный рабочий стол на множество блоков виртуального рабочего стола равного размера согласно разрешению виртуального рабочего стола, при этом каждый блок виртуального рабочего стола соответствует небольшому потоку рабочего стола и нескольким небольшим кадрам рабочего стола.
Одно изображение рабочего стола в каждой области блоков рабочего стола представляет собой один небольшой кадр рабочего стола. Небольшие кадры рабочего стола в разных областях блоков рабочего стола относятся к разным небольшим потокам рабочего стола.
На этапе S102 сервер выполняет кодирование со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому блоку виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола.
Каждый кадр небольшого потока содержит информацию о небольшом потоке рабочего стола, которому принадлежит этот кадр небольшого потока, такую как ID потока.
На этапе S103 сервер отправляет инкапсулированные кадры небольшого потока клиенту, так что клиент воспроизводит каждый кадр изображения виртуального рабочего стола сервера путем выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении принятых кадров небольшого потока.
После того, как сервер отправит инкапсулированные кадры небольшого потока клиенту, способ дополнительно включает следующие этапы: обнаружение сервером текущего кадра изображения рабочего стола каждого блока виртуального рабочего стола для определения того, отличается ли текущий кадр изображения рабочего стола блока виртуального рабочего стола от предыдущего кадра изображения рабочего стола указанного блока виртуального рабочего стола; и выполнение сервером кодирования со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому блоку виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола, и отправку кадров небольшого потока клиенту при определении того, что текущий кадр изображения рабочего стола блока виртуального рабочего стола отличается от предыдущего кадра изображения рабочего стола блока виртуального рабочего стола.
Сервер выполняет кодирование со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому блоку виртуального рабочего стола следующим образом: сервер создает цепочку выполняемых команд для кодирования со сжатием и кодировщика для каждого блока виртуального рабочего стола согласно множеству блоков виртуального рабочего стола; и сервер выполняет кодирование со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому блоку виртуального рабочего стола путем использования цепочки выполняемых команд для кодирования со сжатием и кодировщика, созданных для каждого блока виртуального рабочего стола.
Клиент принимает кадры небольшого потока и воспроизводит каждый кадр изображения виртуального рабочего стола сервера путем выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении принятых кадров небольшого потока следующим образом: клиент создает цепочку выполняемых команд для декодирования/отображения и декодер для кадров небольшого потока и отправляет принятые кадры небольшого потока в соответствующую очередь буфера; и клиент выполняет процесс разуплотнения, процесс интеграции и процесс отображения в отношении кадров небольшого потока в соответствующей очереди буфера путем использования цепочки выполняемых команд для декодирования/отображения и декодера, созданных для кадров небольшого потока, для воспроизведения каждого кадра изображения виртуального рабочего стола сервера.
Клиент выполняет процесс разуплотнения, процесс интеграции и процесс отображения в отношении кадров небольшого потока в соответствующей очереди буфера путем использования цепочки выполняемых команд для декодирования/отображения и декодера, созданных для кадра небольшого потока, следующим образом: клиент извлекает кадры небольшого потока из соответствующей очереди буфера путем использования цепочки выполняемых команд для декодирования/отображения, созданной для кадра небольшого потока, и выполняет процесс разуплотнения в отношении кадров небольшого потока посредством декодера для получения перекодированных данных рабочего стола, соответствующих кадрам небольшого потока; и клиент выполняет процесс интеграции в отношении всех перекодированных данных рабочего стола для получения перекодированных данных всего виртуального рабочего стола и выполняет процесс отображения в отношении полученных перекодированных данных всего виртуального рабочего стола.
На фиг. 2 показано схематическое изображение системы для отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения. Как показано на фиг. 2, система содержит сервер 201 и клиент 202. Сервер 201 содержит: модуль 2011 разделения, выполненный с возможностью разделения виртуального рабочего стола на множество блоков виртуального рабочего стола равного размера согласно разрешению виртуального рабочего стола, при этом каждый из множества блоков виртуального рабочего стола соответствует небольшому потоку рабочего стола и нескольким небольшим кадрам рабочего стола; модуль 2012 кодирования со сжатием, выполненный с возможностью выполнения кодирования со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому из множества блоков виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола; и модуль 2013 отправки, выполненный с возможностью отправки инкапсулированного кадра небольшого потока клиенту, так что клиент воспроизводит каждый кадр изображения виртуального рабочего стола сервера путем выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении принятых кадров небольшого потока.
Модуль 2013 отправки содержит: блок обнаружения, выполненный с возможностью обнаружения текущего кадра изображения рабочего стола каждого блока виртуального рабочего стола, для определения того, отличается ли текущий кадр изображения рабочего стола от предыдущего кадра изображения рабочего стола; и блок отправки, при этом при определении того, что текущий кадр изображения рабочего стола одного из блоков виртуального рабочего стола отличается от предыдущего кадра изображения рабочего стола блока виртуального рабочего стола, сервер выполняет кодирование со сжатием в отношении небольших кадров рабочего стола, соответствующих блоку виртуального рабочего стола, для инкапсуляции небольших кадров рабочего стола в кадры небольшого потока, соответствующие небольшому потоку рабочего стола, и блок отправки выполнен с возможностью отправки кадров небольшого потока клиенту.
Модуль 2012 кодирования со сжатием содержит: блок создания, выполненный с возможностью создания цепочки выполняемых команд для кодирования со сжатием и кодировщика для каждого блока виртуального рабочего стола согласно множеству блоков виртуального рабочего стола; и блок кодирования со сжатием, выполненный с возможностью выполнения кодирования со сжатием в отношении небольших кадров рабочего стола, соответствующих каждому блоку виртуального рабочего стола, путем использования цепочки выполняемых команд для кодирования со сжатием и кодировщика, созданных для каждого блока виртуального рабочего стола.
Клиент 202 содержит: модуль 2021 создания и буферизации, выполненный с возможностью создания цепочки выполняемых команд для декодирования/отображения и декодера для принятых кадров небольшого потока и отправки принятых кадров небольшого потока в соответствующую очередь буфера; и модуль 2022 обработки и отображения, выполненный с возможностью выполнения процесса разуплотнения, процесса интеграции и процесса отображения в отношении кадров небольшого потока в соответствующей очереди буфера путем использования цепочки выполняемых команд для декодирования/отображения и декодера, созданных для кадров небольшого потока, для воспроизведения каждого кадра изображения виртуального рабочего стола сервера.
Модуль 2022 обработки и отображения содержит: блок обработки, выполненный с возможностью извлечения кадров небольшого потока из соответствующей очереди буфера путем использования цепочки выполняемых команд для декодирования/отображения, созданной для кадра небольшого потока, и выполнения процесса разуплотнения в отношении кадров небольшого потока посредством декодера для получения перекодированных данных рабочего стола, соответствующих кадрам небольшого потока; и блок отображения, выполненный с возможностью выполнения процесса интеграции в отношении всех перекодированных данных рабочего стола для получения перекодированных данных всего виртуального рабочего стола и выполнения процесса отображения в отношении всех перекодированных данных виртуального рабочего стола.
На фиг. 3 показана структурная схема системы для отображения данных виртуального рабочего стола согласно вариантам осуществления настоящего изобретения. Как показано на фиг. 3, система содержит сервер и клиент. Сервер содержит модуль генерирования потоковых сообщений и модуль генерирования потоковых данных. Клиент содержит модуль приема и обработки потоковых сообщений, модуль приема потоковых данных и модуль декодирования и отображения.
Модуль генерирования потоковых сообщений выполнен с возможностью формирования управляющего сообщения, относящегося к потоку рабочего стола. Управляющее сообщение в основном относится к сообщению о создании потока и сообщению о разрушении потока.
Каждый из блоков равного размера соответствует небольшому потоку. Каждый небольшой поток имеет свое собственное сообщение о создании потока и сообщение о разрушении потока.
Сообщение о создании потока содержит следующую информацию: ID потока для того, чтобы различать разные потоки; координаты области, соответствующие потоку; размер пикселей изображения; количество блоков всего рабочего стола; режим кодирования и декодирования и т.п.
Сообщение о разрушении потока указывает на соответствующий ID небольшого потока.
Модуль генерирования потоковых данных выполнен с возможностью разделения рабочего стола на блоки для выполнения кодирования со сжатием в отношении изображения каждого блока посредством множества цепочек выполняемых команд и последующего выполнения инкапсуляции. Поток инкапсулированных данных содержит следующую информацию: данные небольшого кадра рабочего стола, ID потока, порядковый номер текущего кадра рабочего стола и количество небольших потоков, где текущий кадр содержит изменения.
Модуль приема и обработки потоковых сообщений выполнен с возможностью приема и обработки управляющего сообщения, относящегося к потоку сервера.
Модуль приема и обработки потоковых сообщений принимает сообщение о создании потока и создает соответствующие объекты потока. Каждый объект небольшого потока содержит свою собственную информацию о регионе, декодер и цепочку выполняемых команд для приема и пересылки данных. Модуль приема и обработки потоковых сообщений выделяет пространство буфера для хранения перекодированных данных всего рабочего стола. Небольшие потоки последовательно занимают сегменты пространства в пространстве буфера. После перекодирования всех измененных кадров небольшого потока отображают данные во всем пространстве буфера.
Модуль приема и обработки потоковых сообщений принимает сообщение о разрушении потока и разрушает ресурсы, такие как небольшие потоки, декодеры и цепочки выполняемых команд.
Модуль приема потоковых данных выполнен с возможностью приема кадров небольшого потока, последовательно отправленных со стороны сервера, и отправки кадров небольшого потока в соответствующие очереди буфера кадров небольшого потока в режиме реального времени.
Модуль декодирования и отображения содержит цепочку выполняемых команд для декодирования/отображения, соответствующую каждому небольшому потоку. Посредством каждой цепочки выполняемых команд кадры небольшого потока извлекают из соответствующей очереди буфера кадров в режиме реального времени и отправляют в декодер для операций декодирования и перекодирования. После декодирования и перекодирования всех измененных кадров небольшого потока всего рабочего стола пространство буфера перекодирования интегрируют и отображают данные.
На фиг. 4 показана блок-схема генерирования потоковых данных на стороне сервера согласно вариантам осуществления настоящего изобретения. Как показано на фиг. 4, включены этапы, описанные ниже.
На этапе 401 весь рабочий стол делят на множество блоков равного размера согласно разрешению рабочего стола. Например, рабочий стол с разрешением 1440*900 может быть разделен на 16 блоков в два ряда и восемь столбцов.
На этапе 402 для каждого блока создают отдельную цепочку выполняемых команд для кодирования со сжатием и отдельного кодировщика.
На этапе 403 для каждого блока составляют сообщение о создании потока.
На этапе 404 сообщение о создании потока каждого блока инкапсулируют отдельно и отправляют клиенту. Содержание сообщения предусматривает: ID потока; координаты области, соответствующие потоку; размер пикселей изображения; количество блоков всего рабочего стола; режимы кодирования и декодирования и т.п.
На этапе 405 динамически вычисляют блоки в области, где текущий кадр изображения рабочего стола отличается от предыдущего кадра изображения рабочего стола.
На этапе 406 посредством цепочки выполняемых команд, соответствующей блоку, где происходит изменение, выполняют кодирование со сжатием изображения блока.
На этапе 407 кадры небольшого потока инкапсулируют путем использования предыдущей цепочки выполняемых команд. Формат кадров небольшого потока характеризуется следующим содержанием: данные кадра небольшого потока рабочего стола, ID потока, порядковый номер текущего кадра рабочего стола и количество небольших потоков, где текущий кадр изменяется.
На этапе 408 кадры небольшого потока последовательно отправляют клиенту по порядку ID потока.
Согласно предыдущему процессу способ, с помощью которого выполняют общее кодирование для всего рабочего стола, меняется на способ, с помощью которого выполняют отдельное кодирование для каждой из нескольких областей, тем самым повышая эффективность кодирования. В то же время количество измененных небольших потоков и ID небольших потоков отмечены в кадре небольшого потока, тем самым предотвращая беспорядок, который происходит, когда клиент обрабатывает многопотоковые данные.
На фиг. 5 показана блок-схема обработки нескольких потоков на стороне клиента согласно вариантам осуществления настоящего изобретения. Как показано на фиг. 5, включены следующие этапы.
На этапе 501 клиент принимает и проводит грамматический разбор сообщения о создании небольшого потока, отправленного с сервера. Клиент проводит грамматический разбор сообщения о создании небольшого потока для получения форматов кодирования и декодирования, размера пикселей рабочего стола, количества блоков, полученных путем разделения, ID потока, области и положения блока и т.п.
На этапе 502 клиент создает объект небольшого потока согласно соответственным параметрам, полученным с помощью проведения грамматического разбора.
На этапе 503 цепочку выполняемых команд для декодирования/отображения и декодер, соответствующие объекту потока, создают в объекте потока, одновременно с этим создают пространство буфера для хранения перекодированных данных всего рабочего стола. Небольшие потоки последовательно занимают сегменты пространства в пространстве буфера. Кроме этого, также создают очередь буфера для хранения данных кадра небольшого потока. Во время создания выполняется цепочка выполняемых команд для декодирования/отображения. Посредством цепочки выполняемых команд для декодирования/отображения данные кадра небольшого потока извлекают из соответствующей очереди буфера в режиме реального времени.
На этапе 504 клиент принимает набор данных кадра небольшого потока, отправленных с сервера. Этот набор потоковых данных относится к одному тому же кадру рабочего стола и содержит порядковый номер кадра, и в то же время из потоковых данных можно узнать количество измененных небольших потоков кадра рабочего стола. Данные кадра небольшого потока в потоковых данных помещают в соответствующую очередь буфера согласно ID потока.
На этапе 505 посредством цепочки выполняемых команд для декодирования/отображения определяется, был ли поток разрушен. Если поток был разрушен, цепочка выполняемых команд непосредственно завершается.
На этапе 506 посредством цепочки выполняемых команд для декодирования/отображения определяется, есть ли данные в буфере; если в буфере нет данных, процесс временно приостанавливается и переходит к этапу 505.
На этапе 507 посредством цепочки выполняемых команд для декодирования/отображения согласно порядковому номеру отмеченного предыдущего кадра определяется, был ли отображен предыдущий кадр. Если предыдущий кадр не отображен, процесс временно приостанавливается и переходит к этапу 505. Если предыдущий кадр был отображен, процесс продолжается.
На этапе 508 кадр небольшого потока извлекают из очереди буфера посредством цепочки выполняемых команд для декодирования/отображения.
На этапе 509 определяется действительность согласно порядковому номеру кадра. Если кадр небольшого потока является недействительным, кадр небольшого потока игнорируется, и процесс переходит к этапу 505. Если кадр небольшого потока является действительным, процесс продолжается. Критерий для определения действительности заключается в сравнении порядкового номера кадра с порядковым номером N ранее отображенного кадра. Если порядковый номер кадра больше N, кадр небольшого потока является действительным. Если порядковый номер кадра не больше N, кадр небольшого потока является недействительным.
На этапе 510 кадр небольшого потока отправляется в декодер посредством цепочки выполняемых команд для декодирования/отображения для его декодирования.
На этапе 511 декодер перекодирует кадр небольшого потока.
На этапе 512 перекодированный кадр небольшого потока помещают в соответствующий сегмент в пространстве буфера перекодированных данных рабочего стола.
На этапе 513 определяется, был ли перекодирован каждый измененный кадр небольшого потока. Если каждый измененный кадр небольшого потока был перекодирован, процесс продолжается; иначе процесс переходит к этапу 505.
На этапе 514 декодер отмечает порядковый номер текущего кадра в качестве порядкового номера ранее отображенного кадра, при этом порядковый номер применяется на этапе 509.
На этапе 515 декодер отображает перекодированные данные всего рабочего стола.
На этапе 516 кадр отмечается в качестве предыдущего кадра посредством цепочки выполняемых команд для декодирования/отображения. Этот результат применяется к этапу 507.
На этапе 517 буфер кадра небольшого потока удаляется посредством цепочки выполняемых команд для декодирования/отображения, высвобождается ресурс памяти, и процесс переходит к этапу 505.
На этапе 518, когда клиент принимает сообщение, указывающее на разрушение небольшого потока, соответствующая цепочка выполняемых команд для декодирования/отображения завершается, декодер разрушается, очередь буфера высвобождается, и объект небольшого потока также удаляется.
Согласно вариантам осуществления настоящего изобретения дополнительно предоставлен машиночитаемый носитель данных. Носитель данных хранит команды, исполняемые компьютером, которые при исполнении процессором обеспечивают выполнение процессором способа, описанного выше.
Настоящее изобретение обладает следующими полезными эффектами: режим кодирования с высоким коэффициентом сжатия обеспечивает то, что кадр рабочего стола уменьшает потребление ресурсов пропускной способности как можно больше на протяжении процесса передачи по сети; при использовании механизма с несколькими цепочками выполняемых команд в многопотоковой схеме значительно улучшается эффективность кодирования со сжатием кадра рабочего стола и полностью используются ресурсы CPU сервера; вместе с тем механизм с несколькими цепочками выполняемых команд клиента также повышает эффективность декодирования и перекодирования кадра рабочего стола клиентом; дополнительно кадр небольшого потока в многопотоковой схеме содержит информацию о порядковом номере кадра рабочего стола и содержит количество измененных кадров небольшого потока и ID потока, и клиенту необходимо лишь декодировать и перекодировать кадр небольшого потока, тем самым снижая нагрузку на клиент, и, благодаря взаимодействию с защитной логикой цепочки выполняемых команд для декодирования/отображения, обеспечивая покадровое отображение на рабочем столе и не приводя к беспорядку изображений.
Согласно решению, предоставленному в вариантах осуществления настоящего изобретения, сервер делит изображение (кадр рабочего стола) виртуального рабочего стола на множество блоков равного размера согласно разрешению рабочего стола, а затем динамически кодирует изображение каждого блока по отдельности с высоким коэффициентом сжатия для формирования множества небольших потоков данных рабочего стола и отправляет небольшие потоки данных рабочего стола клиенту; клиент декодирует и перекодирует кадры небольшого потока по отдельности и параллельно и, наконец, равномерным образом отображает все декодированные и перекодированные кадры небольшого потока на дисплее. Одновременно с этим сервер сравнивает текущий кадр рабочего стола с предыдущим кадром рабочего стола, отмечает блоки, которые изменились относительно предыдущего кадром рабочего стола, и кодирует только изображения измененных блоков в кадры небольшого потока и отправляет кадры небольшого потока клиенту. Таким образом, клиенту необходимо лишь выполнить декодирование, перекодирование и другие операции измененных кадров небольшого потока, а затем он выполняет отображение в сочетании с частью предыдущего кадра рабочего стола, который не изменился, тем самым снижая нагрузку на клиент.
Согласно решению, предоставленному в вариантах осуществления настоящего изобретения, после разделения кадра рабочего стола на несколько блоков обработку данных блоков можно выполнить параллельным образом с использованием нескольких цепочек выполняемых команд. Это способствует полному использованию ресурсов CPU, снижает использование CPU и повышает эффективность кодирования. Это же верно и в отношении клиента. Кроме этого, в решении согласно настоящему изобретению предусмотрена небольшая пропускная способность сети, поэтому плавность работы за рабочим столом заметно повышается.
Специалистам в данной области техники следует понимать, что все или некоторые из этапов и систем в способах, описанных в настоящем документе, и все или некоторые из функциональных модулей/блоков в приспособлениях, описанных в настоящем документе, могут быть реализованы в виде программного обеспечения, прошивки, аппаратного обеспечения или их подходящей комбинации. В аппаратной реализации разделение функциональных модулей/блоков, описанных выше, необязательно соответствует разделению физических компонентов. Например, один физический компонент может иметь несколько функций, или одна функция или этап могут быть реализованы несколькими взаимодействующими физическими компонентами. Некоторые или все из компонентов могут быть реализованы в виде программного обеспечения, исполняемого процессором, таким как процессор цифровой обработки сигналов или микропроцессор, или могут быть реализованы в виде аппаратного обеспечения, или могут быть реализованы в виде интегральной схемы, такой как специализированная интегральная схема. Такое программное обеспечение может распространяться на машиночитаемых носителях. Машиночитаемые носители могут включать компьютерные накопители (или энергонезависимые носители) и коммуникационные носители (или промежуточные носители). Как известно специалистам в данной области техники, термин «компьютерный носитель данных» включает энергозависимые и энергонезависимые носители, съемные и несъемные носители, исполняемые в любом способе или технологии для хранения информации (такой как машиночитаемые команды, структуры данных, программные модули или другие данные). Компьютерные носители данных включают без ограничения RAM, ROM, EEPROM, флеш-память или другие технологии запоминающих устройств, CD-ROM, универсальный цифровой диск (DVD) или другой оптический дисковый накопитель, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель или другие магнитные устройства хранения данных, или любой другой носитель, используемый для хранения желаемой информации, и к которому может получить доступ компьютер. Более того, специалистам в данной области техники известно, что коммуникационные носители обычно включают машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другие транспортные механизмы, и могут включать любой носитель для доставки информации.
Несмотря на то что настоящее изобретение было подробно описано выше, настоящее изобретение не ограничивается вышеизложенным подробным описанием, и специалисты в данной области могут вносить различные модификации согласно принципам настоящего изобретения. Следовательно, считается, что любая модификация, внесенная согласно принципу настоящего изобретения, должна истолковываться как находящаяся в пределах объема настоящего изобретения.