Кодер сеанса удаленного представления низкой сложности



Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности
Кодер сеанса удаленного представления низкой сложности

 


Владельцы патента RU 2603627:

МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи (US)

Изобретение относится к области кодирования графических данных как видеопотока в сеансе удаленного представления. Техническим результатом является обеспечение кодирования и декодирования с использованием менее сложных кодеров, которые не конфигурируются дополнительно, чтобы поддерживать схему субдискретизации 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-составляющей и кадр V-составляющей. Эти три кадра составляющих затем по-отдельности кодируются посредством процесса кодера или процессов кодера. Значения Y, U и V могут быть определены с использованием следующих взаимосвязей между ними и значениями RGB:

Y=0,299*R+0,114*G+0,587*В

U=0,436(B-Y/0,886)

V=0,615(R-Y/0,701)

[0047] В вариантах осуществления, компонент 602 преобразования цвета преобразует входной кадр 600 из цветового пространства RGB в цветовое пространство YUV. Компонент 602 преобразования цвета затем разбивает YUV-кадр на три отдельных кадра составляющих - один для каждой Y-, U- и V-составляющей. Это может быть совершено, как например, посредством обработки YUV-кадра с помощью битовой маски. Например, когда каждый пиксель YUV-кадра выражен с использованием 24 битов (8 битов для значений Y, U и V), кадр Y-составляющей может быть определен посредством применения операции логического И к каждому пикселю с битовой маской 0xFF 00 00 (и U- и V-кадры с битовыми масками 0x00 FF 00 и 0x00 00 FF, соответственно). В вариантах осуществления данного изобретения, пиксель может быть выражен с помощью числа битов, отличного от 24, такого как 32 бита, где альфа-значение представлено с использованием 8 битов.

[0048] В вариантах осуществления изобретения, положение того, где значения U и V хранятся внутри их соответствующих кадров составляющих, может меняться так, чтобы их значение хранилось в начале значения каждого пикселя. То есть, каждый пиксель из кадров U- и V-составляющих может быть логически побитово сдвинут влево, на 8 и 16 битов, соответственно (используя пример с 24-битовым значением выше). Например, кадр U-составляющей, который содержит пиксель со значением 0x00 FF 00, может быть побитово сдвинут влево на 8 битов, чтобы произвести пиксель со значением 0xFF 00 00. 8 самых левых битов значения отбрасываются, 16 самых правых битов значения сдвигаются на 8 битов влево, и 8 нулей добавляются к значению.

[0049] Варианты осуществления данного изобретения могут выполнять побитовый сдвиг в отношении кадров U- и V-составляющих, так как кодеры 608 и 610 сконфигурированы с возможностью выполнения субдискретизации 4:0:0, где субдискретизируются только те биты, где обыкновенно размещается значение яркости. Посредством битового сдвига кадров U- и V-составляющих так, чтобы их значения U и V хранились в самой левой части значения каждого пикселя, и кодер, сконфигурированный с возможностью выполнения субдискретизации 4:0:0, может быть использован для субдискретизации этих кадров U- и V-составляющих, где значения U и V обычно не хранятся в самых левых битах значения пикселя.

[0050] Варианты осуществления данного изобретения могут необязательно преобразовывать входной кадр 600 из цветового пространства RGB в цветовое пространство YUV, но в более общем смысле из первого цветового пространства во второе цветовое пространство. Кроме того, в вариантах осуществления данного изобретения, кадр может быть вовсе не преобразован из первого цветового пространства во второе цветовое пространство. В вариантах осуществления данного изобретения, где входной кадр генерируется в том же цветовом пространстве, в котором он кодируется кодерами 606-610 кадров, может быть, что входной кадр 600 не преобразуется из первого цветового пространства во второе цветовое пространство.

[0051] Кадры Y-, U- и V-составляющих, сгенерированные компонентом 602 преобразования цвета, отправляются кодерам 606-610 кадров, соответственно. Компонент кодирования изображен в настоящем документе как являющийся кодером 606 Y-кадра, кодером 608 U-кадра и кодером 610 V-кадра. Эта картина является логической картиной, и в вариантах осуществления данного изобретения, кодеры 606, 608 и 610 могут быть или могут не быть отдельными процессами или компонентами кодера. Например, когда кодер по фиг. 6 реализован как процесс на многопроцессорной или многоядерной компьютерной системе, кодеры 606, 608 и 610 могут быть отдельными процессами кодера. Когда кодер по фиг. 6 реализован на однопроцессорной или одноядерной компьютерной системе, или имеет доступ только к одному процессору или ядру, кодеры 606, 608 и 610 могут быть одним процессом кодера, который последовательно обрабатывает Y-, U- и V-кадры.

[0052] В дополнение к кадрам Y-, U- и V-составляющих из компонента 602 преобразования цвета, кодеры 606, 608 и 610 могут также взять ввод 604 в качестве ввода, который обозначает режим для кодирования с внутренним предсказанием и/или квантования. Ввод 604 может обозначать режим для внутреннего предсказания блока свечения пикселей 4х4 или для блока свечения пикселей 16x16. В вариантах осуществления, предсказание для блока пикселей 4x4 может быть указано вводом 604, как вертикальное, горизонтальное, диагональное вниз-влево, диагональное вниз-вправо, вертикальное вправо, горизонтальное вниз, вертикальное влево, горизонтальное вверх или DC. В вариантах осуществления, предсказание для блока пикселей 16x16 может быть указано вводом 604, как вертикальное, горизонтальное, плоскостное или DC.

[0053] При квантовании, один или более наименее значимых битов значения могут быть отброшены для уменьшения величины пространства, в котором может храниться значение. В вариантах осуществления, квантование может быть реализовано посредством логического сдвига вправо значения на заданное число битов. В вариантах осуществления данного изобретения, ввод 604 может указывать величину квантования для выполнения, и может быть основан на целевой скорости передачи битов битового потока 614, который отправляется клиенту. В вариантах осуществления, значения U и V могут быть квантованы посредством большей величины, чем значения Y. Это может быть, потому что люди в основном менее способны ощущать недостаток информации цветности, чем информации яркости, так данные цветности могут быть отброшены с большей легкостью, чем данные яркости, без ощутимой потери качества изображения.

[0054] Кодер 606 Y-кадра выводит кодированную версию кадра Y-составляющей в формате 4:0:0. Кадр Y-составляющей может взять изображение 300 по фиг. 3 и произвести из него 4:0:0-субдискретизированное изображение 502 по фиг. 5. Кодер 606 Y-кадра может сначала дискретизировать кадр Y-составляющей с помощью схемы 4:0:0, и затем кодировать его, как например, I-кадр видео H.264. I-кадром является кадр, который выражает кадр видео без использования информации из предыдущего кадра или последующего кадра. В отличие от этого, P-кадр ссылается на данные из предыдущего кадра, и B-кадр ссылается на данные из предыдущего кадра и/или последующего кадра.

[0055] Аналогично операциям, выполненным кодером 606 Y-кадра, кодер 608 U-кадра выводит кодированную версию кадра U-составляющей в формате 4:0:0, и кодер 610 V-кадра выводит кодированную версию кадра V-составляющей в формате 4:0:0. Каждый из кодеров 606, 608 и 610 отправляет свой кодированный кадр в агрегатор 612 битового потока.

[0056] Агрегатор 612 битового потока кодирует кодированные кадры как битовый поток. Когда видео H.264 передается потоком клиенту, этот битовый поток может содержать поток видео H.264. Агрегатор 612 битового потока может в основном взять кодированные кадры и собрать их в поток данных, которые передаются потоком на другой компьютер по компьютерной сети для отображения этим другим компьютером.

[0057] Агрегатор 612 битового потока может дополнительно инкапсулировать битовый поток до его отправки клиенту. Как изображено, кадры могут быть заранее сжаты кодерами 608-610 и могут также быть дополнительно сжаты агрегатором 612 битового потока. Это может включать в себя методы объемного сжатия, такие как сжатие по методу Лемпеля-Зива (например, сжатие LZ77). После агрегации кодированных кадров составляющих, битовый агрегатор 612 битового потока отправляет кодированный битовый поток 614 компоненту RDP (не изображен), который может затем передать битовый поток клиенту (такому как клиент 201 по фиг. 2) для декодирования и отображения.

[0058] Фиг. 7 изображает примерную архитектуру для декодера, который реализует варианты осуществления данного изобретения. Архитектура декодера по фиг. 7 может быть реализована, например, в клиенте 201 по фиг. 2, который проводит сеанс удаленного представления с сервером 204 по фиг. 2, который реализует примерную архитектуру для кодера, изображенную на фиг. 6. Сетевые данные 700 принимаются по сети связи. В вариантах осуществления, сетевые данные 700 являются представлением кодированного битового потока по фиг. 6.

[0059] Сетевые данные 700 декодируются с помощью декодера 702, чтобы произвести три кадра составляющих для каждого кадра - кадр Y-составляющей, кадр U-составляющей и кадр V-составляющей. Когда сетевые данные 700 кодированы как видео H.264 и инкапсулированы с помощью протокола удаленного представления, декодер 702 может осуществить обратную инкапсуляцию и декодировать сетевые данные 700. Декодер 702 может декодировать сетевые данные 700 в представление кадров Y-, U- и V-составляющих единого кадра, причем Y-, U- и V-составляющие имеют схему субдискретизации 4:0:0. Сетевые данные 700 могут быть декодированы в представление кадров составляющих вместо копии кадров составляющих, где определенное кодирование с потерями было выполнено в отношении кадров составляющих до отправки в качестве сетевых данных. Например, кадры составляющих могут быть квантованы до отправки в качестве сетевых данных 700. В таком случае, когда кадры составляющих были квантованы, декодер 702 может быть не способен воссоздать дубликат кадров составляющих, а только дубликат квантованных кадров составляющих.

[0060] Эти три кадра составляющих, произведенные с помощью декодера 702, затем отправляются в агрегатор 704 кадров, который агрегирует кадры составляющих в единый кадр, содержащий каждое из значений составляющих. В вариантах осуществления, агрегатор 704 кадров может объединять кадры составляющих в единый кадр посредством сдвига первого бита кадров U- и V-составляющих на 8 и 16 битов вправо, соответственно, и применения операции логического ИЛИ к трем кадрам составляющих.

[0061] В вариантах осуществления, где кадры составляющих промаркированы с помощью указателя номера кадра (например, когда единый кадр разделен на три кадра составляющих, каждый из этих кадров может быть промаркирован с помощью указателя того же кадра), агрегатор 704 кадров определяет указатель номера кадра каждого кадра составляющей и агрегирует те кадры составляющих, которые совместно используют одинаковый указатель.

[0062] Агрегатор 704 кадров затем отправляет агрегированные кадры компоненту 706 преобразования цвета. Компонент преобразования цвета сконфигурирован с возможностью преобразования кадра из первого цветового пространства во второе цветовое пространство. Здесь, когда кадр принят от агрегатора 704 кадров в цветовом пространстве YUV и должен быть отображен на устройстве отображения в цветовом пространстве RGB, компонент 706 преобразования цвета может преобразовать кадр из цветового пространства YUV в цветовое пространство RGB. Компонент 706 преобразования цвета может затем вывести 708 кадр в цветовом пространстве RGB на такое устройство отображения для отображения.

[0063] Фиг. 8 изображает примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения. В вариантах осуществления, операционные процедуры по фиг. 8 могут быть реализованы в сервере 204 сеанса удаленного представления по фиг. 2. В вариантах осуществления данного изобретения, реализованы не все операционные процедуры по фиг. 8, и/или операционные процедуры по фиг. 8 реализованы в другом порядке, чем изображено. То же применяется для операционных процедур по фиг. 9-11 ниже.

[0064] Операция 802 изображает этап, на котором принимают кадр в формате RGB. Кадр в формате RGB может быть принят аналогичным образом как принимается ввод 600 RDP по фиг. 6 компонентом 602 преобразования цвета по фиг. 6.

[0065] Операция 804 изображает этапы, на которых кадр преобразовывают в YUV и разбивают кадр, как например, посредством преобразования кадра в кадр Y-составляющей, кадр U-составляющей и кадр V-составляющей. Операция 804 может быть реализована определенным образом, аналогичным тому, как реализован компонент 602 преобразования цвета по фиг. 6. В вариантах осуществления, операция 804 может быть выполнена в ответ на определение, что кадр является данными экрана. В вариантах осуществления, операция 804 включает в себя этап, на котором маркируют каждый кадр составляющей для кадра с помощью совместно используемого указателя, так чтобы три кадра составляющих могли быть идентифицированы как принадлежащие к одному кадру или происходящие из него. В таких вариантах осуществления, операция 804 может содержать этап, на котором маркируют каждый из кодированных кадров Y-, U- и V-составляющих с помощью ссылки на кадр.

[0066] Операция 806 изображает этап, на котором кодируют каждый из кадров Y-, U- и V-составляющих в формате субдискретизации 4:0:0. Формат субдискретизации 4:0:0 может в основном содержать субдискретизацию значения пикселей данных изображения. Операция 806 может быть выполнена с использованием кодера, который не сконфигурирован с возможностью кодирования кадров по схеме субдискретизации 4:4:4 (та, где каждое значение каждого пикселя дискретизируется по-отдельности - например, каждое значение Y, U и V каждого пикселя дискретизируется по-отдельности), но сконфигурирован с возможностью кодирования кадров по схеме субдискретизации, которая не дискретизирует по-отдельности каждое значение цветности, такой как 4:2:0. Операция 806 может быть реализована в кодере 606 Y-кадра, кодере 608 U-кадра и кодере 610 V-кадра по фиг. 6. В вариантах осуществления, операция 806 содержит этап, на котором кодируют каждый из кадров Y-, U- и V-составляющих по схеме субдискретизации 4:0:0 с помощью H.264-кодера внутреннего кодирования.

[0067] В вариантах осуществления, кодирование по операции 806 выполняется на основе типа внутреннего предсказания. В таких вариантах осуществления, операция 806 может содержать этапы, на которых определяют уровень внутреннего предсказания, с которым следует кодировать каждый из кадров Y-, U- и V-составляющих, и кодируют с внутренним предсказанием каждый из кадров Y-, U- и V-составляющих с помощью содержащегося кодера на основе уровня внутреннего предсказания. Такое кодирование с внутренним предсказанием может быть выполнено на основе определения величины доступных вычислительных ресурсов, которые доступны компьютеру, который реализует операционные процедуры по фиг. 8.

[0068] В вариантах осуществления, кодирование по операции 806 включает в себя этап, на котором выполняют квантование. В таких вариантах осуществления, операция 806 может включать в себя этапы, на которых определяют величину квантования для квантования кодированных кадров Y-, U- и V-составляющих, и квантуют кодированные кадры Y-, U- и V-составляющих до этапа, на котором кодируют кодированные кадры Y-, U- и V-составляющих в битовый поток протокола сеанса удаленного представления. В вариантах осуществления, этап, на котором определяют величину квантования для квантования кодированных кадров Y-, U- и V-составляющих содержит этап, на котором определяют первую величину квантования для квантования кадров Y-составляющей и вторую величину квантования для квантования кадров U- и V-составляющих, причем первая величина квантования является менее квантующей, чем вторая величина квантования. В вариантах осуществления, этап, на котором определяют величину квантования для квантования кодированных кадров Y-, U- и V-составляющих, основан на целевой скорости передачи битов битового потока.

[0069] Операция 808 изображает этап, на котором кодируют кодированные кадры Y-, U- и V-составляющих в битовый поток протокола сеанса удаленного представления. Операция 808 может быть реализована в агрегаторе 612 битового потока по фиг. 6.

[0070] Операция 810 изображает этап, на котором отправляют битовый поток в компьютер посредством сеанса удаленного представления, причем компьютер декодирует битовый поток, чтобы произвести представление каждого из кадров Y-, U- и V-составляющих в формате 4:0:0 и объединяет представление каждого из кадров Y-, U- и V-составляющих в YUV-кадр в формате 4:4:4, который компьютер отображает на устройстве отображения. Компьютером, на который отправлен битовый поток, может быть клиент 201 по фиг. 2.

[0071] Фиг. 9 изображает дополнительные примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения. Операционные процедуры по фиг. 9 могут быть реализованы на том же компьютере, который реализует операционные процедуры по фиг. 8, таком как сервер 204 по фиг. 2. Фиг. 8 изображает операционные процедуры, где графические данные кодируются и отправляются на клиентский компьютер как видео, где клиент может воссоздать кадры принятого видео по схеме 4:4:4, и Фиг. 9 изображает операционные процедуры, где графические данные кодируются и отправляются на клиентский компьютер как видео по схеме, которая предусматривает меньшую субдискретизацию, как например, видео по схеме 4:2:0. Операционные процедуры как по фиг. 8, так и по фиг. 9, могут быть реализованы на одном компьютере и использованы в пределах одиночного сеанса удаленного представления для кодирования разных типов графических данных, которые сгенерированы. То есть, когда компьютер кодирует один тип данных (такой как данные экрана - графический вывод рабочего стола компьютера - где может присутствовать текст), компьютер может использовать операционные процедуры по фиг. 8, и когда компьютер кодирует другой тип данных (такой как видео), компьютер может использовать операционные процедуры по фиг. 9.

[0072] Операция 902 изображает этап, на котором принимают второй кадр в формате RGB. В вариантах осуществления, операция 902 может быть приведена в исполнение аналогичным образом, которым компонент 602 преобразования цвета по фиг. 6 принимает RGB-ввод 600.

[0073] Операция 904 изображает этап, на котором определяют не разбивать второй кадр на основе того, что второй кадр является видеоданными. В вариантах осуществления, операция 904 может содержать этап, на котором определяют не преобразовывать кадр во второй кадр Y-составляющей, второй кадр U-составляющей и второй кадр V-составляющей, на основе того, что второй кадр является видеоданными. Может быть, что кадр должен быть разбит на кадры составляющих и затем кодирован (так чтобы кадр по схеме субдискретизации 4:4:4 мог быть принят клиентом), при этом кадр является данными экрана, которые вероятно содержат текст, так что качество для них имеет более высокую важность, чем для некоторых других типов данных. Здесь, второй кадр определен как видеоданные, и в результате, кадр может быть не преобразован в кадры своих составляющих.

[0074] Операция 906 изображает этап, на котором преобразовывают второй кадр в формат YUV. В вариантах осуществления, операция 906 может быть реализована в компоненте 602 преобразования цвета по фиг. 6, хотя в таком случае, компонент 602 преобразования цвета может не разбивать второй кадр на кадры составляющих.

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

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

[0077] Операция 912 изображает этап, на котором отправляют битовый поток на компьютер посредством сеанса удаленного представления. Компьютер может затем отобразить представление второго кадра на устройстве отображения на основе битового потока. Операция 912 может быть приведена в исполнение аналогичным образом, которым реализована операция 810 по фиг. 8.

[0078] Фиг. 10 изображает примерные операционные процедуры для декодера, который реализует варианты осуществления данного изобретения. В вариантах осуществления, операционные процедуры по фиг. 10 могут быть использованы для реализации декодера по фиг. 7 и использованы для декодирования битового потока, сгенерированного кодером по фиг. 6.

[0079] Операция 1002 изображает этап, на котором принимают битовый поток посредством сеанса удаленного представления, причем битовый поток содержит кадры первой, второй и третьей составляющих кадра, причем каждый из кадров первой, второй и третьей составляющих имеет формат субдискретизации 4:0:0. Это может быть битовый поток, сгенерированный в операции 810 по фиг. 8. Кадрами первой, второй и третьей составляющих могут быть, соответственно, кадры Y-, U- и V-составляющих YUV-кадра. В вариантах осуществления, где битовый поток, принятый посредством сеанса удаленного представления, инкапсулируется с помощью протокола удаленного представления, операция 1002 может включать в себя этап, на котором осуществляют обратную инкапсуляцию битового потока.

[0080] Операция 1004 изображает этап, на котором декодируют каждый из кадров первой, второй и третьей составляющих, как например, с помощью декодера. В вариантах осуществления, операция 1002 может быть реализована в декодере 702 по фиг. 7. В вариантах осуществления, декодер не сконфигурирован с возможностью декодирования кадров по схеме субдискретизации 4:4:4, но декодер сконфигурирован с возможностью декодирования кадров по схеме субдискретизации 4:2:0.

[0081] Операция 1006 изображает этап, на котором объединяют кадры первой, второй и третьей составляющих, чтобы произвести кадр в формате 4:4:4. В вариантах осуществления, операция 1006 может быть реализована в агрегаторе 704 кадров по фиг. 7. В вариантах осуществления, операция 1006 может содержать этап, на котором объединяют кадры первой, второй и третьей составляющих посредством операции логического ИЛИ. В вариантах осуществления, операция 1006 содержит этап, на котором определяют объединить кадры первой, второй и третьей составляющих на основе того, что кадры первой, второй и третьей составляющих, каждый, содержат идентификатор второго кадра.

[0082] Операция 1008 изображает этап, на котором преобразовывают кадр из первого цветового пространства во второе цветовое пространство. В вариантах осуществления, операция 1008 может быть реализована в компоненте 706 преобразования цвета по фиг. 7. В вариантах осуществления, операция 1008 может содержать этап на котором преобразовывают кадр из цветового пространства YUV в цветовое пространство RGB до отображения кадра на устройстве отображения.

[0083] Операция 1010 изображает этап, на котором отображают кадр на устройстве отображения. Когда операционные процедуры по фиг. 10 реализованы на компьютере 20 по фиг. 1, отображение кадра на устройстве отображения может содержать этап, на котором кадр отображают на дисплее 47 по фиг. 1.

[0084] Фиг. 11 изображает дополнительные примерные операционные процедуры для кодера, который реализует варианты осуществления данного изобретения. Операционные процедуры по фиг. 11 могут быть реализованы на том же компьютере, который реализует операционные процедуры по фиг. 10, таком как клиент 201 по фиг. 2. Фиг. 10 изображает операционные процедуры, которые могут быть использованы для декодирования и агрегации кадров составляющих, таких как кадров составляющих, произведенных посредством реализации операционных процедур по фиг. 8. В отличие от этого, фиг. 11 изображает операционные процедуры, которые могут быть использованы для декодирования кадра, который не был кодирован и передан как кадры составляющих, такие как кадры составляющих, произведенные посредством реализации операционных процедур по фиг. 9.

[0085] Операция 1102 изображает этап, на котором принимают второй кадр в битовом потоке. В вариантах осуществления, второй кадр не имеет схему субдискретизации 4:0:0, но скорее имеет схему субдискретизации 4:2:0. Операция 1102 может быть реализована аналогичным образом, которым реализована операция 1002 по фиг. 10.

[0086] Операция 1104 изображает этап, на котором декодируют второй кадр с помощью декодера. На фиг. 8, декодер был использован для декодирования трех кадров составляющих по схеме субдискретизации 4:0:0. Здесь, второй кадр может также быть кодирован с помощью этого декодера, даже если второй кадр имеет другую схему субдискретизации, чем кадры составляющих, например, схему субдискретизации 4:2:0 или схему субдискретизации 4:2:2.

[0087] Операция 1106 изображает этап, на котором определяют не объединять второй кадр с другим кадром на основе того, что второй кадр не является кадром составляющей. Когда кадры составляющих приняты, как например, на фиг. 10, они могут быть агрегированы, чтобы произвести представление из первоначального кадра. Второй кадр не является кадром составляющей, он содержит все его составляющие внутри единого кадра. Так как второй кадр не является кадром составляющей, в вариантах осуществления данного изобретения, он не агрегируется с каким-либо другим кадром. Определение, что второй кадр не является кадром составляющей, может быть выполнено, например, посредством определения, что второй кадр не имеет схему субдискретизации 4:0:0. В вариантах осуществления данного изобретения, когда кадры помечены или промаркированы с помощью указателя кадра или ссылки на него, определение, что второй кадр не является кадром составляющей, может быть выполнено посредством определения, что второй кадр был помечен или промаркирован с помощью ссылки, которая указывает, что он не является кадром составляющей.

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

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

1. Способ кодирования данных по первой схеме субдискретизации, причем дискретизация данных по первой схеме субдискретизации содержит дискретизацию по отдельности каждого значения каждого пикселя данных изображения, с помощью кодера, который сконфигурирован с возможностью кодирования кадров по второй схеме субдискретизации, но не сконфигурирован с возможностью кодирования кадров по первой схеме дискретизации, причем дискретизация данных по второй схеме субдискретизации содержит субдискретизацию значения пикселей данных изображения, содержащий этапы, на которых:
преобразовывают кадр в формате RGB в формат YUV для генерирования кадра YUV;
обрабатывают кадр YUV с помощью битовой маски для преобразования кадра YUV в кадр Y-составляющей, кадр U-составляющей и кадр V-составляющей;
выполняют побитовый сдвиг влево в отношении кадров U- и V-составляющих;
кодируют каждый из кадра Y-составляющей, подвергнутого побитовому сдвигу кадра U-составляющей и подвергнутого побитовому сдвигу кадра V-составляющей по второй схеме субдискретизации с помощью кодера;
кодируют кодированный кадр Y-составляющей, кодированный подвергнутый побитовому сдвигу кадр U-составляющей и кодированный подвергнутый побитовому сдвигу кадр V-составляющей в битовый поток; и
отправляют битовый поток на компьютер, причем компьютер декодирует битовый поток, чтобы произвести представление каждого из кадров Y-, U- и V-составляющих по второй схеме субдискретизации, и объединяет представление каждого из кадров Y-, U- и V-составляющих в YUV-кадр по первой схеме субдискретизации, который компьютер отображает на устройстве отображения.

2. Способ по п. 1, в котором этап, на котором кодируют каждый из кадра Y-составляющей, подвергнутого побитовому сдвигу кадра U-составляющей и подвергнутого побитовому сдвигу кадра V-составляющей по второй схеме субдискретизации с помощью кодера, содержит этап, на котором:
кодируют каждый из кадра Y-составляющей, подвергнутого побитовому сдвигу кадра U-составляющей и подвергнутого побитовому сдвигу кадра V-составляющей по схеме субдискретизации 4:0:0 с помощью Н.264-кодера внутреннего кодирования.

3. Способ по п. 1, дополнительно содержащий этапы, на которых:
определяют величину квантования для квантования кодированного кадра Y-составляющей, кодированного подвергнутого побитовому сдвигу кадра U-составляющей и кодированного подвергнутого побитовому сдвигу кадра V-составляющей; и
квантуют кодированный кадр Y-составляющей, кодированный подвергнутый побитовому сдвигу кадр U-составляющей и кодированный подвергнутый побитовому сдвигу кадр V-составляющей до кодирования кодированного кадра Y-составляющей, кодированного подвергнутого побитовому сдвигу кадра U-составляющей и кодированного подвергнутого побитовому сдвигу кадра V-составляющей в битовый поток.

4. Способ по п. 3, в котором этап, на котором определяют величину квантования для квантования кодированного кадра Y-составляющей, кодированного подвергнутого побитовому сдвигу кадра U-составляющей и кодированного подвергнутого побитовому сдвигу кадра V-составляющей, содержит этап, на котором:
определяют первую величину квантования для квантования кадров Y-составляющей и вторую величину квантования для квантования подвергнутых побитовому сдвигу кадров U-составляющей и подвергнутых побитовому сдвигу кадров V-составляющей, причем первая величина квантования меньше, чем вторая величина квантования.

5. Способ по п. 3, в котором этап, на котором определяют величину квантования для квантования кодированного кадра Y-составляющей, кодированного подвергнутого побитовому сдвигу кадра U-составляющей и кодированного подвергнутого побитовому сдвигу кадра V-составляющей, содержит этап, на котором:
определяют величину квантования для квантования кодированного кадра Y-составляющей, кодированного подвергнутого побитовому сдвигу кадра U-составляющей и кодированного подвергнутого побитовому сдвигу кадра V-составляющей на основе целевой скорости передачи битов битового потока.

6. Способ по п. 1, дополнительно содержащий этапы, на которых:
принимают второй кадр в формате RGB;
определяют не преобразовывать кадр во второй кадр Y-составляющей, второй кадр U-составляющей и второй кадр V-составляющей, на основе того, что второй кадр является видеоданными;
преобразовывают второй кадр в формат YUV;
кодируют преобразованный второй кадр с помощью кодера;
кодируют кодированный второй кадр в битовый поток; и
отправляют битовый поток на компьютер, причем компьютер отображает представление второго кадра на устройстве отображения на основе битового потока.

7. Способ по п. 1, в котором первая схема субдискретизации содержит схему субдискретизации 4:4:4, и в котором вторая схема субдискретизации содержит схему субдискретизации 4:2:2 или 4:2:0 или 4:0:0.



 

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

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

Изобретение относится к обработке изображения, в частности к способам и системам кодирования и декодирования изображений. .

Изобретение относится к обработке изображений и, в частности, к системам кодирования и декодирования изображений. .

Изобретение относится к телевизионным системам и может быть использовано для повышения цветного разрешения телевизионного изображения в горизонтальном направлении.

Изобретение относится к адаптивной схеме пикинга (высокочастотной коррекции) видеосигнала, которую можно использовать совместно с сепаратором сигналов яркости/цветности для выделения сигнала яркости (или "люма", или "y") и сигнала цветности (или "хрома", или "C") из сложного видеосигнала, используемого в системе NTSC.

Изобретение относится к системе визуального отображения, такой как телевизионный приемник, где коэффициент усиления сигнала возбуждающего усилителя кинескопа может регулироваться вручную до заданного состояния без наведения ответного сигнала от взаимодействующей цепи автоматического управления смещением кинескопа (АУС).

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

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

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

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

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

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

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

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

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

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

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