Кодер сеанса удаленного представления низкой сложности
Иллюстрации
Показать всеИзобретение относится к области кодирования графических данных как видеопотока в сеансе удаленного представления. Техническим результатом является обеспечение кодирования и декодирования с использованием менее сложных кодеров, которые не конфигурируются дополнительно, чтобы поддерживать схему субдискретизации 4:4:4. Предложено изобретение для кодирования и декодирования данных по схеме субдискретизации 4:4:4 с использованием кодера/декодера, который не сконфигурирован с возможностью кодирования или декодирования данных по 4:4:4. В вариантах осуществления, кодер разбивает входной кадр на три кадра составляющих по схеме 4:0:0, затем кодирует каждый кадр составляющей по схеме 4:0:0 и агрегирует кодированные кадры составляющих в битовый поток. Декодер принимает такой битовый поток и декодирует его с помощью компонента, не сконфигурированного с возможностью декодирования данных по 4:4:4 и декодирует битовый поток, чтобы произвести представление трех кадров, составляющих по 4:0:0, затем агрегирует три кадра, составляющих в представление первоначального кадра по 4:4:4. 6 з.п. ф-лы, 11 ил.
Реферат
УРОВЕНЬ ТЕХНИКИ
[0001] В сеансе удаленного представления, клиентский компьютер и серверный компьютер осуществляют связь по сети связи. Клиент отправляет серверу локально принятый ввод, такой как перемещения курсора мыши и нажатия на клавиатуре. В свою очередь, сервер принимает этот ввод и выполняет ассоциированную с ним обработку, такую как исполнение приложения в сеансе пользователя. Когда сервер выполняет обработку, это влечет за собой вывод, такой как графический вывод или звук, причем сервер отправляет этот вывод клиенту для представления. Таким образом, приложения кажутся пользователю клиента как исполняющиеся локально на клиенте, когда они фактически исполняются на сервере.
[0002] Объем графических данных, которые сервер обычно генерирует в сеансе удаленного представления, может превышать величину полосы пропускания сети связи, доступной между сервером и клиентом. Ввиду этого ограничения полосы пропускания, сервер обычно будет сжимать графические данные до их отправки клиенту. В некоторых вариантах осуществления, сервер будет также кодировать графические данные как видеопоток до их отправки клиенту. Есть много проблем с известными методами сжатия и кодирования графических данных как видеопотока в сеансе удаленного представления, некоторые из которых хорошо известны.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Одной проблемой с известными методами сжатия и кодирования графических данных как видеопотока в сеансе удаленного представления является то, что использование известных методов ухудшает качество изображения таким образом, который отрицательно воздействует на опыт пользователя. Например, некоторые кодеры (такие как кодеры H.264) кодируют графические данные с помощью метода субдискретизации, который не дискретизирует каждое значение каждого пикселя (например, некоторые кодеры субдискретизируют по схеме, где не каждое значение цветности дискретизируется по-отдельности из пикселя, представленного как яркость и два значения цветности, такой как схемы 4:2:2, 4:2:1 и 4:2:0). Как используется в настоящем документе, ссылки на 4:2:0 или другие схемы субдискретизации, отличные от 4:4:4, могут в основном применяться к схемам субдискретизации, отличным от 4:4:4. Когда эти кодеры субдискретизируют данные таким образом, некоторые из данным теряются, что уменьшает качество изображения.
[0004] Это уменьшение качества в основном ощущается людьми, когда оно возникает на высококонтрастных/высокочастотных участках изображений, таких как темный текст на светлом цветном фоне. Эта потеря качества в основном ощущается в таких изображениях, так как два или более смежных пикселей с очень разными цветами (например, пиксель белого фона и пиксель черного текста), могут иметь их усредненное значение, или иначе объединенные вместе, чтобы создать совместно используемое субдискретизированное значение. Это усреднение или объединение значений уменьшает четкость границы между высококонтрастными зонами.
[0005] Может быть неблагоприятно устранять это уменьшение качества при кодировании 4:2:0 посредством реконфигурирования кодера, который сконфигурирован с возможностью выполнения субдискретизации 4:2:0, также для выполнения субдискретизации 4:4:4. Может быть неблагоприятно реконфигурировать такой кодер таким образом, так как это неблагоприятно увеличит сложность кодера. Дополнительно, есть много развернутых в настоящий момент декодеров, которые не сконфигурированы с возможностью декодирования кадра, субдискретизированного с помощью схемы 4:4:4, и реконфигурирование кодера для поддержки 4:4:4 может также сделать необходимым реконфигурирование и повторное развертывание соответствующего декодера на многих компьютерах. Ввиду этой проблемы с реконфигурированием кодера, варианты осуществления данного изобретения могут быть использованы для кодирования изображения по схеме 4:4:4 с использованием кодера, сконфигурированного с возможностью кодирования по схеме 4:2:0 (но не по схеме 4:4:4). Варианты осуществления данного изобретения могут также быть использованы для использования декодера, сконфигурированного с возможностью декодирования по схеме 4:2:0 (но не по схеме 4:4:4), чтобы декодировать изображение, кодированное с помощью вышеупомянутого кодера, чтобы произвести изображение по схеме 4:4:4.
[0006] Варианты осуществления данного изобретения реализованы в сервере удаленного представления. В вариантах осуществления изобретения, сервер принимает кадр графических данных в цветовом пространстве RGB (где пиксели представлены триплетом из значения красного, зеленого и синего). Сервер преобразовывает кадр в цветовое пространство YUV (где пиксели представлены триплетом из значения яркости - Y и двух значений цветности - U и V), и создает три кадра составляющих из YUV-кадра - один кадр для каждой Y-, U- и V-составляющих кадра по схеме субдискретизации 4:0:0. Сервер затем кодирует каждый из кадров составляющих как видео с помощью кодера, который не сконфигурирован с возможностью кодирования кадров по схеме субдискретизации 4:4:4, но сконфигурирован с возможностью кодирования кадров по схеме субдискретизации 4:0:0. Сервер затем агрегирует каждый кадр составляющей в битовый поток и отправляет битовый поток клиенту посредством протокола сеанса удаленного представления.
[0007] Варианты осуществления данного изобретения также реализованы в клиенте сеанса удаленного представления. В вариантах осуществления изобретения, клиент принимает данные битового потока RDP от сервера (где данные содержат отдельные кадры Y-, U- и V-составляющих). Клиент декодирует битовый поток с помощью декодера, который сконфигурирован с возможностью декодирования кадров по схеме субдискретизации 4:0:0, но не по схеме субдискретизации 4:4:4, чтобы произвести три кадра составляющих - Y, U и V - по схеме субдискретизации 4:0:0. Клиент затем агрегирует эти три кадра составляющих по схеме субдискретизации 4:0:0, чтобы произвести YUV-кадр по схеме субдискретизации 4:4:4. Клиент преобразовывает YUV-кадр в цветовое пространство RGB и отображает RGB-кадр на устройстве отображения.
[0008] Варианты осуществления данного изобретения обеспечивают возможность кодирования и отправки данных по схеме субдискретизации 4:4:4 с использованием кодера и декодера, которые не сконфигурированы с возможностью поддержки схемы субдискретизации 4:4:4. Посредством разделения кадра на кадры составляющих, кадр делится на три кадра в формате 4:0:0, который кодер и декодер сконфигурированы поддерживать. Разделение кадра на кадры составляющих обеспечивает возможность отправки данных по схеме субдискретизации 4:4:4 без реконфигурирования кодера или декодера. Кроме того, также есть сценарии, где сервер будет передавать клиенту для отображения как кадры 4:4:4, так и кадры 4:2:0. Данное изобретение обеспечивает возможность кодирования и декодирования обоих форматов с использованием менее сложных кодеров, которые не конфигурируются дополнительно, чтобы поддерживать также схему субдискретизации 4:4:4.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Фиг. 1 изображает пример вычислительного окружения общего назначения, в котором могут быть реализованы варианты осуществления данного изобретения.
[0010] Фиг. 2 изображает пример сервера сеанса удаленного представления, в котором могут быть реализованы варианты осуществления данного изобретения.
[0011] Фиг. 3 изображает примерное изображение, дискретизированное в формате 4:4:4.
[0012] Фиг. 4 изображает примерное изображение по фиг. 3, дискретизированное в формате 4:2:0.
[0013] Фиг. 5 изображает примерное изображение по фиг. 3, дискретизированное в формате 4:0:0.
[0014] Фиг. 6 изображает примерную архитектуру для кодера, который реализует варианты осуществления данного изобретения.
[0015] Фиг. 7 изображает примерную архитектуру для декодера, который реализует варианты осуществления данного изобретения.
[0016] Фиг. 8 изображает примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения.
[0017] Фиг. 9 изображает дополнительные примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения.
[0018] Фиг. 10 изображает примерные операционные процедуры для декодера, который реализует варианты осуществления данного изобретения.
[0019] Фиг. 11 изображает дополнительные примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЛЛЮСТРАТИВНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0020] Определенные конкретные сведения изложены в нижеследующем описании и фигурах для обеспечения полного понимания различных вариантов осуществления данного раскрытия. Определенные хорошо известные сведения, часто ассоциированные с технологией вычисления и программного обеспечения, не изложены в нижеследующем раскрытии во избежание затенения различных вариантов осуществления данного раскрытия. К тому же, средний специалист в соответствующей области техники поймет, что другие варианты осуществления данного раскрытия могут быть применены на практике без одних или более сведений, описанных ниже. И наконец, тогда как различные способы описаны со ссылкой на этапы и последовательности в нижеследующем раскрытии, данное описание по существу служит для предоставления четкой реализации вариантов осуществления данного раскрытия, и этапы и последовательности этапов не должны приниматься как требуемые для применения на практике этого раскрытия.
[0021] Следует понимать, что различные методы, описанные в настоящем документе, могут быть реализованы в связи с аппаратными средствами или программным обеспечением или, где целесообразно, с помощью их комбинации. Таким образом, способы и устройство этого раскрытия, или определенные аспекты или их части, могут принимать форму программного кода (т.е. инструкций), осуществленного в материальных носителях, таких как гибкие дискеты, CD-ROM, накопители на жестких дисках или любой другой машиночитаемый носитель информации, при этом, когда программный код загружен в машину, такую как компьютер, или исполняется ею, машина становится устройством для применения на практике данного раскрытия. В случае исполнения программного кода на программируемых компьютерах, вычислительное устройство в основном включает в себя процессор, носитель информации, читаемый процессором (включающий в себя энергозависимую и энергонезависимую память и/или элементы хранилища), по меньшей мере одно устройство ввода, и по меньшей мере одно устройство вывода. Одна или более программ, которые могут реализовать или использовать процессы, описанные в связи с данным раскрытием, например, посредством использования прикладного программного интерфейса (API), элементов управления многократного использования и т.п. Такие программы предпочтительно реализованы на высокоуровневом процедурном или объектно-ориентированном языке программирования для осуществления связи с компьютерной системой. Однако, программа(ы) может быть реализована на языке ассемблера или машинном языке, если требуется. В любом случае, язык может быть компилируемым или интерпретируемым языком, и объединенным с аппаратными реализациями.
[0022] Термин "схема", используемый по всему раскрытию, может включать в себя аппаратные компоненты, такие как аппаратные контроллеры прерываний, накопители на жестких дисках, сетевые адаптеры, графические процессоры, основанные на аппаратных средствах видео/аудиокодеки, и программно-аппаратные средства/программное обеспечение, используемые для эксплуатации таких аппаратных средств. Термин "схема" может также включать в себя микропроцессоры, сконфигурированные с возможностью выполнения функции(й) посредством программно-аппаратных средств или посредством переключателей, установленных определенным образом, или один или более логических процессоров, например, одно или более ядер многоядерного блока общей обработки. Логический процессор(ы) в этом примере может быть сконфигурирован посредством программных инструкций, осуществляющих логическую часть, пригодную для выполнения функции(й), которые загружены из памяти, например, RAM, ROM, программно-аппаратных средств и/или виртуальной памяти. В примерных вариантах осуществления, где схема включает в себя комбинацию аппаратных средств и программного обеспечения, конструктор может писать исходный код, осуществляющий логическую часть, который в последствии компилируется в машиночитаемый код, который может быть исполнен логическим процессором. Так как специалист в данной области техники может понимать, что состояние данной области техники развилось до точки, где существует небольшая разница между аппаратными средствами, программным обеспечением или комбинацией аппаратных средств/программного обеспечения, выбор аппаратных средств против программного обеспечения для приведения в исполнение функций является всего лишь проектным решением. Таким образом, так как специалист в данной области техники может понимать, что программный процесс может быть преобразован в эквивалент аппаратной структуры, и аппаратная структура, сама по себе может быть преобразована в эквивалент программного процесса, выбор аппаратной реализации против программной реализации оставляют конструктору.
[0023] Варианты осуществления данного изобретения могут исполняться на одной или более компьютерных системах. Фиг. 1 и нижеследующее рассмотрение предназначены для предоставления краткого общего описания подходящего вычислительного окружения, в котором могут быть реализованы варианты осуществления данного изобретения.
[0024] Фиг. 1 изображает примерную вычислительную систему. Вычислительная система может включать в себя компьютер 20 или подобный, включающий в себя блок 21 обработки. Блок 21 обработки может содержать один или более процессоров, каждый из которых может иметь одно или более ядер обработки. Многоядерный процессор, как часто называются процессоры, которые имеют более, чем одно ядро обработки, содержит множественные процессоры, содержащиеся внутри однокристального модуля.
[0025] Компьютер 20 может также содержать блок 90 обработки графики (GPU). GPU 90 является микропроцессором, оптимизированным для манипуляции компьютерной графикой. Блок 21 обработки может сбросить работу на GPU 90. GPU может иметь свою собственную графическую память и/или может иметь доступ к части системной памяти 22. Как и в случае блока 21 обработки, GPU 90 может содержать один или более блоков обработки, каждый имеющий одно или более ядер.
[0026] Компьютер 20 может также содержать системную память 22, и системную шину 23, которая коммуникационно связывает различные компоненты системы, включающие в себя системную память 22, с блоком 21 обработки, когда система находится в рабочем состоянии. Системная память 22 может включать в себя постоянную память (ROM) 24 и оперативную память (RAM) 25. Базовая система 26 ввода-вывода (BIOS), содержащая базовые стандартные программы, которые помогают переносить информацию между элементами внутри компьютера 20, как например во время запуска, может храниться в ROM 24. Системная шина 23 может быть любого из нескольких типов конструкций шин, включающих в себя шину памяти или контроллер памяти, шину периферийных устройств или локальную шину, которая реализует любую из многообразия архитектур шин. Связанным с системной шиной 23 может быть контроллер 80 прямого доступа к памяти (DMA), который сконфигурирован с возможностью чтения из памяти и/или записи в нее независимо от блока 21 обработки. Дополнительно, устройства, соединенные с системной шиной 23, такие как I/F 32 накопителя информации или I/F 33 накопителя на магнитном диске, могут быть сконфигурированы также с возможностью чтения из памяти и/или записи в нее независимо от блока 21 обработки, без использования контроллера 80 DMA.
[0027] Компьютер 20 может дополнительно включать в себя накопитель 27 информации для чтения с жесткого диска (не показан) или твердотельного диска (SSD) (не показан) и записи на него, накопитель 28 на магнитном диске для чтения со съемного магнитного диска 29 и записи на него, и накопитель 30 на оптическом диске для чтения со съемного оптического диска 31, такого как CD-ROM или другие оптические носители, и записи на него. Накопитель 27 на жестком диске, накопитель 28 на магнитном диске и накопитель 30 на оптическом диске показаны как соединенные с системной шиной 23 посредством интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитном диске и интерфейса 34 оптического накопителя, соответственно. Накопители и их ассоциированные компьютерно-читаемые носители информации предоставляют энергонезависимое хранилище компьютерно-читаемых инструкций, структур данных, программных модулей и других данных для компьютера 20.
[0028] Хотя примерное окружение, описанное в настоящем документе, использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалисты в данной области техники должны понимать, что в примерном операционном окружении могут быть также использованы другие типы компьютерно-читаемых носителей, которые могут хранить данные, к которым может быть осуществлен доступ компьютером, такие как карты флэш-памяти, цифровые видеодиски или универсальные цифровые диски (DVD), устройства оперативной памяти (RAM), устройства постоянной памяти (ROM) и подобные. В основном, такие компьютерно-читаемые носители информации могут быть использованы в некоторых вариантах осуществления для хранения исполняемых процессором инструкций, осуществляющих аспекты настоящего раскрытия. Компьютер 20 может также содержать хост-адаптер 55, который соединяется с устройством 62 хранения посредством шины 56 интерфейса малых компьютерных систем (SCSI).
[0029] Некоторое число программных модулей, содержащих компьютерно-читаемые инструкции, может храниться на компьютерно-читаемых носителях, таких как жесткий диск, магнитный диск 29, оптический диск 31, ROM 24 или RAM 25, включающих в себя операционную систему 35, одну или более прикладных программ 36, другие программные модули 37 и программные данные 38. После исполнения блоком обработки, компьютерно-читаемые инструкции вызывают выполнение действий, описанных более подробно ниже, или вызывают создание экземпляров различных программных модулей. Пользователь может вводить команды и информацию в компьютер 20 посредством устройств ввода, таких как клавиатура 40 и указывающее устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой контроллер, спутниковую тарелку, сканер или подобное. Эти и другие устройства ввода часто соединены с блоком 21 обработки посредством интерфейса 46 последовательного порта, который связан с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Дисплей 47 или другой тип отображающего устройства может также быть соединен с системной шиной 23 посредством интерфейса, такого как видеоадаптер 48. В дополнение к дисплею 47, компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как динамики и принтеры.
[0030] Компьютер 20 может работать в сетевом окружении, с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 49. Удаленным компьютером 49 может быть другой компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий сетевой узел, и обычно может включать в себя много или все из элементов, описанных выше относительно компьютера 20, несмотря на то, что на фиг. 1 было проиллюстрировано только запоминающее устройство 50. Изображенные на фиг. 1 логические соединения могут включать в себя локальную сеть (LAN) 51 и глобальную сеть (WAN) 52. Такие сетевые окружения находятся обычно в офисах, корпоративных компьютерных сетях, внутренних сетях и Интернете.
[0031] При использовании в сетевом окружении LAN, компьютер 20 может быть соединен с LAN 51 посредством сетевого интерфейса или адаптера 53. При использовании в сетевом окружении WAN, компьютер 20 обычно включает в себя модем 54 или другие средства для установления связи через глобальную сеть 52, такую как Интернет. Модем 54, который может быть внутренним или внешним, может быть соединен с системной шиной 23 через интерфейс 46 последовательного порта. В сетевом окружении, программные модули, изображенные относящимися к компьютеру 20 или его частям, могут храниться на удаленном запоминающей устройстве. Следует понимать, что показанные сетевые соединения являются примерными, и могут быть использованы другие средства установления каналов связи между компьютерами.
[0032] В варианте осуществления, где компьютер 20 сконфигурирован с возможностью работы в сетевом окружении, ОС 35 хранится удаленно в сети, и компьютер 20 может загрузить по сети эту удаленно хранящуюся ОС вместо загрузки из локально хранящейся ОС. В варианте осуществления, компьютер 20 содержит тонкий клиент, где ОС 35 меньше, чем полная ОС, но скорее ядро ОС, которое сконфигурировано с возможностью обработки вывода в сеть и на дисплей, такой как на монитор 47.
[0033] Фиг. 2 в основном иллюстрирует примерное окружение, в котором могут быть реализованы аспекты настоящего раскрытия. Например, сервер 204 может реализовать операционные процедуры по фиг. 8-9, и клиент 201 может реализовать операционные процедуры по фиг. 10-11. Специалисты в данной области техники могут понимать, что примерные элементы, изображенные на фиг. 2 проиллюстрированы для предоставления операционной инфраструктуры для описания настоящего изобретения. Соответственно, в некоторых вариантах осуществления схема физического размещения каждого окружения может быть разной в зависимости от разных схем реализации. Таким образом примерная операционная инфраструктура должна интерпретироваться только как иллюстративная и никак не ограничивающая объем пунктов формулы изобретения.
[0034] Изображенное на фиг. 2 является сервером 204, который может включать в себя схему, сконфигурированную с возможностью приведения в исполнение сервера сеанса удаленного представления, или в других вариантах осуществления сервер 204 может включать в себя схему, сконфигурированную с возможностью поддержки соединений удаленного рабочего стола. В изображенном примере, сервер 204 может быть сконфигурирован с возможностью генерирования одного или более сеансов для присоединения клиентов, таких как сеансы 1 по N (где N является целым числом, большим, чем 2). Кратко, сеанс в примерных вариантах осуществления настоящего изобретения может в основном включать в себя операционное окружение, которое приводится в исполнение множеством подсистем, например, программным кодом, которые сконфигурированы для взаимодействия с ядром 214 ОС сервера 204. Например, сеанс может включать в себя процесс, который создает экземпляр пользовательского интерфейса, такой как окно рабочего стола, подсистемы, которые отслеживают перемещение мыши внутри окна, подсистемы, которые транслируют щелчок мыши на иконке в команды, которые приводят в исполнение экземпляр программы, и т.д. Сеанс может быть сгенерирован сервером 204 на основе "пользователь за пользователем" посредством сервера 204, когда, например, сервер 204 принимает запрос соединения по сетевому соединению от клиента 201. В основном, запрос соединения может быть сначала обработан транспортной логикой 210, которая может, например, быть приведена в исполнение схемой сервера 204. Транспортная логика 210 может в некоторых вариантах осуществления включать в себя сетевой адаптер, программно-аппаратные средства и программное обеспечение, которые могут быть сконфигурированы для приема сообщений соединения и их пересылки механизму 212. Как проиллюстрировано на фиг. 2, транспортная логика 210 может в некоторых вариантах осуществления включать в себя экземпляры стека протоколов для каждого сеанса. В основном, каждый экземпляр стека протоколов может быть сконфигурирован с возможностью маршрутизации вывода пользовательского интерфейса клиенту и маршрутизации пользовательского ввода, принятого от клиента, ядру 244 сеанса, ассоциированному с его сеансом.
[0035] Продолжая с основным описанием фиг. 2, механизм 212 в некоторых вариантах осуществления настоящего изобретения может быть сконфигурирован с возможностью обработки запросов на сеансы; определения функциональности для каждого сеанса; генерирования сеансов посредством выделения набора физических ресурсов для сеанса; и создания экземпляра стека протоколов для сеанса. В некоторых вариантах осуществления механизм 212 может быть приведен в исполнение специализированными компонентами схемы, которая может реализовать некоторые из вышеупомянутых операционных процедур. Например, схема в некоторых примерных вариантах осуществления может включать в себя память и процессор, который сконфигурирован с возможностью исполнения кода, который приводит в исполнение механизм 212. Как изображено на фиг. 2, в некоторых случаях механизм 212 может принимать запросы соединения и определять, что, например, лицензия доступна, и для данного запроса может быть сгенерирован сеанс. В ситуации, когда сервером 204 является удаленный компьютер, который включает в себя способности удаленного рабочего стола, механизм 212 может быть сконфигурирован с возможностью генерирования сеанса в ответ на запрос соединения без проверки на предмет лицензии. Как проиллюстрировано на фиг. 2, диспетчер 216 сеансов может быть сконфигурирован с возможностью приема сообщения от механизма 212, и в ответ на сообщение диспетчер 216 сеансов может добавить идентификатор сеанса в таблицу; назначить память идентификатору сеанса; и сгенерировать переменные окружения системы и экземпляры процессов подсистемы в памяти, присвоенной идентификатору сеанса.
[0036] Как проиллюстрировано на фиг. 2, диспетчер 216 сеансов может создавать экземпляры подсистем окружения, таких как подсистема 240 выполнения, которая может включать в себя часть режима ядра ОС, такую как ядро 244 сеанса. Например, подсистемы окружения в варианте осуществления сконфигурированы с возможностью выдачи некоторого поднабора служб прикладным программам и предоставления точки доступа ядру ОС для операционной системы 214. В примерных вариантах осуществления подсистема 240 выполнения может управлять исполнением процессов и потоков, и ядро 244 сеанса может отправлять запросы исполнительной части ядра 214 ОС для выделения памяти для потоков и планирования времени исполнения для них. В варианте осуществления ядро 244 сеанса может включать в себя интерфейс 246 отображения графики (GDI), подсистему 250 безопасности и подсистему 252 ввода. Подсистема 252 ввода может в этих вариантах осуществления быть сконфигурирована для приема пользовательского ввода от клиента 201 посредством экземпляра стека протоколов, ассоциированного с сеансом, и передачи ввода ядру 244 сеанса для соответствующего сеанса. Пользовательский ввод может в некоторых вариантах осуществления включать в себя сигналы, указывающие команды абсолютного и/или относительного перемещения мыши, координаты мыши, щелчки мыши, сигналы клавиатуры, сигналы перемещения джойстика и т.д. Пользовательский ввод, например, двойной щелчок мыши по иконке, может быть принят ядром 244 сеанса, подсистема 252 ввода может быть сконфигурирована для определения, что иконка размещена в координатах, ассоциированных с двойным щелчком. Подсистема 252 ввода может затем быть сконфигурирована для отправки уведомления подсистеме 240 выполнения, которая может исполнить процесс для приложения, ассоциированного с иконкой.
[0037] В дополнение для приема ввода от клиента 201, команды отрисовки могут быть приняты от приложений и/или рабочего стола и могут быть обработаны посредством GDI 246. GDI 246 в основном может включать в себя процесс, который может генерировать команды отрисовки графического объекта. GDI 246 в этом примерном варианте осуществления может быть сконфигурирован с возможностью пропускания своего вывода в подсистему 254 удаленного отображения, где команды форматируются для драйвера дисплея, который прикреплен к сеансу. В определенных примерных вариантах осуществления один или более физических дисплеев могут быть прикреплены к серверу 204, например, в ситуации удаленного рабочего стола. В этих примерных вариантах осуществления подсистема 254 удаленного отображения может быть сконфигурирована для отражения команд отрисовки, которые визуализируются драйвером(ами) дисплея удаленной компьютерной системы, и передачи отраженной информации клиенту 201 посредством экземпляра стека, ассоциированного с сеансом. В другом примерном варианте осуществления, где сервером 204 является сервер сеанса удаленного представления, подсистема 254 удаленного отображения может быть сконфигурирована, чтобы включать в себя драйвер(ы) виртуального дисплея, который может не быть ассоциирован с дисплеями, физически прикрепленными к серверу 204, например, сервер 204 мог бы быть запущен без монитора. Подсистема 254 удаленного отображения в этом варианте осуществления может быть сконфигурирована с возможностью приема команд отрисовки для одного или более виртуальных дисплеев и их передачи клиенту 201 посредством экземпляра стека, ассоциированного с сеансом. В варианте осуществления настоящего изобретения, подсистема 254 удаленного отображения может быть сконфигурирована с возможностью определения разрешения дисплея для каждого драйвера дисплея, например, определения разрешения дисплея драйвера(ов) виртуального дисплея, ассоциированного с виртуальными дисплеями, или разрешения дисплея драйверов дисплея, ассоциированных с физическими дисплеями; и маршрутизации пакетов клиенту 201 посредством экземпляра стека протоколов.
[0038] В некоторых примерных вариантах осуществления диспетчер 216 сеансов может дополнительно создать экземпляр процесса входа в систему, ассоциированного с идентификатором сеанса для сеанса, который может быть сконфигурирован с возможностью обработки входа в систему и выхода из системы для сеанса. В этих примерных вариантах осуществления команды отрисовки, указывающие графический пользовательский интерфейс, ассоциированный с процессом входа в систему, могут быть переданы клиенту 201, где пользователь клиента 201 может ввести идентификатор учетной записи, например, комбинацию имя пользователя/пароль, идентификатор в виде интеллектуальной карты и/или биометрическую информацию на экране входа в систему. Информация может быть передана серверу 204 и маршрутизирована механизму 212 и подсистеме 250 безопасности ядра 244 сеанса. Например, в определенных примерных вариантах осуществления механизм 212 может быть сконфигурирован для определения, ассоциирована ли учетная запись пользователей с лицензией; и подсистема 250 безопасности может быть сконфигурирована для генерирования метки безопасности для сеанса.
[0039] Фиг. 3 изображает примерное изображение, субдискретизированное по схеме 4:4:4. Каждое из чисел в 4:4:4 (также как и в других схемах субдискретизации) относится к величине субдискретизации, которая выполняется в отношении исходного изображения. Субдискретизация может быть в более общем смысле выражена как субдискретизация J:a:b, где J относится к числу пикселей в ряду дискретизированной области, также как и числу взятых выборок яркости (Y в цветовом пространстве YUV), a относится к числу взятых выборок цветности в первом ряду J пикселей (U и V в цветовом пространстве YUV), и b относится к числу взятых выборок цветности во втором ряду J пикселей в дополнение к числу a (b выборок цветности могут также быть U и V в цветовом пространстве YUV).
[0040] Изображение 300 является примерным изображением, из которого производится субдискретизированное изображение 302. Изображение 300 имеет ширину/ряд из 4 пикселей и высоту/столбец из 2 пикселей. Число пикселей остается одинаковым между изображением 300 и дискретизированным изображением 302 - ширина из 4 пикселей и высота из 2 пикселей. Каждый пиксель изображения 300 был отдельно дискретизирован по яркости в изображении 302 - маркировка пикселя с помощью "x", обозначающая, что пиксель дискретизирован по яркости. Дополнительно, каждый пиксель изображения 300 был отдельно дискретизирован по цветности в изображении 302 - маркировка пикселя с помощью "o", обозначающая, что пиксель дискретизирован по цветности.
[0041] Дискретизированное изображение 302 представляет выборку 4:4:4 изображения 300, так как J, a и b, каждое, равны 4. J составляет 4, так как рассматриваемая дискретизированная зона составляет четыре пикселя в ширину, a составляет 4, так как верхний ряд дискретизируется 4 отдельных раза по цветности - один раз на пиксель, b также составляет 4, так как нижний ряд дискретизируется дополнительные 4 отдельных раза по цветности (дополнительные 4 отдельных раза относительно 4 выборок цветности, взятых из верхнего ряда).
[0042] Фиг. 4 изображает примерное изображение 300 по фиг. 3, дискретизированное в формате 4:2:0. Субдискретизация 4:2:0 отличается от субдискретизации 4:4:4, изображенной на изображении 302 по фиг. 3, так как из изображения 300 взято меньше выборок цветности. Здесь, для совокупных 8 пикселей взяты только две выборки цветности, как изображено на 4:2:0-субдискретизированном изображении 402. В схеме субдискретизации 4:2:0, a составляет 2, так в верхнем ряду взяты две выборки цветности. Дополнительно, b составляет 0, так в нижнем ряду дополнительные выборки цветности не взяты. То есть, для левого квартета 404 пикселей взята одна выборка цветности, и для правого квартета 406 пикселей взята одна выборка цветности. Как может быть видно между сравнением 4:4:4-субдискретизированного изображения 302 и 4:2:0-субдискретизированного изображения 402, схема субдискретизации 4:2:0 может в общем обеспечить для изображения возможность хранения в меньшем объеме данных с сопутствующей потерей качества. 4:4:4-субдискретизированное изображение 302 содержит 16 выборок - 8 для яркости и 8 для цветности. 4:2:0-субдискретизированное изображение 402 содержит 10 выборок - 8 для яркости и 2 для цветности.
[0043] Фиг. 5 изображает примерное изображение 300 по фиг. 3, дискретизированное по схеме 4:0:0. Как изображено, каждый из 8 пикселей в 4:0:0-дискретизированном изображении 502 дискретизирован по яркости, но ни один из этих подпикселей не дискретизирован по цветности. О 4:0:0 можно в основном подумать как о монохромной, так как она дискретизирует яркость, но не дискретизирует цветность.
Тогда как о 4:0:0 можно в основном подумать как о градации серого, поскольку она обычно используется для субдискретизации только значений яркости, она может быть использована для дискретизации только некоторых значений цветности в вариантах осуществления данного изобретения. То есть, как описано по отношению к прилагаемым чертежам, данные цветности (т.е. U или V вместо Y) могут быть дискретизированы по схеме 4:0:0, так что дискретизируются эти данные цветности, но ни остальные данные цветности (т.е. остальные из U или V), ни данные яркости не дискретизируются.
[0044] Фиг. 6 изображает примерную архитектуру для кодера, который реализует варианты осуществления данного изобретения. Архитектура кодера по фиг. 6 может быть реализована, например, в сервере 204 по фиг. 2, который проводит сеанс удаленного представления с клиентом 201 по фиг. 2, и который может реализовать примерную архитектуру для декодера, изображенную на фиг. 7. В различные моменты времени во время реализации данного изобретения, примерная архитектура по фиг. 6 может взять изображение, такое как изображение 300 по фиг. 3, и произвести из него 4:4:4-дискретизированное изобретение 302 по фиг. 3, 4:2:0-дискретизированное изобретение 402 по фиг. 4 и/или 4:0:0-дискретизированное изобретение 502 по фиг. 5.
[0045] Первоначально, кадр данных захватывается в формате RGB и используется в качестве ввода 600 в кодер. Этот кадр данных может быть захвачен, например, по мере того, как GDI 246 по фиг. 2 пропускает свой вывод в подсистему 254 удаленного отображения по фиг. 2, где архитектура по фиг. 6 реализована в подсистеме 254 удаленного отображения.
[0046] Компонент 602 преобразования цвета берет входной кадр 600 и преобразует его из цветового пространства RGB в цветовое пространство YUV (иногда называемое как Y'UV, YCbCr, или YPbPr), и создает из него три кадра составляющих - кадр Y-составляющей, кадр U-составляющей и к