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

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

Info

Publication number
RU2603627C2
RU2603627C2 RU2014110506/07A RU2014110506A RU2603627C2 RU 2603627 C2 RU2603627 C2 RU 2603627C2 RU 2014110506/07 A RU2014110506/07 A RU 2014110506/07A RU 2014110506 A RU2014110506 A RU 2014110506A RU 2603627 C2 RU2603627 C2 RU 2603627C2
Authority
RU
Russia
Prior art keywords
frame
component
shifted
frames
bit
Prior art date
Application number
RU2014110506/07A
Other languages
English (en)
Other versions
RU2014110506A (ru
Inventor
Кришна Мохан МАЛЛАДИ
Б. Анил КУМАР
Надим Й. АБДО
Сридхар САНКУРАТРИ
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2014110506A publication Critical patent/RU2014110506A/ru
Application granted granted Critical
Publication of RU2603627C2 publication Critical patent/RU2603627C2/ru

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

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

Description

УРОВЕНЬ ТЕХНИКИ
[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, накопители на жестких дисках или любой другой машиночитаемый носитель информации. Аналогично, данное изобретение, или определенные аспекты или их части, может быть осуществлено в распространяемых сигналах, или любой другой машиночитаемой среде связи. Когда компьютерный код загружен в машину, такую как компьютер, и исполняется ею, машина становится устройством, сконфигурированным для применения на практике раскрытых вариантов осуществления. В дополнение к конкретным реализациям, явным образом изложенным в настоящем документе, другие аспекты и реализации будут очевидны специалистам в данной области техники исходя из рассмотрения описания, раскрытого в настоящем документе. Предполагается, что данное описание и проиллюстрированные реализации должны рассматриваться только как примеры.

Claims (7)

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.
RU2014110506/07A 2011-09-20 2012-09-12 Кодер сеанса удаленного представления низкой сложности RU2603627C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/237,859 2011-09-20
US13/237,859 US9712847B2 (en) 2011-09-20 2011-09-20 Low-complexity remote presentation session encoder using subsampling in color conversion space
PCT/US2012/054702 WO2013043420A1 (en) 2011-09-20 2012-09-12 Low-complexity remote presentation session encoder

Publications (2)

Publication Number Publication Date
RU2014110506A RU2014110506A (ru) 2015-09-27
RU2603627C2 true RU2603627C2 (ru) 2016-11-27

Family

ID=47858204

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2014110506/07A RU2603627C2 (ru) 2011-09-20 2012-09-12 Кодер сеанса удаленного представления низкой сложности

Country Status (12)

Country Link
US (1) US9712847B2 (ru)
EP (1) EP2759140B1 (ru)
JP (1) JP2014530563A (ru)
KR (1) KR101962990B1 (ru)
CN (1) CN102984512B (ru)
AU (1) AU2012312810B2 (ru)
BR (1) BR112014006576B1 (ru)
CA (1) CA2849091A1 (ru)
HK (1) HK1181227A1 (ru)
MX (1) MX2014003435A (ru)
RU (1) RU2603627C2 (ru)
WO (1) WO2013043420A1 (ru)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012013999A1 (en) * 2010-07-29 2012-02-02 B-K Medical Aps Motion-compensated processing
US10448111B2 (en) 2014-09-24 2019-10-15 Microsoft Technology Licensing, Llc Content projection
US9769227B2 (en) 2014-09-24 2017-09-19 Microsoft Technology Licensing, Llc Presentation of computing environment on multiple devices
US10635296B2 (en) 2014-09-24 2020-04-28 Microsoft Technology Licensing, Llc Partitioned application presentation across devices
US10025684B2 (en) 2014-09-24 2018-07-17 Microsoft Technology Licensing, Llc Lending target device resources to host device computing environment
US9691349B2 (en) 2015-04-01 2017-06-27 Apple Inc. Source pixel component passthrough
US20170366819A1 (en) * 2016-08-15 2017-12-21 Mediatek Inc. Method And Apparatus Of Single Channel Compression
CN106657960B (zh) * 2016-09-30 2018-12-25 北京集创北方科技股份有限公司 色彩空间转换方法
CN108259690A (zh) * 2016-12-28 2018-07-06 乐视汽车(北京)有限公司 图像传输方法和装置
US11638040B2 (en) 2020-08-24 2023-04-25 Schmied Enterprises LLC Eco-friendly codec-based system for low latency transmission
CN114371811A (zh) * 2020-10-15 2022-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
CN113365083B (zh) * 2021-07-08 2022-10-11 广州市保伦电子有限公司 一种基于h.265实现yuv444图像编解码方法
US11838513B2 (en) * 2022-01-14 2023-12-05 Meta Platforms Technologies, Llc Progressive transmission of detailed image data via video compression of successive subsampled frames

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2009131597A (ru) * 2007-02-21 2011-02-27 Майкрософт Корпорейшн (Us) Сообщение и использование информации о позиции выборки насыщенности цвета

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5384912A (en) * 1987-10-30 1995-01-24 New Microtime Inc. Real time video image processing system
JPH07177502A (ja) * 1993-12-17 1995-07-14 Sutajio Gen:Kk 画像情報圧縮方法、圧縮画像情報記録媒体、圧縮画像情報再生装置
JPH0983893A (ja) * 1995-09-08 1997-03-28 Matsushita Electric Ind Co Ltd テレビジョン受像機
JP2861890B2 (ja) * 1995-09-28 1999-02-24 日本電気株式会社 カラー画像表示装置
US5768429A (en) * 1995-11-27 1998-06-16 Sun Microsystems, Inc. Apparatus and method for accelerating digital video decompression by performing operations in parallel
KR100186409B1 (ko) * 1996-04-23 1999-05-01 구자홍 피씨와 티브이 적응형 피아이피 영상신호 처리회로
US5905536A (en) * 1997-06-05 1999-05-18 Focus Enhancements, Inc. Video signal converter utilizing a subcarrier-based encoder
JP3448462B2 (ja) * 1997-06-25 2003-09-22 三洋電機株式会社 画像データ圧縮装置
US6043845A (en) * 1997-08-29 2000-03-28 Logitech Video capture and compression system and method for composite video
US6091777A (en) * 1997-09-18 2000-07-18 Cubic Video Technologies, Inc. Continuously adaptive digital video compression system and method for a web streamer
JP4071328B2 (ja) * 1997-11-18 2008-04-02 富士通株式会社 文書画像処理装置および方法
US6829301B1 (en) * 1998-01-16 2004-12-07 Sarnoff Corporation Enhanced MPEG information distribution apparatus and method
US7103226B1 (en) * 1998-03-23 2006-09-05 Ati Technologies, Inc. Video processor with composite graphics and video picture elements
US6661422B1 (en) * 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
JP2000197050A (ja) * 1998-12-25 2000-07-14 Canon Inc 画像処理装置及び方法
US20020135683A1 (en) * 1999-12-20 2002-09-26 Hideo Tamama Digital still camera system and method
US6707853B1 (en) * 2000-01-10 2004-03-16 Intel Corporation Interface for performing motion compensation
US6961063B1 (en) * 2000-06-30 2005-11-01 Intel Corporation Method and apparatus for improved memory management of video images
US20020090140A1 (en) * 2000-08-04 2002-07-11 Graham Thirsk Method and apparatus for providing clinically adaptive compression of imaging data
US7576748B2 (en) * 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
JP3631169B2 (ja) * 2001-06-19 2005-03-23 三洋電機株式会社 ディジタルカメラ
US6842484B2 (en) * 2001-07-10 2005-01-11 Motorola, Inc. Method and apparatus for random forced intra-refresh in digital image and video coding
US20030112863A1 (en) 2001-07-12 2003-06-19 Demos Gary A. Method and system for improving compressed image chroma information
US7142251B2 (en) * 2001-07-31 2006-11-28 Micronas Usa, Inc. Video input processor in multi-format video compression system
US6977659B2 (en) * 2001-10-11 2005-12-20 At & T Corp. Texture replacement in video sequences and images
CA2380105A1 (en) * 2002-04-09 2003-10-09 Nicholas Routhier Process and system for encoding and playback of stereoscopic video sequences
KR100930043B1 (ko) * 2002-11-23 2009-12-08 삼성전자주식회사 스크롤링 텍스트나 그래픽 데이터를 검출할 수 있는움직임 추정장치 및 방법
US7184094B2 (en) * 2002-12-06 2007-02-27 Motorola, Inc. Decoding system, video color converter and method thereof
JP4270892B2 (ja) * 2003-01-27 2009-06-03 Hoya株式会社 偽色低減装置
US7173635B2 (en) 2003-03-25 2007-02-06 Nvidia Corporation Remote graphical user interface support using a graphics processing unit
JP4446674B2 (ja) * 2003-03-31 2010-04-07 株式会社メガチップス 画像処理装置及び撮像装置
US20040225221A1 (en) * 2003-05-06 2004-11-11 Olsson Lars Jonas Diagnostic ultrasound imaging system with adaptive persistence
US7362810B2 (en) * 2003-05-13 2008-04-22 Sigmatel, Inc. Post-filter for deblocking and deringing of video data
US20050060754A1 (en) * 2003-09-17 2005-03-17 Wegener Communications, Inc. Apparatus and method for distributed control of media dissemination
US20050062755A1 (en) 2003-09-18 2005-03-24 Phil Van Dyke YUV display buffer
US7369707B2 (en) * 2003-10-28 2008-05-06 Matsushita Electric Industrial Co., Ltd. Intra-picture prediction coding method
JP4515886B2 (ja) 2003-10-28 2010-08-04 パナソニック株式会社 面内予測符号化方法
TWI228935B (en) * 2003-12-22 2005-03-01 Sunplus Technology Co Ltd Method of motion detection for 3D comb filter video decoder
US20050219252A1 (en) * 2004-03-30 2005-10-06 Buxton Mark J Two-dimensional buffer, texture and frame buffer decompression
WO2005099275A2 (en) 2004-04-02 2005-10-20 Thomson Licensing Complexity scalable video decoding
JP2005340954A (ja) * 2004-05-24 2005-12-08 Toshiba Corp 情報処理装置および表示制御方法
US20060008154A1 (en) * 2004-07-01 2006-01-12 Belle Ronny V Video compression and decompression to virtually quadruple image resolution
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
JP4737991B2 (ja) 2005-01-04 2011-08-03 株式会社東芝 再生装置
JP4489605B2 (ja) * 2005-01-19 2010-06-23 株式会社メガチップス 圧縮符号化装置、圧縮符号化方法およびプログラム
WO2006090334A2 (en) 2005-02-28 2006-08-31 Nxp B.V. New compression format and apparatus using the new compression format for temporarily storing image data in a frame memory
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
US8306112B2 (en) * 2005-09-20 2012-11-06 Mitsubishi Electric Corporation Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium
CN101931801A (zh) 2005-09-20 2010-12-29 三菱电机株式会社 图像编码方法和图像编码装置以及图像编码比特流
US7596280B2 (en) * 2005-09-29 2009-09-29 Apple Inc. Video acquisition with integrated GPU processing
US7899864B2 (en) * 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US20070133899A1 (en) * 2005-12-09 2007-06-14 Rai Barinder S Triggering an image processing function
US7439989B2 (en) * 2006-02-17 2008-10-21 Microsoft Corporation Detecting doctored JPEG images
US7929608B2 (en) 2006-03-28 2011-04-19 Sony Corporation Method of reducing computations in intra-prediction and mode decision processes in a digital video encoder
JP5266202B2 (ja) 2006-03-28 2013-08-21 サムスン エレクトロニクス カンパニー リミテッド 画像符号化/復号化方法及び装置
US7460725B2 (en) * 2006-11-09 2008-12-02 Calista Technologies, Inc. System and method for effectively encoding and decoding electronic information
US8902992B2 (en) * 2007-04-04 2014-12-02 Entropic Communications, Inc. Decoder for selectively decoding predetermined data units from a coded bit stream
CA2702161A1 (en) 2007-10-15 2009-04-23 Mitsubishi Electric Corporation Image coding device, image decoding device, image coding method, and image decoding method
US20090238198A1 (en) * 2008-03-20 2009-09-24 Sheng-Chun Niu Packing Switching System and Method
EP2144432A1 (en) * 2008-07-08 2010-01-13 Panasonic Corporation Adaptive color format conversion and deconversion
JP5029543B2 (ja) 2008-09-09 2012-09-19 富士通株式会社 符号化装置および符号化プログラム
JP5024632B2 (ja) * 2008-09-19 2012-09-12 ソニー株式会社 画像処理装置および方法、並びにプログラム
US8457194B2 (en) * 2008-09-29 2013-06-04 Microsoft Corporation Processing real-time video
KR20100079037A (ko) * 2008-12-30 2010-07-08 삼성전자주식회사 비디오 영상 부호화 방법 및 장치
US8171154B2 (en) 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
CN102741830B (zh) * 2009-12-08 2016-07-13 思杰系统有限公司 用于多媒体流的客户机侧远程呈现的系统和方法
TWI423164B (zh) * 2010-05-07 2014-01-11 Silicon Motion Inc 用來產生一高品質放大影像之方法及相關裝置
US8625666B2 (en) * 2010-07-07 2014-01-07 Netzyn, Inc. 4:4:4 color space video with 4:2:0 color space video encoders and decoders systems and methods
CN103155568B (zh) * 2010-07-08 2016-07-27 杜比实验室特许公司 用于使用参考处理信号进行多层图像和视频传输的系统和方法
WO2012013999A1 (en) * 2010-07-29 2012-02-02 B-K Medical Aps Motion-compensated processing
US9697588B2 (en) * 2010-11-15 2017-07-04 Intuitive Surgical Operations, Inc. System and method for multi-resolution sharpness transport across color channels
JP4892096B1 (ja) * 2010-11-30 2012-03-07 株式会社東芝 画像処理装置および画像処理方法
US9124853B2 (en) * 2010-11-30 2015-09-01 Verizon Patent And Licensing Inc. HDMI device and interoperability testing systems and methods

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2009131597A (ru) * 2007-02-21 2011-02-27 Майкрософт Корпорейшн (Us) Сообщение и использование информации о позиции выборки насыщенности цвета

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Haoping Yu, Performance Improved 4:4:4 Coding for MPEG4-Part10/H.264, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG, JVT-O013, 15th Meeting: Busan, 16-22 April 2005. *
Yoshihisa Yamada et al, A Consideration on Intra Coding Efficiency of the High 4:4:4 Profile, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG, JVT-P083, 16th Meeting: Poznan, 23-29 July 2005. *

Also Published As

Publication number Publication date
BR112014006576A2 (pt) 2017-03-28
CA2849091A1 (en) 2013-03-28
AU2012312810B2 (en) 2016-05-12
HK1181227A1 (en) 2013-11-01
US20130070844A1 (en) 2013-03-21
KR101962990B1 (ko) 2019-03-27
BR112014006576B1 (pt) 2022-06-14
EP2759140A4 (en) 2015-05-20
JP2014530563A (ja) 2014-11-17
EP2759140B1 (en) 2022-08-03
AU2012312810A1 (en) 2014-04-10
KR20140066194A (ko) 2014-05-30
RU2014110506A (ru) 2015-09-27
US9712847B2 (en) 2017-07-18
WO2013043420A1 (en) 2013-03-28
CN102984512B (zh) 2015-08-26
EP2759140A1 (en) 2014-07-30
MX2014003435A (es) 2014-05-01
CN102984512A (zh) 2013-03-20

Similar Documents

Publication Publication Date Title
RU2603627C2 (ru) Кодер сеанса удаленного представления низкой сложности
US9075560B2 (en) Real-time compression with GPU/CPU
US8824799B1 (en) Method and apparatus for progressive encoding for text transmission
US8509310B2 (en) Method, medium, and system encoding and/or decoding an image
CN105163127B (zh) 视频分析方法及装置
JP4895400B2 (ja) 画像フレームの非フレームエッジブロックの表現における改良された圧縮
WO2010006015A2 (en) Color gamut scalability techniques
US8879838B2 (en) Image coding method and apparatus and image decoding method and apparatus, based on characteristics of regions of image
JP7025562B2 (ja) ビデオ符号化のための方法、及び装置
US8760366B2 (en) Method and system for remote computing
KR101805550B1 (ko) 프리젠테이션 가상화를 위한 화면 부호화 방법 및 서버
WO2017063168A1 (zh) 图像编码方法、装置以及图像处理设备
US20120218292A1 (en) System and method for multistage optimized jpeg output
WO2021147463A1 (zh) 视频处理方法、装置及电子设备
US11967345B2 (en) System and method for rendering key and fill video streams for video processing
US11445211B1 (en) Psychovisually optimized dithering for image and video encoding
US11765372B1 (en) Efficient coefficient film grain synthesis for codecs without film grain synthesis
US20130286285A1 (en) Method, apparatus and system for exchanging video data in parallel
JP2022512586A (ja) ハードウェアの符号化器及び復号化器へのhdrハードウェアプロセッサインラインの方法及び装置
US20240195990A1 (en) Residual-free palatte mode coding
CN113163212A (zh) 视频解码方法及装置、视频编码方法及装置、介质和设备
WO2022219202A1 (en) System and method for rendering key and fill video streams for video processing
CN113099232A (zh) 视频解码方法、装置、电子设备及计算机存储介质
TW201547257A (zh) 編碼方法、解碼方法、編解碼系統、編碼器與解碼器