KR101885008B1 - 스크린 컨텐츠 코딩을 위한 스크린 맵 및 표준 기반의 프로그레시브 코덱 - Google Patents
스크린 컨텐츠 코딩을 위한 스크린 맵 및 표준 기반의 프로그레시브 코덱 Download PDFInfo
- Publication number
- KR101885008B1 KR101885008B1 KR1020167000780A KR20167000780A KR101885008B1 KR 101885008 B1 KR101885008 B1 KR 101885008B1 KR 1020167000780 A KR1020167000780 A KR 1020167000780A KR 20167000780 A KR20167000780 A KR 20167000780A KR 101885008 B1 KR101885008 B1 KR 101885008B1
- Authority
- KR
- South Korea
- Prior art keywords
- screen
- content
- screen content
- coding unit
- encoding
- Prior art date
Links
- 230000000750 progressive effect Effects 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000033001 locomotion Effects 0.000 claims description 55
- 230000000694 effects Effects 0.000 claims description 7
- 238000003908 quality control method Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 11
- 238000007906 compression Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 10
- 239000003550 marker Substances 0.000 description 7
- 238000013139 quantization Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000003490 calendering Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000010454 slate Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/16—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/112—Selection of coding mode or of prediction mode according to a given display mode, e.g. for interlaced or progressive display mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/176—Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/34—Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23406—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
- H04N21/2353—Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/26603—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel for automatically generating descriptors from content, e.g. when it is not made available by its provider, using content analysis techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2320/00—Control of display operating conditions
- G09G2320/06—Adjustment of display parameters
- G09G2320/0613—The adjustment depending on the type of the information to be displayed
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2320/00—Control of display operating conditions
- G09G2320/10—Special adaptations of display systems for operation with variable images
- G09G2320/103—Detection of image changes, e.g. determination of an index representative of the image change
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/02—Networking aspects
- G09G2370/022—Centralised management of display operation, e.g. in a server instead of locally
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Discrete Mathematics (AREA)
- Library & Information Science (AREA)
- Computer Hardware Design (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
스크린 컨텐츠를 클라이언트 디바이스로 전달하기 위한 방법 및 시스템이 개시된다. 하나의 방법은, 특정 시간에 스크린에 포함되는 스크린 영역에 대응하는 복수의 코딩 단위의 각각에 대해, 코딩 단위에 포함되는 스크린 컨텐츠를, 복수의 컨텐츠 타입 - 컨텐츠 타입 중 적어도 하나는 스크린 이미지 타입을 포함함 - 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하는 것, 및 스크린 컨텐츠가 스크린 이미지 타입을 갖는다는 결정에 기초하여, 그 코딩 단위의 스크린 컨텐츠에 프로그레시브 표준 기반의 인코딩을 적용하는 것을 포함한다. 그 방법은 또한, 스크린 영역의 각각에 대한 인코딩된 스크린 컨텐츠를 클라이언트 디바이스로 송신하는 것을 포함한다.
Description
디스플레이 상에서 컴퓨팅 시스템에 의해 유저에게 디스플레이되는 정보를 묘사하는 스크린 컨텐츠, 또는 데이터는, 일반적으로, 다수의 상이한 타입의 컨텐츠를 포함한다. 이들은, 예를 들면, 텍스트 컨텐츠, 비디오 컨텐츠, 정적 이미지(예를 들면, 윈도우 또는 다른 GUI 엘리먼트의 디스플레이), 및 슬라이드 또는 다른 프리젠테이션 자료를 포함할 수 있다. 예를 들면, 두 개 이상의 원격 컴퓨팅 시스템이 공통 디스플레이를 공유할 수 있게 되어 두 명의 원격으로 위치된 개인이 동일한 스크린을 동시에 보는 것을 허용하도록, 또는 다르게는 화상 회의에서 한 스크린이 다수의 개인 사이에서 공유되도록, 갈수록, 스크린 컨텐츠가 원격으로 전달되고 있다. 스크린 컨텐츠가 원격으로 전달되기 때문에, 그리고 증가하는 스크린 해상도로 인해, 전송에서 대역폭을 보존하고 효율성을 향상시키기 위해, 이 컨텐츠를 그것의 본래의(native) 비트맵 사이즈 아래로 압축하는 것이 바람직하다.
스크린 컨텐츠와 같은 그래픽 데이터에 대해 다수의 압축 솔루션이 존재하지만, 이들 압축 솔루션은 가변적인 스크린 컨텐츠와 함께 사용하기에는 불충분하다. 예를 들면, 전통적인 동화상 전문가 그룹(Moving Picture Experts Group; MPEG) 코덱은 비디오 컨텐츠에 대해 만족스러운 압축을 제공하는데, 그 압축 솔루션이 순차적인 프레임 사이의 차이에 의존하기 때문이다. 또한, 많은 디바이스는, 이러한 인코딩된 데이터를 효율적으로 디코딩할 수 있는 MPEG 디코더를 통합하였다. 그러나, MPEG 인코딩은, 시간에 걸쳐 변할 수도 있음에도 불구하고 비디오가 아닌 컨텐츠(non-video content)에 대해 실질적인 데이터 압축을 제공하지 않으며, 따라서 스크린 컨텐츠에 대해, 특히 원격 스크린 디스플레이에 대해 통상적으로 사용되지 않는다.
스크린 컨텐츠를 원격 시스템에 전달하기 위한 방법은 비효율적일 수 있고, 많은 양의 데이터 통신을 요구할 수도 있고, 리소스 집약적일 수 있다. 따라서, 그래픽 컨텐츠를 포함하는, 원격 시스템과 연계하여 사용하기 위한 스크린 컨텐츠를 압축하고 효율적으로 표현하기 위한 전략은, 수신용 디바이스(receiving device) 상에서 실질적인 프로세싱이 발생하는 것을 필요로 하는데, 이것은 상당한 전력을 사용한다.
요약하면, 본 개시는 스크린 컨텐츠 인코딩을 위한 스크린 맵 및 프로그레시브 표준 기반의 코덱(progressive standards-based codec)에 관한 것이다. 스크린 맵 및 프로그레시브 표준 기반의 코덱은, 예를 들면 원격 디바이스로의 분배를 위한, 다양한 타입의 스크린 컨텐츠의 효율적인 분류를 허용한다. 프로그레시브 표준 기반의 코덱은 표준 준수 코드 스트림(standards-compliant code stream)을 수신용 디바이스로 전달하고, 따라서 그 원격 디바이스가, 수신용 디바이스에 포함되는 통상적인 디코딩 하드웨어를 활용하는 것을 허용한다. 프로그레시브 표준 기반의 코덱의 사용은 수신용 디바이스의 메인 중앙 프로세싱 유닛(central processing unit; CPU)으로부터 스크린 컨텐츠 디코딩의 오프로딩(offloading)을 허용한다.
본 개시의 하나의 예시적인 양태에서, 스크린 컨텐츠를 클라이언트 디바이스로 전달하는 방법이 개시된다. 그 방법은, 특정 시간에 스크린에 포함되는 스크린 영역에 대응하는 복수의 코딩 단위(coding unit)의 각각에 대해, 코딩 단위에 포함되는 스크린 컨텐츠를, 복수의 컨텐츠 타입 - 컨텐츠 타입 중 적어도 하나는 스크린 이미지 타입을 포함함 - 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하는 것, 및 스크린 컨텐츠가 스크린 이미지 타입을 갖는다는 결정에 기초하여, 그 코딩 단위의 스크린 컨텐츠에 프로그레시브 표준 기반의 인코딩을 적용하는 것을 포함한다. 그 방법은 또한, 스크린 영역의 각각에 대한 인코딩된 스크린 컨텐츠를 클라이언트 디바이스로 송신하는 것을 포함한다.
제2 양태에서, 시스템은 컴퓨팅 시스템 상에서 실행되며 복수의 코딩 단위의 각각에 대한 스크린 컨텐츠를, 복수의 컨텐츠 타입 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하도록 구성되는 분류 컴포넌트(classification component)를 포함하는데, 컨텐츠 타입 중 적어도 하나는 스크린 이미지 타입을 포함한다. 시스템은 또한, 컴퓨팅 시스템 상에서 실행되는 하나 이상의 인코딩 모듈을 또한 포함하는데, 하나 이상의 인코딩 모듈은 컨텐츠 타입에 기초하여 코딩 단위의 스크린 컨텐츠에 인코딩을 적용하도록 구성된다. 하나 이상의 인코딩 모듈은, 스크린 이미지 타입을 갖는 코딩 단위와 연관되는 스크린 컨텐츠에 대해 프로그레시브 표준 기반의 인코딩을 적용하도록 구성된다.
제3 양태에서, 컴퓨터 실행가능 명령어가 저장된 컴퓨터 저장 매체가 개시되는데, 컴퓨터 실행가능 명령어는, 실행시, 컴퓨팅 시스템으로 하여금 스크린 컨텐츠를 클라이언트 디바이스로 전달하는 방법을 수행하게 한다. 그 방법은, 특정 시간에 스크린에 포함되는 스크린 영역에 대응하는 복수의 코딩 단위의 각각에 대해, 코딩 단위에 포함되는 스크린 컨텐츠를, 복수의 컨텐츠 타입 - 복수의 컨텐츠 타입은 스크린 이미지 타입, 비디오 타입 및 텍스트 타입을 포함함 - 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하는 것, 및 스크린 컨텐츠가 스크린 이미지 타입을 갖는다는 결정에 기초하여, 그 코딩 단위의 스크린 컨텐츠에 프로그레시브 표준 기반의 인코딩을 적용하는 것을 포함한다. 복수의 코딩 단위의 각각에 대해, 그 방법은 또한, 스크린 컨텐츠가 비디오 타입을 갖는다는 결정에 기초하여, 그 코딩 단위의 스크린 컨텐츠에 표준 기반의 인코딩을 적용하는 것, 및 스크린 컨텐츠가 텍스트 타입을 갖는다는 결정에 기초하여, 그 코딩 단위의 스크린 컨텐츠에 텍스트 코덱을 적용하는 것을 포함한다. 그 방법은 또한, 복수의 코딩 단위의 각각과 연관되는 메타데이터를 포함하는 스크린 맵을 생성하는 것을 포함하는데, 메타데이터는 하나 이상의 품질 플래그, 슬라이드 플래그, 특수 효과 플래그, 모션 플래그, 공간 스킵 플래그(spatial skip flag), 및 시간 스킵 플래그(temporal skip flag)를 포함한다. 그 방법은 또한, 스크린 영역의 각각에 대한 인코딩된 스크린 컨텐츠를 클라이언트 디바이스로 송신하는 것을 포함한다.
이 개요는 하기 상세한 설명에서 추가로 설명되는 개념의 선택을 간소화된 형태로 소개하기 위해 제공된다. 이 개요는 청구되는 주제의 주요한 피쳐(feature) 또는 본질적인 피쳐를 식별하도록 의도된 것이 아니며, 또한 청구되는 주제의 범위를 한정하는 데 사용되도록 의도된 것도 아니다.
도 1은, 스크린 맵 및 스크린 컨텐츠 코딩에 사용가능한 표준 기반의 프로그레시브 코덱을 사용하여 원격 스크린 분배가 수행될 수 있는 시스템의 예시적인 개략적 배치(arrangement)를 예시한다;
도 2는, 예시적인 실시형태에 따른, 압축된 스크린 컨텐츠를 비트스트림의 형태로 원격 디바이스에 전달하기 위한 방법의 플로우차트를 예시한다;
도 3은, 원격 데스크탑 프로토콜 파이프라인 및 연관 프로그레시브 표준 기반의 인코딩 배치를 포함하는 원격 디바이스에 스크린 컨텐츠를 전달하기 위한 시스템의 논리적 블록도이다;
도 4는, 도 3에 예시된 바와 같은 시스템을 통해 스크린 컨텐츠의 진행을 예시하는 논리적 데이터 흐름도이다;
도 5는, 예시적인 실시형태에 따른, 스크린 컨텐츠를 코딩하는 데 보조하도록 사용가능한 스크린 맵을 생성하고 압축된 비트스트림을 원격 디바이스로 전달하기 위한 프로세스의 플로우차트이다;
도 6a는 스크린 맵의 일부를 형성하는 코딩 단위의 특성을 정의하도록 사용가능한 메타데이터의 예시적인 세트이다;
도 6b는 코딩 단위에 대한 스크린 컨텐츠의 움직임을 정의하도록 사용가능한 메타데이터의 예시적인 추가 세트이다.
도 7은, 예시적인 실시형태에 따른, 프로그레시브 표준 기반의 인코더 및 연관 스크린 맵의 동작을 예시하는 플로우차트이다;
도 8은, 예시적인 실시형태에 따른, 스크린 맵 프로세싱 컴포넌트의 동작을 예시하는 플로우차트이다;
도 9는 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 공간 스킵 프로세서의 블록도이다;
도 10은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 시간 스킵 프로세서의 블록도이다;
도 11은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 모션 프로세서의 블록도이다;
도 12는, 본 발명의 실시형태가 실시될 수도 있게 하는 컴퓨팅 디바이스의 예시적인 물리적 컴포넌트를 예시하는 블록도이다;
도 13a 및 도 13b는, 본 발명의 실시형태가 실시될 수도 있게 하는 모바일 컴퓨팅 디바이스의 단순화된 블록도이다; 그리고
도 14는, 본 발명의 실시형태가 실시될 수도 있는 분산형 컴퓨팅 시스템의 단순화된 블록도이다.
도 2는, 예시적인 실시형태에 따른, 압축된 스크린 컨텐츠를 비트스트림의 형태로 원격 디바이스에 전달하기 위한 방법의 플로우차트를 예시한다;
도 3은, 원격 데스크탑 프로토콜 파이프라인 및 연관 프로그레시브 표준 기반의 인코딩 배치를 포함하는 원격 디바이스에 스크린 컨텐츠를 전달하기 위한 시스템의 논리적 블록도이다;
도 4는, 도 3에 예시된 바와 같은 시스템을 통해 스크린 컨텐츠의 진행을 예시하는 논리적 데이터 흐름도이다;
도 5는, 예시적인 실시형태에 따른, 스크린 컨텐츠를 코딩하는 데 보조하도록 사용가능한 스크린 맵을 생성하고 압축된 비트스트림을 원격 디바이스로 전달하기 위한 프로세스의 플로우차트이다;
도 6a는 스크린 맵의 일부를 형성하는 코딩 단위의 특성을 정의하도록 사용가능한 메타데이터의 예시적인 세트이다;
도 6b는 코딩 단위에 대한 스크린 컨텐츠의 움직임을 정의하도록 사용가능한 메타데이터의 예시적인 추가 세트이다.
도 7은, 예시적인 실시형태에 따른, 프로그레시브 표준 기반의 인코더 및 연관 스크린 맵의 동작을 예시하는 플로우차트이다;
도 8은, 예시적인 실시형태에 따른, 스크린 맵 프로세싱 컴포넌트의 동작을 예시하는 플로우차트이다;
도 9는 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 공간 스킵 프로세서의 블록도이다;
도 10은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 시간 스킵 프로세서의 블록도이다;
도 11은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 모션 프로세서의 블록도이다;
도 12는, 본 발명의 실시형태가 실시될 수도 있게 하는 컴퓨팅 디바이스의 예시적인 물리적 컴포넌트를 예시하는 블록도이다;
도 13a 및 도 13b는, 본 발명의 실시형태가 실시될 수도 있게 하는 모바일 컴퓨팅 디바이스의 단순화된 블록도이다; 그리고
도 14는, 본 발명의 실시형태가 실시될 수도 있는 분산형 컴퓨팅 시스템의 단순화된 블록도이다.
상기에서 간략히 설명된 바와 같이, 본 발명의 실시형태는, 스크린 컨텐츠 인코딩을 위한 스크린 맵 및 프로그레시브 표준 기반의 코덱을 제공하도록 사용가능한 방법, 시스템, 및 컴퓨터 판독가능 매체에 관한 것이다. 스크린 맵 및 프로그레시브 표준 기반의 코덱은, 예를 들면 원격 디바이스로의 분배를 위한, 다양한 타입의 스크린 컨텐츠의 효율적인 분류를 허용한다.
원격 스크린 디스플레이 시스템에서의 몇몇 제한사항을 해결하기 위해, 미국 워싱턴 레드몬드(Redmond)의 마이크로소프트 코포레이션에 의해 원격 데스크탑 프로토콜(Remote Desktop Protocol; RDP)이 개발되었다. 이 프로토콜에서는, 스크린 프레임이 분석되어, 상이한 컨텐츠를 상이하게 분류한다. 예를 들면, 텍스트 데이터는 텍스트 코덱을 사용하여 식별되고 인코딩되며, 한편 이미지 데이터는 독점적(proprietary) 프로그레시브 코덱을 사용한다. 프로그레시브 코덱 및 텍스트 코덱은 MPEG 코덱보다 더 큰 압축 이득을 제공하여, 스크린 컨텐츠의 향상된 송신을 허용하게 된다. 이것은, MPEG 인코딩된 비디오 기반의 컨텐츠가 디스플레이를 위해 버퍼링될 때, 다른 방법에서는 경험하게 될 지체(lag) 없이, 물리적으로 멀리 있는 컴퓨팅 시스템의 유저 사이의 상호작용성(interactivity)을 허용한다.
상기에서 설명된 원격 데스크탑 프로토콜 배치가 스크린 컨텐츠의 압축 및 송신 특성을 향상시키지만, 그것은 단점을 갖는다. 특히, 원격 데스크탑 프로토콜을 사용하여 인코딩된 스크린 컨텐츠를 통상적으로 수신하는 컴퓨팅 디바이스는, 일반적으로, 수신용 디바이스의 메인 프로그래머블 회로(main programmable circuit)(예를 들면, 메인 중앙 프로세싱 유닛, 또는 CPU)가, 텍스트 코덱 및 프로그레시브 코덱을 사용하여 인코딩되어 있는 컨텐츠를 디코딩하는 것을 필요로 한다. 이것은, 실질적인 압축을 제공하며 상당한 양의 전력 소모 없이 빠르게 디코딩될 수 있는 무손실 코덱인 텍스트 코덱과 연관하여 유의한 성능 이슈가 아니지만; 그러나, 프로그레시브 코덱은 실질적인 프로세싱이 수신용 디바이스 상에서 발생하는 것을 필요로 하며, 이것은 상당한 전력을 사용한다. 또한, 통상적인 수신용 디바이스(예를 들면, 랩탑, 태블릿, 또는 스마트폰 디바이스)가 프로그레시브 코덱에 대해 특정한 하드웨어 디코더를 포함하지 않기 때문에, 이 계산적 복잡성은 수신용 디바이스의 메인 프로그래머블 회로로부터 바로 오프로드될 수 없다.
본 개시의 몇몇 실시형태와 연계하여 하기에서 추가적으로 논의되는 바와 같이, 스크린 맵은, 상이한 타입의 컨텐츠를 포함하는 것으로서, 특정 시간에서의 스크린의 상이한 영역의 분류를 허용하는데, 그 상이한 영역은 코딩 단위로 칭해진다. 컨텐츠 타입은 그 코딩 단위에 포함되는 스크린 컨텐츠에 대한 인코딩을 정의하기 위해 사용될 수 있다. 현재, 프로그레시브 표준 기반의 코덱은 표준 준수 코드 스트림을 수신용 디바이스로 전달하고, 따라서 그 원격 디바이스가, 수신용 디바이스에 포함되는 통상적인 디코딩 하드웨어를 활용하는 것을 허용한다. 프로그레시브 표준 기반의 코덱의 사용은 수신용 디바이스의 메인 중앙 프로세싱 유닛(CPU)으로부터 스크린 컨텐츠 디코딩의 오프로딩(offloading)을 허용하고, 프로그레시브 인코딩된 스크린 컨텐츠의 압축비를 향상시킨다. 다른 이점들 중에서, 이것은 수신용 디바이스의 전력 사용량을 향상시킨다.
도 1은, 스크린 컨텐츠 코딩에 사용가능한 스크린 맵 및 표준 기반의 프로그레시브 코덱을 사용하여 원격 스크린 분배가 수행될 수 있는 시스템(100)의 예시적인 개략적 배치를 예시한다. 예시된 바와 같이, 시스템(100)은 컴퓨팅 디바이스(102)를 포함하는데, 컴퓨팅 디바이스(102)는 프로그래머블 회로(104), 예컨대 CPU를 포함한다. 컴퓨팅 디바이스(102)는, 프로그래머블 회로(104)에 의해 실행가능한 컴퓨팅 명령어를 저장하도록 구성된 메모리(106)를 더 포함한다. 컴퓨팅 디바이스(102)로서의 사용에 적합한 예시적인 타입의 컴퓨팅 시스템은 도 12 내지 도 14와 연계하여 하기에서 논의된다.
일반적으로, 메모리(106)는 원격 데스크탑 서버 컴포넌트(108) 및 비디오 인코더(110)를 포함한다. 원격 데스크탑 서버 컴포넌트(108)는, 일반적으로, 원격 디바이스(120)로서 예시되는 원격 컴퓨팅 디바이스 상의 컴퓨팅 디바이스(102)의 로컬 디스플레이(112) 상에서 제시되는 스크린 컨텐츠를 복제하도록 구성된다. 몇몇 실시형태에서, 원격 데스크탑 서버 컴포넌트(108)는, 미국 워싱턴 레드몬드의 마이크로소프트 코포레이션에 의해 정의되는 원격 데스크탑 프로토콜(RDP)과 호환가능한 컨텐츠를 생성한다.
비디오 인코더(110)는, 임의의 수의 상이한 인코딩 방식(scheme), 또는 코덱을 컨텐츠에 적용하도록 구성될 수 있고, 그 결과 컨텐츠는 원격 디바이스(120)로의 송신을 위해 압축된다. 예시적인 실시형태에서, 비디오 인코더(110)는 MPEGE 기반의 코덱과 같은 표준 기반의 코덱을 적용할 수 있다. 특정 예에서, 비디오 인코더(110)는 H.264 코덱과 같은 하나 이상의 코덱을 활용하는 MPEG 인코더일 수 있다. 다른 타입의 표준 기반의 인코딩 방식 또는 코덱이 또한 사용될 수 있을 것이다.
도 1에서 예시된 바와 같이, 인코딩된 스크린 컨텐츠는 컴퓨팅 시스템(102)의 통신 인터페이스(114)에 의해 원격 시스템(120)으로 송신될 수 있는데, 컴퓨팅 시스템(102)은 인코딩된 스크린 컨텐츠를 통신 접속(116)(예를 들면, 인터넷)을 통해 원격 시스템(120)의 통신 인터페이스(134)로 제공한다. 일반적으로, 그리고 하기에서 논의되는 바와 같이, 통신 접속(116)은, 예를 들면, 통신 접속(116)을 형성하는 네트워크 상에서 발생하는 추가적인 트래픽에 기인하여, 예측불가능한 가용 대역폭을 가질 수도 있다. 따라서, 인코딩된 스크린 컨텐츠를 송신하는 기존의 시스템은 프로그레시브 방식을 사용하여 그렇게 하는데, 프로그레시브 방식에서, 이러한 스크린 컨텐츠의 초기 송신은 그 스크린 컨텐츠의 저품질(예를 들면, 저해상도) 버전을 제공하며, 그 초기 송신은 시간에 걸쳐 프로그레시브하게 향상된다.
본 개시의 맥락에서, 몇몇 실시형태에서, 원격 디바이스(120)는 메인 프로그래머블 회로(124), 예컨대 CPU, 및 특수 목적의 프로그래머블 회로(125)를 포함한다. 예시적인 실시형태에서, 특수 목적의 프로그래머블 회로(125)는 표준 기반의 디코더, 예컨대 특정 표준(예를 들면, H.264)을 갖는 컨텐츠를 인코딩하도록 또는 디코딩하도록 디자인되는 MPEG 디코더이다. 특정 실시형태에서, 원격 디바이스(120)는 컴퓨팅 디바이스(102)에 로컬하거나 또는 컴퓨팅 디바이스(102)와는 원격인 클라이언트 디바이스에 대응하며, 원격 디바이스(120)는 스크린 컨텐츠를 수신하도록 사용가능한 클라이언트 디바이스로서 작용한다.
또한, 원격 디바이스는 메모리(126) 및 디스플레이(128)를 포함한다. 메모리(126)는 원격 데스크탑 클라이언트(130) 및 디스플레이 버퍼(132)를 포함한다. 원격 데스크탑 클라이언트(130)는, 예를 들면, 컴퓨팅 디바이스(102)로부터 수신되는 스크린 컨텐츠를 수신하여 디코딩하도록 구성되는 소프트웨어 컴포넌트일 수 있다. 몇몇 실시형태에서, 원격 데스크탑 클라이언트(130)는 디스플레이(128) 상에 원격 스크린을 제시하기 위한 스크린 컨텐츠를 수신하여 프로세싱하도록 구성된다. 스크린 컨텐츠는, 몇몇 실시형태에서, 미국 워싱턴 레드몬드의 마이크로소프트 코포레이션에 의해 정의되는 원격 데스크탑 프로토콜에 따라 송신될 수도 있다. 디스플레이 버퍼(132)는 디스플레이(128) 상에 디스플레이될 스크린 컨텐츠의 현재의 사본을, 예를 들면, 업데이트가 필요할 때 영역이 선택되어 교체될 수 있는 비트맵으로, 메모리에 저장한다.
하기에 추가적으로 논의되는 바와 같이, 기존의 시스템이 스크린 컨텐츠의 프로그레시브 향상을 위해 독점적 압축 코덱을 활용하지만, 본 개시의 맥락에서는, 이러한 프로그레시브 인코딩에 대해, MPEG 기반의 코덱과 같은 표준 기반의 코덱이 사용될 수 있다. 스크린 맵은, 스크린의 영역의 다양한 특성, 예컨대 향상에 대한 그 이용가능성뿐만 아니라, 특정 이미지 전환, 모션(및 이러한 모션의 정도), 또는 다른 특수 효과 또는 프리젠테이션 특성의 존재를 정의하는 메타데이터를 통합한다. 따라서, 표준 기반의 코덱을 사용하는 것은, 수신용 디바이스, 예컨대 디바이스(120)가, 메인 프로그래머블 회로(124)의 사용을 필요로 하는 대신, 일반적으로 계산적으로 복잡한 디코딩 프로세스를 특수 목적의 프로그래머블 회로(125)로 오프로드하는 것을 허용한다. 이미지의 디코딩이 계산 집약적이기 때문에, 이 작업을 특수 목적의 프로그래머블 회로(125)에 오프로드하는 것이 유익하지만; 다른 타입의 컨텐츠, 예컨대 텍스트 컨텐츠는 간단한(계산 집약적이지 않은) 코덱을 사용하여 인코딩될 수 있고, 따라서 메인 프로그래머블 회로(124)를 사용하여 상대적으로 효율적인 방식으로 디코딩될 수 있다는 것을 유의한다.
이제 도 2를 참조하면, 예시적인 실시형태에 따른, 스크린 컨텐츠를 원격 디바이스로 전달하기 위한 방법(200)의 플로우차트가 도시된다. 그 방법(200)은, 예를 들면, 다양한 타입의 컴퓨팅 디바이스 중 임의의 것, 예컨대 도 1의 컴퓨팅 디바이스(102), 또는 도 12 내지 도 14의 컴퓨팅 디바이스에 의해 수행될 수 있다.
도시된 실시형태에서, 단계 202에서, 스크린(예를 들면, 특정 시점에서의 현재의 디스플레이)이 복수의 스크린 세그먼트로 분할된다. 스크린 컨텐츠의 서브셋 또는 코딩 단위를 정의하는 이들 스크린 세그먼트는, 다수의 타입의 인코딩 프로세스 중 하나를 사용하여, 개별적으로 분석되고, 분류되고, 그리고 인코딩될 수 있다. 예시적인 실시형태에서, 컴퓨팅 디바이스는, RDP 애플리케이션을 실행할 때, 분할된 스크린을 분석할 수 있다.
예시적인 실시형태에서, 스크린이 분할되는 세그먼트의 수는 변할 수도 있다는 것을 유의한다. 하나의 예시적인 실시형태, 스크린은 16×16 어레이의 스크린 영역으로 분할될 수 있는데, 그 각각은 코딩 단위에 대응한다. 추가의 예시적인 실시형태에서는, 64×64 어레이가 사용될 수 있을 것이다. 어느 정도는, 각각의 코딩 단위의 사이즈는 사용되는 세그먼트의 수뿐만 아니라, 스크린 컨텐츠가 프로세싱되어야 하는 디스플레이의 동작 해상도의 함수일 것이다.
동작 204에서, 코딩 단위의 각각은 분석되고, 그 컨텐츠는 분류된다. 예시적인 실시형태에서, 특정 시간에서 한 영역과 연관되는 스크린 컨텐츠를 포함하는 각각의 코딩 단위는, 그것이 이미지(예를 들면, 프리젠테이션) 데이터를 포함하는지, 비디오 데이터를 포함하는지, 또는 텍스트 데이터를 포함하는지의 여부를 결정하도록 평가될 수 있다. 그 다음, 코딩 단위는 그에 따라 분류될 수 있어서, 스크린 컨텐츠의 대응하는 하위 부분(sub-portion)이 타입별로 분류되고, 선택적으로 캐싱되는 것을 허용하게 된다. 그 중에서도 특히, 스크린 컨텐츠의 상이한 부분은 상이하게 분류될 수 있다. 코딩 단위의 집합체(collection)로부터, 동작 206에서 스크린 맵이 생성되는데, 스크린 맵은, 특정 스크린에 대한 코딩 단위의 논리적 배치 및 분류를 정의하는 것에 대응한다. 스크린 맵은, 각각의 코딩 단위에 대해, 그 코딩 단위와 연관되는 스크린 컨텐츠 및 코딩 단위와 연관되는 스크린 메타데이터를 포함할 수 있는데, 스크린 메타데이터는 스크린 컨텐츠의 분류에 관한 정보뿐만 아니라, 그 스크린 컨텐츠가 어떻게 변경되었는지 또는 어떻게 변경되고 있는지에 관한 정보를 포함할 수 있다. 스크린 맵 내에서 사용가능한 예시적인 메타데이터는, 하기에서 추가적으로 상세히 논의되는 도 6a 및 도 6b에서 예시된다.
각각의 코딩 단위와 연관되는 스크린 컨텐츠의 분류에 기초하여, 동작 208에서, 그 코딩 단위에 대한 스크린 컨텐츠는 다양한 타입의 스크린 컨텐츠와 연관되는 코덱에 따라 인코딩된다. 예를 들면, 이미지 데이터에 대해 프로그레시브 표준 기반의(예를 들면, MPEG 기반의) 코덱이 사용될 수 있을 것이고, 한편, 비디오 데이터에 대해 간단한(straightforward) 표준 기반의 코덱이 사용될 수 있을 것이고 그리고 텍스트 데이터에 대해 텍스트 코덱이 사용될 수 있을 것이다. 다른 타입의 분류와 연관하여, 다른 코덱이 또한 사용될 수 있을 것이다. 그 다음, 인코딩된 스크린 컨텐츠는, 동작 210에서, 인코딩된 코딩 단위의 일부로서, 원격 디바이스에 있는 하나 이상의 의도된 수신측으로 송신된다.
상기에서 언급된 바와 같이, 인코딩 프로세스의 일부로서, 원격 시스템으로 빨리 송신될 수 있는, 특정 코딩 단위의 저품질의 인코딩된 버전이 준비될 수도 있다. 이것은, 예를 들면, 관측된 대역폭 제한에 기초한, 그리고 코딩 단위가 원격 시스템으로 빨리 송신될 수 있다는 것을 보장하기 위한 경우일 수도 있다. 따라서, 동작 212는, 스크린 맵 내의 코딩 단위가 향상될 수 있는지의 여부를 결정한다. 이 평가는, 예를 들면, 코딩 단위와 연관되는 메타데이터에 기초하여 이루어질 수 있다. 예시적인 실시형태에서, 인코딩된 스크린 컨텐츠의 품질이 최고 레벨에 있는지의 여부, 또는 몇몇 향상이 이용가능한지의 여부를 검출하기 위해, 코딩 단위와 연관되는 스크린 맵의 일부를 정의하는 메타데이터에 포함되는 품질 비트가 검사될 수 있다. 향상이 이용가능하다면, 동작은 인코딩 동작(208)으로 리턴하는데, 인코딩 동작(208)은 코딩 단위의 스크린 컨텐츠의 더 높은 품질의 추가적인 인코딩을 수행하며, 고품질의 버전은 동작 210에서 비트스트림으로서 후속하여 송신된다. 동작 210은 또한, 예를 들면, 원격 시스템이 인코딩의 타입 중에서 적절하고 대응하는 프로세싱 시스템으로 라우팅하기 위한 것을 식별하는 것 및 업데이트될 디스플레이의 특정 영역을 결정하는 것을 허용하기 위해, 영역 정보의 원격 시스템으로의 송신을 포함할 수 있다. 코딩 단위 중 어떤 것도 그 품질이 향상될 수 있는 스크린 컨텐츠를 가지지 않으면, 그 특정 프레임과 연관하는 동작은 완료된다. 이와 같이, 동작적 흐름은, 후속 인코딩을 위해 다음 프레임의 컨텐츠가 분석되고 분류되는 동작 204로 리턴한다.
도 3은, 원격 데스크탑 프로토콜 파이프라인 및 연관 프로그레시브 표준 기반의 인코딩 배치를 포함하는 원격 디바이스에 스크린 컨텐츠를 전달하기 위한 시스템(300)의 논리적 블록도이다. 예를 들면, 시스템(300)은, 예컨대 RDP 및 연관 표준 기반의 인코더(및 코덱) 예컨대 MPEG를 사용하는 것에 의해, 스크린 데이터를 원격 시스템으로 전달하기 위해 사용되는 컴퓨팅 시스템에서 구현될 수 있다.
도 3에서 예시되는 바와 같이, 스크린 프레임은 캡쳐 컴포넌트(302)를 통해 캡쳐되어, RDP 파이프라인(304)으로 제공된다. 일반적으로, RDP 파이프라인(304)은, 하나 이상의 연관 인코더에 의한 사용을 위해, 분류되고 RDP 준수 스크린 데이터 및 연관 스크린 맵을 출력한다. 도시되는 실시형태에서, RDP 파이프라인(304)은 차이/델타 프로세서(306), 캐시 프로세서(308), 및 모션 프로세서(310)를 포함한다. 차이/델타 프로세서(306)는, 일반적으로, 캡쳐된 스크린 컨텐츠를 분석하고, 특히, 각각의 코딩 단위에 대한 현재의 프레임과 이전의 프레임 사이에 차이가 존재하는지의 여부를 결정한다. 캐시 프로세서(308)는, 일반적으로, 동일한 컨텐츠가 캐시 딕셔너리(cache dictionary)에 이전에 캐싱되었는지, 또는 다르게는 송신을 위해 재인코딩될 필요가 없는지(즉, 원격 디바이스에 있는 스크린 버퍼에 이미 존재함)의 여부를 결정한다. 모션 프로세서(310)는, 코딩 단위에서 또는 코딩 단위 중에서 특정 오브젝트에 관해 글로벌 모션이 발생했는지의 여부를 결정하고, 이러한 실시형태에서, 스크린 컨텐츠에서 묘사되는 특정 오브젝트의 수직 및 수평 움직임을 검출할 수 있어서, 그 결과 이동된 오브젝트는 재인코딩되어 원격 시스템으로 전송될 필요는 없고, 대신 그 위치에 관해 업데이트될 필요가 있다.
프로세서(306-310)에 후속하여, 상기에서 논의된 기준(예를 들면, 어떠한 차이도 발생하지 않음, 이전의 캐싱, 또는 기존 오브젝트만의 움직임)에 입각하여 인코딩 및/또는 송신으로부터 배제될 수 없는 코딩 단위의 스크린 컨텐츠는 분류 컴포넌트(312)로 제공되는데, 분류 컴포넌트(312)는 코딩 단위를 비디오 타입(314), 이미지 타입(316), 또는 텍스트 타입(318)을 갖는 것으로 분류한다. 예시된 바와 같이, RDP 파이프라인(304)은 코딩 단위로부터의 다양한 타입의 분류된 스크린 컨텐츠를 인코더로 통과시키는데, 각각의 코덱은 상이한 코덱에 기초한 인코딩을 제공한다. 도시된 실시형태에서, 비디오 타입(314)을 갖는 코딩 단위는 MPEG 인코더(320)로 전달되고, 이미지 타입(316)을 갖는 코딩 단위는 프로그레시브 MPEG 인코더(322)로 전달되고, 그리고 텍스트 타입(318)의 스크린 컨텐츠를 갖는 코딩 단위는, 텍스트 코덱을 적용하는 텍스트 인코더(324)로 전달된다. 각각의 인코더의 출력은 RDP 파이프라인(304)으로 리턴되는데, RDP 파이프라인(304)은 코딩 단위의 각각으로부터의 인코딩된 스크린 데이터를 멀티플렉서 및 출력 컴포넌트(326)로 라우팅하고, 멀티플렉서 및 출력 컴포넌트(326)는 모든 비트스트림을 정렬하고, 디스플레이를 위해 코딩 단위를, 비트스트림으로서, 원격 시스템으로 송신한다. 예시적인 실시형태에서, 인코딩된(압축된) 스크린 데이터는 또한, 예를 들면, 히스토리 딕셔너리 또는 다른 타입의 스크린 데이터 캐싱 배치에서 캐싱될 수 있다.
몇몇 실시형태에서, 출력 컴포넌트(326)는 원격 시스템으로, 비트스트림과 나란히 또는 비트스트림과 통합된 영역 정보를 전달하는데, 이것은 원격 시스템(예를 들면, 클라이언트 디바이스)이, 영역 중에서, 업데이트된 그리고 인코딩된 스크린 컨텐츠의 비트스트림으로 패치될 영역을 구별하는 것을 허용한다. 이것은, 예를 들면, MPEG 인코더(320, 322)로부터의 코딩된 직사각형 및 텍스트 인코더(324)로부터의 코딩된 직사각형을 포함할 수 있다.
이제 도 4를 참조하면, 예시적인 실시형태에 따른, 도 3에 예시된 바와 같은 시스템을 통해 스크린 컨텐츠의 진행을 예시하는 논리적 데이터 흐름도(400)가 도시되어 있다. 논리적 데이터 흐름도(400)는, 프로그레시브 표준 기반의(예를 들면, MPEG 기반의) 인코딩을 필요로 하는 코딩 단위와 함께 사용하기 위해 묘사되며, 그 자체로 도 3의 시스템의 일부를 통한 데이터 흐름을 나타낼 수 있다.
데이터 흐름도(400)에서 예시되는 바와 같이, RDP 파이프라인(304)은, 스크린 맵 생성기(404)와 코덱 프리프로세서(codec pre-processor; 406)를 조화시키는(coordinate) RDP 스케줄러(402)를 포함한다. RDP 파이프라인(304)은 또한 코덱 포스트프로세서(codec post-processor; 408)를 포함한다. 스크린 맵 생성기(404)는 인코더(322)에 제공될 수 있는 스크린 맵 데이터(410)를 생성한다. 스크린 맵 데이터(410), 예를 들면, 인코딩을 필요로 하는 스크린의 영역뿐만 아니라, 제공될 인코딩의 타입을 정의하는 데이터를 포함하는, 하나 이상의 코딩 단위와 연관되는 데이터일 수 있다. 코덱 프리프로세서(406)는 미가공(raw) 데이터(412)를 인코더(322)로 출력한다. 미가공 데이터(412)의 일부로서, 코덱 프리프로세서(406)는 스크린 미가공 프레임(screen raw frame)(스크린 백그라운드 또는 이미지에 대응함)을 전송하고, 비트 레이트를 설정하고, 그리고 낮은 복잡도 플래그 및 색 변환 설정을 선택적으로 설정한다.
인코더(322)는, 도시된 실시형태에서, 스크린 맵 데이터(410) 및 스크린 미가공 데이터(412)를 수신하고 스크린 컨텐츠와 연관되는 메타데이터(414)뿐만 아니라 인코딩된 스트림(416)을 생성하는 MPEG 프로그레시브 코덱(418)을 포함한다. 상기에서 언급된 바와 같이, 인코더(322)는 임의의 타입의 프로그레시브 표준 기반의 코덱, 예컨대 MPEG AVC/H.264 또는 MPEG HEVC/H.265와 같은 프로그레시브 MPEG 인코딩을 미가공 데이터(412)에 적용할 수 있다.
스크린 프레임의 코딩 단위의 인코딩을 완료한 이후, 메타데이터, 예컨대 RDP 파이프라인(304)이 스크린 컨텐츠를 업데이트하는 것을 보조하는 데 사용가능한 양자화 파라미터가 코덱 포스트프로세서(408)로 되전송된다(sent back). 인코딩된 비트스트림(416)은 또한 코덱 포스트프로세서(408)로 전송되는데, 코덱 포스트프로세서(408)는, 원격 디바이스로의 전달을 위해, 인코딩된 비트스트림을 RDP 스케줄러(402)로 포워딩할 것이다. 하나 이상의 영역의 품질이, 사람 눈이 이미지에서의 왜곡을 검출할 수 없게 되는 임계치에 도달하면, 코덱 포스트프로세서(408)는 캡쳐 컴포넌트(302)(예를 들면, 스크린 또는 디스플레이 캡쳐)에게 미가공 데이터 전송을 정지할 것을 통지할 수 있다.
이제 도 5를 참조하면, 예시적인 실시형태에 따른, 원격 디바이스로 전달될 수 있는 압축된 비트스트림으로 스크린 컨텐츠를 인코딩하는 것을 보조하도록 사용가능한 스크린 맵을 생성하기 위한 프로세스(500)의 플로우차트가 도시되어 있다. 프로세스(500)는, 예시적인 실시형태에서, 스크린과 연관하여 도 3의 시스템(300)에 의해 이루어진 결정의 세트를 나타낼 수 있다.
도시된 실시형태에서, 차이/델타 프로세서(306)는, 현재의 프레임과 이전의 프레임을 비교할 때 임의의 변경이 발생하였는지를 결정한다. 변경이 존재하지 않으면, 차이/델타 프로세서(306)는, 변경이 존재하지 않는다는 것을 결정하고("예" 분기, 이로써, 차이/델타 프로세서(306)가 동일한 이전의 프레임을 검출한 것을 나타냄), 시간 스킵 마커(temporal skip marker; 502)를 생성한다. 그러나, 변경이 존재하면, 차이/델타 프로세서(306)는, 변경이 발생했으며 따라서 인코딩이 스킵될 수 없다는 것을 결정한다; 캐시 프로세서(308)로의 "아니오" 분기가 취해진다. 캐시 프로세서(308)는, 캐시 딕셔너리가 현재의 프레임에 컨텐츠를 포함하는지를 결정한다; 스크린 컨텐츠가 캐싱되어 있으면, 캐시 프로세서(308)는 "예"로 분기하고 공간 스킵 마커(spatial skip marker; 504)를 생성한다. 스크린 컨텐츠가 캐시 딕셔너리에 캐싱되어 있지 않으면, 캐시 프로세서는 모션 프로세서(310)로의 "아니오"로 분기한다.
도시된 실시형태에서, 모션 프로세서(310)는, 이전의 스크린 프레임 및 캐시 프로세서로부터의 출력 스크린 프레임에 기초하여 모션 벡터 및 모션 마커를 생성한다. 모션 프로세서(310)는 모션 마커("예" 분기)를 생성하거나, 또는 분류 컴포넌트(312)로 전이한다. 또한, 글로벌 모션 벡터가 모션 프로세서(310)에 의해 생성된다.
분류 컴포넌트(312)는 텍스트 검출 동작(510)을 포함하는데, 텍스트 검출 동작(510)은, 스크린 컨텐츠에 텍스트가 존재하는지의 여부를 검출하고; 만약 그렇다면, 공간 스킵 마커(512)가 생성된다. 비디오 검출 동작(514)은, 스크린 컨텐츠에 비디오가 존재하는지의 여부를 검출하고; 만약 그렇다면, 추가적인 공간 스킵 마커(516)가 생성된다. 최종적으로, 전체적인 스크린 데이터는 스크린 맵 생성 컴포넌트(518)로 전달되고, 공간 스킵 마커 및 모션 벡터 전체도 스크린 맵 생성 컴포넌트(518)로 또한 전달된다. 스크린 맵 생성 컴포넌트(518)는 다양한 마커(502, 504, 506, 512, 516)를 수집하고, 다양한 타입의 컨텐츠를 포함하는 특정 코딩 단위를 나타내는 스크린 맵을 생성한다.
도 6a는 스크린 맵의 일부를 형성하는 코딩 단위의 특성을 정의하도록 사용가능한 메타데이터(600)의 예시적인 세트이다. 메타데이터(600)는, 몇몇 실시형태에서, 복수의 코딩 단위의 각각에 대한 스크린 맵을 생성함에 있어서의 도 5의 프로세스(500)의 결과이다. 일반적으로, 스크린 맵은, 스크린 컨텐츠의 타입(예를 들면, 이미지, 비디오, 또는 텍스트)뿐만 아니라, 코딩 단위의 다양한 다른 특성이 나타내어지도록, 복수의 코딩 단위의 각각과 연관되는 메타데이터의 집합체에 대응한다.
도시된 실시형태에서, 8비트 영역은, 본원에서는 MPEG AVC/H.264에서의 매크로블록으로 또한 칭해지는 코딩 단위에 대해 사용되는 플래그를 정의한다. 도시된 실시형태에서, 시간 스킵 플래그(601)는 시간 스킵의 존재를 정의하는데, 이전의 프레임 이후에 어떠한 변경도 발생하지 않았음을 의미한다. 공간 스킵 플래그(602)는, 예를 들면, 도 5의 프로세스(500)를 사용하여 결정되는 바와 같은 그 코딩 단위에 대해 공간 스킵이 검출되었는지의 여부를 식별한다. 모션 플래그는 코딩 단위 내에 모션이 존재하는지의 여부를 식별하고, 특수 효과 플래그(604)는 코딩 단위에 특수 효과 모션, 예컨대 페이드인/페이드 아웃, 패스트 스크롤링, 또는 몇몇 다른 공지의 모션 효과가 존재하는지의 여부를 식별한다. 슬라이드 플래그(605)는, 현재의 컨텐츠가, 예컨대 프리젠테이션 애플리케이션(Microsoft PowerPoint®)에서, 또는 이미지 기반의 포터블 다큐먼트 포맷(Portable Document Format; PDF)에서, 슬라이드 기반의 컨텐츠인지의 여부를 나타낸다. 품질 비트(606a-606b)는 프로그레시브 인코딩 및 스크린 컨텐츠의 전달에서 사용할 품질의 레벨에 대한 4 레벨의 품질 제어를 제공한다. 비트(607)로서 도시되는 하나 이상의 비트는 미래의 사용을 위해 예약될(reserved) 수 있다.
도 6b에서 예시되는 바와 같이, 코딩 단위에 대한 스크린 컨텐츠의 움직임을 정의하도록 사용가능한 메타데이터(620)의 예시적인 추가 세트가 도시된다. 도시된 실시형태에서, 메타데이터(620)는 모션 플래그(603)가 설정될 때 사용될 모션 벡터를 정의하고, 모션 벡터의 수직 및 수평 컴포넌트의 각각에 대해 16비트 값을 포함한다.
도 7은, 예시적인 실시형태에 따른, 연관 스크린 맵을 사용하는 프로그레시브 표준 기반의 인코더의 동작 컴포넌트(700)를 예시하는 플로우차트이다. 예시된 바와 같이, (도 4로부터의) 스크린 미가공 데이터(412) 및 스크린 맵 메타데이터(410)가 스크린 맵 프로세싱 컴포넌트(702)에 제공된다. 스크린 맵 프로세싱 컴포넌트(702)는, 인코딩 모드 결정 블록(704)과 함께, 특정 스크린 컨텐츠의 프로세싱을 스킵할지를 결정한다. 모드 결정 블록(704)은, 하기에서 추가적으로 상세히 논의되는 인트라 매크로블록 프로세싱 컴포넌트(706) 및 인터 매크로블록 프로세싱 컴포넌트(708)를 포함한다. 그러나, 스크린 맵 프로세싱 컴포넌트(702) 또는 모드 결정 블록(704)로부터, 변환 & 양자화 컴포넌트(710)에 도달되면, 몇몇 경우에서 변환 & 양자화 컴포넌트(710)는 코딩된 블록 패턴(coded block pattern; CBP)을 마킹하고 추가적인 프로세싱을 위해 코딩 단위를 준비한다. 그러나, 그 모드가 완전히 스킵되는 경우, 모드 결정 블록(704)은 완전히 바이패스되고, 따라서 어떤 변환 또는 양자화도 수행되지 않는 것이 가능하게 된다.
특정 스크린 맵에 대해 모드 결정 블록(704)이 진입해야 한다는 것을 스크린 맵 프로세싱 컴포넌트(702)가 결정하는 경우, 인트라 매크로블록 프로세싱 컴포넌트(706) 및 인터 매크로블록 프로세싱 컴포넌트(708) 중 하나 또는 둘 다가 실행되고, 기존의 인코딩 명세(specification), 예를 들면 MPEG 코덱에서 이용가능한 바와 같은 모드 결정을 생성하기 위해 사용된다. 일반적으로, 모드 결정 블록(704)은 컴포넌트(706, 708) 중에서부터 선택되고, 모드 결정 블록(704)은 스크린 맵 메타데이터(600, 620)에서 식별되는 플래그를 사용할 수 있고; 프레임 타입 또는 레이트 왜곡 결과는 모드를 선택하는 데 또한 사용될 수 있다.
컴포넌트(706, 708) 중 하나가 모드 결정 블록(704)으로부터 실행된 이후, 변환 & 양자화 컴포넌트(710)는 프로세싱된 스크린 컨텐츠에 대한 양자화된 계수를 생성한다. 역 양자화 및 변환 컴포넌트(712)는 예측(714)을 통해 프레임을 재구축하고, 한편 적응 필터(716)는, 역 양자화 및 변환 컴포넌트(712)로부터의 예측(714)을 사용하여, 프레임의 재구축을 평활화한다. 그 다음, 모션 추정의 목적을 위해 화상 참조 캐시(718)가 업데이트되는데, 모션 추정은, 그 다음, 인터 매크로블록 프로세싱 컴포넌트(708)로 제공된다. 동시에 변환 & 양자화 컴포넌트(710)로부터, 엔트로피 인코더(720)가 양자화된 계수를 수신하고, 인코딩 비트스트림을 생성한다.
도 8은, 예시적인 실시형태에 따른, 스크린 맵 프로세싱 컴포넌트(702)의 동작을 예시하는 플로우차트이다. 스크린 맵 프로세싱 컴포넌트(702)는, 도시된 실시형태에서, 입력 스크린 맵(예를 들면, 스크린 맵 메타데이터(410), 이것은 존재하는 코딩 단위의 각각에 대한 집성된(aggregated) 메타데이터(600)를 포함할 수 있음)을 분석하는 스크린 맵 분석기(802)를 포함한다. 이 분석의 결과에 기초하여, (예를 들면, 메타데이터(600)의 공간 스킵 플래그(602)에 기초한 동작 804에서) 인코딩 매크로블록이 공간 스킵 마커의 한 타입이면, 공간 스킵 프로세서(806)는 매크로 블록을 프로세싱하도록 호출되고, 공간 스킵 프로세서(806)의 출력은 레이트 왜곡 결정(809)으로 전달된다. (동작 808에서) 공간 스킵 프로세서(806)의 결과가 미리 결정된 임계치보다 더 나으면, 그 결과는 변환 & 양자화 컴포넌트(710)로 포워딩되고; 그렇지 않다면, 정규 매크로블록 인코딩 프로세싱 컴포넌트(예를 들면, 모드 결정(810))가 호출된다.
스크린 맵에서 나타내어지는 시간 스킵 및 모션 결정에 대해서 유사한 프로세스가 존재한다. 특히, 시각적 스킵의 경우, 스크린 맵 분석기(802)는, 동작 812에 기초하여, 매크로블록을 프로세싱하여 레이트 왜곡 결정(809)으로 출력하는 시간 스킵 프로세서(814)를 호출할 것이다. 마찬가지로, 모션 결정의 경우, 스크린 맵 분석기(802)는, 메타데이터(600)에서의 모션 플래그(603)를 평가하는 동작 816에 기초하여, 모션 프로세서(818)를 호출할 것인데, 모션 프로세서(818)는 또한 매크로블록을 프로세싱하여 레이트 왜곡 결정(809)으로 출력한다.
코딩 단위의 스크린 컨텐츠의 인코딩을 위한 특정 모드를 선택하기 위해, 메타데이터 플래그 중 어느 것도 설정되지 않는 정도까지, 모드 결정(810)이 입력된다. 모드 결정(810)은 코딩 영역의 타입을 결정하는 법 및 MPEG 인코딩 방식(예를 들면, 전통적인 MPEG AVC/H.264 인코딩)에서 특정 프레임을 가장 잘 인코딩하는 법에 관한 표준화된 결정의 세트를 포함한다. 본 개시에 따르면, 모드 결정(810)의 출력은 각각의 코딩 단위의 표준 인코딩이다.
모드 결정(810)과 연관하여, 향상된 인코딩 및 압축을 허용하기 위해 추가적인 모드 결정이 구현될 수 있을 것이지만; 그러나, 도시된 실시형태에서, 모드 결정은 표준화된 코덱 또는 인코딩 방식을 준수하며, 따라서, 도 1의 원격 디바이스(120)와 연관하여 상기에서 언급된 바와 같이, 전체 시스템의 출력이 적합하고, 대응(compliant) 하드웨어 디코더에 의해 수신되어 프로세싱될 수 있다는 것을 보장하게 된다.
도 9는 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 공간 스킵 프로세서(900)의 블록도이다. 공간 스킵 프로세서(900)는, 예를 들면, 도 8의 공간 스킵 프로세서(806)로서 사용될 수 있다. 도시된 실시형태에서, 공간 스킵 프로세서(900)는 먼저, 동작 902에서, 특정 코딩 단위와 연관되는 메타데이터(600)의 공간 스킵 플래그(602)를 검출한다. 공간 스킵 플래그(602)가 설정되면(그리고 프레임이 I 프레임이면), 도시된 실시형태에서, (동작 904에서) 16×16 코딩 단위 배치를 사용하여, 매크로블록 인코딩 모드는 인트라 블록 인코딩으로 설정된다. 그 다음, 동작 906에서 루마 및 크로마 특성 둘 다에 대해 DC 모드가 선택된다. 다음에, 동작 908에서, 블록에 걸친 평균 값에 대응하며 재구성에 사용가능한 직류 전류(direct current; DC) 값이, 예를 들면, 현재의 매크로블록의 위쪽 및 최좌측(leftmost) 매크로블록에 기초하여, 획득된다. 동작 910에서, 사인파 모양으로 변화하는(sinusoidal) 평균 값 변환 계수에 대응하는 교류 전류(alternating current; AC) 및 DC 값이 제로필되고(zero-filled), 코딩된 블록 패턴(CBP)도 또한 제로로 설정된다. 동작 912에서, 레이트 왜곡 값은, 예를 들면 레이트 왜곡을 최적화하도록 설정된다. 도 7 및 도 8의 스크린 맵 프로세싱 컴포넌트(702)에서 수신되는 프레임이 P 프레임인 경우, 공간 스킵 프로세서(900)는 P_MB_SKIP을 사용하는 것에 의해 회피될 수 있고, 이것은 상기 공간 스킵 프로세스에 비해 추가적인 비트를 절약한다는 것을 유의한다.
도 10은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 시간 스킵 프로세서(1000)의 블록도이다. 시간 스킵 프로세서(1000)는, 예를 들면, 도 8의 시간 스킵 프로세서(814)로서 사용될 수 있다. 도시된 실시형태에서, 시간 스킵 프로세서(1000)는 동작 1002에서 시간 스킵 플래그를 체크한다. 동작 1004에서, 인터_16×16 모드(또는 코딩 단위의 수를 최대로 하는 유사한 모드)가 선택되고, 모션 예측 동작(1006)은 현재의 매크로블록의 이웃 매크로블록에 기초하여 예측된 모션 벡터(motion vector; MV)를 생성한다. 예측된 모션 벡터는 동작 1008에서 평가되고; 예측된 MV 값에 기초하여, (예를 들면, PMV가 제로이면) 인코딩 MB 모드는 블록(예를 들면, P_MB_SKIP)을 스킵하도록 설정될 수 있고, 그렇지 않으면, 레이트 왜곡 모델의 레이트는 예측된 MV로서 설정되고 매크로블록 모드는 MB_16×16으로서 설정된다.
도 11은 본원에서 설명되는 방법 및 시스템 내에서 사용가능한 예시적인 모션 프로세서(1100)의 블록도이다. 모션 프로세서(1100)는, 예를 들면, 도 8의 모션 프로세서(818)로서 사용될 수 있다. 도시된 실시형태에서, 모션 프로세서(1100)는 모션 판독 동작(1102)을 포함하는데, 모션 판독 동작(1102)은 현재의 대응하는 매크로블록에서 스크린 맵(600)의 모션 플래그(606a-606b)를 판독한다. 동작 1104에서, 인터_16×16 모드(또는 코딩 단위의 수를 최대로 하는 유사한 모드)가 선택되고, 모션 예측 동작(1106)은 현재의 매크로블록의 이웃 매크로블록에 기초하여 예측된 모션 벡터(MV)를 생성한다. 그 다음, 동작 1108에서, 예측된 모션 벡터와 함께, 모션 벡터 제약이 평가된다. 위배되면, 정규의 인트라/인터 MB 프로세싱 동작(1110)이 (예를 들면, 도 7의 모드 결정 블록(704)에서 예시되는 바와 같이) 실행되어야 한다. 그렇지 않으면, (동작 1112에서 결정되는 바와 같은) 예측된 MV 값에 기초하여, 그것이 제로이면, 인코딩 매크로블록 모드는 (예를 들면, P_MB_SKIP을 설정하는 것에 의해) 블록의 프로세싱을 스킵하도록 설정될 수 있고, 레이트 왜곡은 동작 1114에서 최소화된다. 예측된 MV 값이 제로가 아니면, 동작 1116에서, 왜곡 모델의 레이트가, 예측된 MV로서 설정되고 MB 모드를 MB_16x16으로서 설정한다.
본원에서 설명되는 실시형태 및 기능성은, 데스크탑 컴퓨터 시스템, 유선 및 무선 컴퓨팅 시스템, 모바일 컴퓨팅 시스템(예를 들면, 모바일 전화기, 넷북, 태블릿 또는 슬레이트 타입 컴퓨터, 노트북 컴퓨터, 및 랩탑 컴퓨터), 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래머블 소비자 가전기기, 미니컴퓨터, 및 메인프레임 컴퓨터를 비제한적으로 포함하는 다수의 컴퓨팅 시스템을 통해 동작할 수도 있다.
또한, 본원에서 설명되는 실시형태 및 기능성은 분산형 시스템(예를 들면, 클라우드 기반의 컴퓨팅 시스템)을 통해 동작할 수도 있는데, 이 경우 애플리케이션 기능성, 메모리, 데이터 저장과 취출 및 다양한 프로세싱 기능은, 인터넷 또는 인트라넷과 같은 분산형 컴퓨팅 시스템을 통해 서로 원격으로 동작될 수도 있다. 또한, 다수의 코덱은 상이한 디바이스에서 실행될 수 있고, 비트스트림은 함께 멀티플렉싱될 수 있다. 다양한 타입의 정보 및 유저 인터페이스가 온보드 컴퓨팅 디바이스 디스플레이를 통해 또는 하나 이상의 컴퓨팅 디바이스와 연관되는 원격 디스플레이 유닛을 통해 디스플레이될 수도 있다. 예를 들면, 다양한 타입의 정보 및 유저 인터페이스는, 다양한 타입의 정보 및 유저 인터페이스가 투사되는 벽면 상에서 디스플레이되어 상호작용될 수도 있다. 본 발명의 실시형태가 실시될 수도 있게 하는 다수의 컴퓨팅 시스템과의 상호작용은, 키스트로크 입력, 터치 스크린 입력, 보이스 또는 다른 오디오 입력, 컴퓨팅 디바이스의 기능성을 제어하기 위한 유저 제스쳐를 캡쳐하여 해석하기 위한 검출(예를 들면, 카메라) 기능성을 연관 컴퓨팅 디바이스가 구비하는 경우에서의 제스쳐 입력 등등을 포함한다.
도 12 내지 도 14와 연관 설명은, 본 발명의 실시형태가 실시될 수도 있는 다양한 동작 환경의 논의를 제공한다. 그러나, 도 12 내지 도 14와 연관하여 예시되고 논의되는 디바이스 및 시스템은 예와 예시의 목적을 위한 것이며 본원에서 설명되는 본 발명의 실시형태의 실시에 활용될 수도 있는 광대한 수의 컴퓨팅 디바이스 구성을 제한하는 것은 아니다.
도 12는 본 발명의 실시형태가 실시될 수도 있게 하는 컴퓨팅 디바이스(1200)의 물리적 컴포넌트(즉, 하드웨어)를 예시하는 블록도이다. 하기에서 설명되는 컴퓨팅 디바이스 컴포넌트는 상기에서 설명된 컴퓨팅 디바이스에 적합할 수도 있다. 기본 구성에서, 컴퓨팅 디바이스(1200)는 적어도 하나의 프로세싱 유닛(1202) 및 시스템 메모리(1204)를 포함할 수도 있다. 컴퓨팅 디바이스의 구성 및 타입에 따라, 시스템 메모리(1204)는 휘발성 스토리지(예를 들면, 랜덤 액세스 메모리), 불휘발성 스토리지(예를 들면, 리드 온리 메모리), 플래시 메모리, 또는 이러한 메모리의 임의의 조합을 포함할 수도 있지만, 이들에 제한되지는 않는다. 시스템 메모리(1204)는 오퍼레이팅 시스템(1205) 및 도 1과 연계하여 상기에서 논의된 원격 데스크탑 프로토콜 소프트웨어(108) 및 인코더/디코더(110)와 같은 소프트웨어 애플리케이션(1220)을 실행하기에 적합한 하나 이상의 프로그램 모듈(1206)을 포함할 수도 있다. 오퍼레이팅 시스템(1205)은, 예를 들면, 컴퓨팅 디바이스(1200)의 동작을 제어하기에 적합할 수도 있다. 또한, 본 발명의 실시형태는 그래픽 라이브러리, 다른 오퍼레이팅 시스템, 또는 임의의 다른 애플리케이션 프로그램과 연계하여 실시될 수도 있으며 어떠한 특정한 애플리케이션 또는 시스템에도 제한되지 않는다. 이 기본 구성은 도 12에서 점선(1208) 내의 컴포넌트에 의해 예시된다. 컴퓨팅 디바이스(1200)는 추가적인 피쳐 또는 기능성을 구비할 수도 있다. 예를 들면, 컴퓨팅 디바이스(1200)는 또한, 예를 들면, 자기 디스크, 광학 디스크, 또는 테이프와 같은 추가적인 데이터 스토리지 디바이스(착탈실 및/또는 비착탈식)를 포함할 수도 있다. 이러한 추가적인 스토리지는 도 12에서 착탈식 스토리지 디바이스(1209) 및 비착탈식 스토리지 디바이스(1210)에 의해 예시된다.
상기에서 언급되는 바와 같이, 다수의 프로그램 모듈 및 데이터 파일은 시스템 메모리(1204)에 저장될 수도 있다. 프로세싱 유닛(1202) 상에서 실행되지만 프로그램 모듈(1206)(예를 들면, 원격 데스크탑 프로토콜 소프트웨어(108) 및 인코더/디코더(110))은, 도 2에서 예시되는 방법(200)의 단계 중 하나 이상을 포함하지만, 이들에 제한되지 않는 프로세스를 수행할 수도 있다. 본 발명의 실시형태에 따라, 특히 스크린 컨텐츠를 생성하기 위해 사용될 수도 있는 다른 프로그램 모듈은, 전자 메일 및 연락처 애플리케이션(contacts application), 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 데이터베이스 애플리케이션, 슬라이드 프리젠테이션 애플리케이션, 드로잉 또는 컴퓨터 지원 애플리케이션 프로그램 등등을 포함할 수도 있다.
또한, 본 발명의 실시형태는 별개의 전자 엘리먼트를 포함하는 전자 회로, 로직 게이트를 포함하는 패키지화된 또는 집적된 전자 칩, 마이크로프로세서를 활용하는 회로에서, 또는 전자적 엘리먼트 또는 마이크로프로세서를 포함하는 단일 칩 상에서 실시될 수도 있다. 예를 들면, 본 발명의 실시형태는, 도 12에 예시되는 컴포넌트의 각각 또는 많은 것이 단일의 집적 회로 상에 집적될 수도 있는 시스템온칩(system-on-a-chip; SOC)을 통해 실시될 수도 있다. 이러한 SOC 디바이스는 하나 이상의 프로세싱 유닛, 그래픽 유닛, 통신 유닛, 시스템 가상화 유닛 및 다양한 애플리케이션 기능성을 포함할 수도 있는데, 이들 모두는 단일의 집적 회로로서 칩 기판 상으로 집적된다(또는 "버닝된다"). SOC를 통해 동작하고 있을 때, 원격 데스크탑 프로토콜 소프트웨어(108) 및 인코더/디코더(110)와 연관하여 본원에서 설명되는 기능성은, 단일의 집적 회로(칩) 상에서 컴퓨팅 디바이스(1200)의 다른 컴포넌트와 함께 집적되는 애플리케이션 고유의 로직(application-specific logic)을 통해 동작될 수도 있다. 본 발명의 실시형태는 또한, 예를 들면, AND, OR, 및 NOT과 같은 논리 동작을 수행할 수 있는, 기계적, 광학적, 유체적 및 양자적 기술을 포함하지만 이들에 제한되지 않는 다른 기술을 사용하여 실시될 수도 있다. 또한, 본 발명의 실시형태는 범용 컴퓨터 내에서 또는 임의의 다른 회로 또는 시스템에서 실시될 수도 있다.
컴퓨팅 디바이스(1200)는 또한 입력 디바이스(들)(1212) 예컨대 키보드, 마우스, 펜, 사운드 입력 디바이스, 터치 입력 디바이스 등등을 구비할 수도 있다. 출력 디바이스(들)(1214) 예컨대 디스플레이, 스피커, 프린터 등등이 또한 포함될 수도 있다. 상기 언급된 디바이스는 예이며 다른 것들이 사용될 수도 있다. 컴퓨팅 디바이스(1200)는 다른 컴퓨팅 디바이스(1218)와의 통신을 허용하는 하나 이상의 통신 접속부(1216)를 포함할 수도 있다. 적절한 통신 접속부(1216)의 예는, RF 송신기, 수신기, 및/또는 트랜시버 회로부; 범용 직렬 버스(universal serial bus; USB), 병렬 포트, 및/또는 직렬 포트를 포함하지만, 이들에 제한되지는 않는다.
본원에서 사용되는 바와 같은 용어 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수도 있다. 컴퓨터 저장 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 또는 프로그램 모듈과 같은 정보 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 불휘발성의 착탈식 및 비착탈식 매체를 포함할 수도 있다. 시스템 메모리(1204), 착탈식 스토리지 디바이스(1209), 및 비착탈식 스토리지 디바이스(1210)는 모두 컴퓨터 저장 매체의 예(즉, 메모리 스토리지)이다. 컴퓨터 저장 매체는, RAM, ROM, 전기적으로 소거가능한 리드 온리 메모리(electrically erasable read-only memory; EEPROM), 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk; DVD) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 정보를 저장하기 위해 사용될 수도 있으며 컴퓨팅 디바이스(1200)에 의해 액세스될 수 있는 임의의 다른 제조 물품을 포함할 수도 있다. 임의의 이러한 컴퓨터 저장 매체는 컴퓨팅 디바이스(1200)의 일부일 수도 있다. 컴퓨터 저장 매체는 반송파(carrier wave) 또는 다른 전파된 또는 변조된 데이터 신호를 포함하지 않는다.
통신 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터에 의해 구체화될 수도 있고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호에 정보를 인코딩하는 방식으로 설정되거나 변경되는 하나 이상의 특성을 갖는 신호를 설명할 수도 있다. 비제한적인 예로서, 통신 매체는 유선 매체 예컨대 유선 네트워크 또는 직결 접속(direct- wired connection), 및 무선 매체 예컨대 음향, 무선 주파수(radio frequency; RF), 적외선, 및 다른 무선 매체를 포함할 수도 있다.
도 13a 및 도 13b는 모바일 컴퓨팅 디바이스(1300), 예를 들면, 모바일 전화기, 스마트폰, 태블릿 퍼스널 컴퓨터(1310), 랩탑 컴퓨터 등등을 예시하는데, 본 발명의 실시형태는 이들과 함께 실시될 수도 있다. 도 13a를 참조하면, 실시형태를 구현하기 위한 모바일 컴퓨팅 디바이스(1300)의 일 실시형태가 예시된다. 기본 구성에서, 모바일 컴퓨팅 디바이스(1300)는 입력 엘리먼트 및 출력 엘리먼트 둘 모두를 구비하는 핸드헬드 컴퓨터이다. 모바일 컴퓨팅 디바이스(1300)는, 통상적으로, 디스플레이(1305) 및 유저가 모바일 컴퓨팅 디바이스(1300)에 정보를 입력하는 것을 허용하는 하나 이상의 입력 버튼(1310)을 포함한다. 모바일 컴퓨팅 디바이스(1300)의 디스플레이(1305)는 또한, 입력 디바이스(예를 들면, 터치 스크린 디스플레이)로서 기능할 수도 있다. 포함되는 경우, 선택적인(optional) 측면 입력 엘리먼트(1315)는 추가적인 유저 입력을 허용한다. 측면 입력 엘리먼트(1315)는 로터리 스위치, 버튼, 또는 임의의 다른 타입의 수동 입력 엘리먼트일 수도 있다. 대안적인 실시형태에서, 모바일 컴퓨팅 디바이스(1300)는 더 많은 또는 더 적은 입력 엘리먼트를 통합할 수도 있다. 예를 들면, 디스플레이(1305)는 몇몇 실시형태에서는 터치 스크린이 아닐 수도 있다. 또 다른 대안적인 실시형태에서, 모바일 컴퓨팅 디바이스(1300)는 휴대형 전화 시스템, 예컨대 셀룰러 폰이다. 모바일 컴퓨팅 디바이스(1300)는 또한, 선택적인 키패드(1335)를 포함할 수도 있다. 선택적인 키패드(1335)는 물리적 키패드 또는 터치 스크린 디스플레이 상에 생성되는 "소프트" 키패드일 수도 있다. 다양한 실시형태에서, 출력 엘리먼트는, 그래픽 유저 인터페이스(graphical user interface; GUI)를 나타내기 위한 디스플레이(805), 시각적 표시자(indicator)(1320)(예를 들면, 발광 다이오드), 및/또는 오디오 트랜스듀서(1325)(예를 들면, 스피커)를 포함한다. 몇몇 실시형태에서, 모바일 컴퓨팅 디바이스(1300)는 유저에게 촉각적 피드백을 제공하기 위한 진동 트랜스듀서를 통합한다. 또 다른 실시형태, 모바일 컴퓨팅 디바이스(1300)는 입력 및/또는 출력 포트, 예컨대 오디오 입력(예를 들면, 마이크 잭), 오디오 출력(예를 들면, 헤드폰 잭), 및 외부 디바이스로 신호를 전송하거나 외부 디바이스로부터 신호를 수신하기 위한 비디오 출력(예를 들면, HDMI 포트)을 통합한다.
도 13b는 모바일 컴퓨팅 디바이스의 일 실시형태의 아키텍쳐를 예시하는 블록도이다. 즉, 모바일 컴퓨팅 디바이스(1300)는 몇몇 실시형태를 구현하기 위한 시스템(즉, 아키텍쳐)(1302)을 통합할 수 있다. 일 실시형태에서, 시스템(802)은 하나 이상의 애플리케이션(예를 들면, 브라우저, 이메일, 캘린더링, 연락처 매니저, 메시징 클라이언트, 게임, 및 미디어 클라이언트/플레이어)을 실행할 수 있는 "스마트폰"으로서 구현된다. 몇몇 실시형태에서, 시스템(1302)은, 통합형 개인 휴대 정보 단말기(personal digital assistant; PDA) 및 무선 전화기와 같이, 컴퓨팅 디바이스로서 통합된다.
하나 이상의 애플리케이션 프로그램(1366)이 메모리(1362)로 로딩되어 오퍼레이팅 시스템(1364) 상에서 또는 오퍼레이팅 시스템(1364)과 연계하여 실행될 수도 있다. 애플리케이션 프로그램의 예는 전화 다이얼러 프로그램(phone dialer program), 이메일 프로그램, 개인 정보 관리(personal information management; PIM) 프로그램, 워드 프로세싱 프로그램, 스프레드시트 프로그램, 인터넷 브라우저 프로그램, 메시징 프로그램 등등을 포함한다. 시스템(1302)은 또한 메모리(1362) 내에 불휘발성 저장 영역(1368)을 포함한다. 불휘발성 저장 영역(1368)은, 시스템(1302)의 전원이 차단되더라도 상실되지 않아야 하는 영구적인 정보를 저장하기 위해 사용될 수도 있다. 애플리케이션 프로그램(1366)은, 이메일 애플리케이션 등등에 의해 사용되는 이메일 또는 다른 메시지와 같은 정보를, 불휘발성 저장 영역(1368)에서 사용하고 저장할 수도 있다. 동기화 애플리케이션(도시되지 않음)이 또한 시스템(1302) 상에 상주하며 불휘발성 저장 영역(1368)에 저장되는 정보를 호스트 컴퓨터에 저장되는 대응하는 정보와 동기된 상태로 유지하기 위해, 호스트 컴퓨터 상에 상주하는 대응하는 동기화 애플리케이션과 상호작용하도록 프로그래밍된다. 인식되어야 하는 바와 같이, 본원에서 설명되는 원격 데스크탑 소프트웨어(108)(및/또는 선택적으로는 인코더 소프트웨어(110), 원격 데스크탑 클라이언트 소프트웨어(130))를 포함하는 다른 애플리케이션이 메모리(1362)로 로딩되어 모바일 컴퓨팅 디바이스(800) 상에서 실행될 수도 있다.
시스템(1302)은, 하나 이상의 배터리로서 구현될 수도 있는 전원(1370)을 구비한다. 전원(1370)은 외부 전원, 예컨대 AC 어댑터 또는 배터리를 보충하거나 충전하는 전력인가 도킹 크래들(powered docking cradle)을 더 포함할 수도 있을 것이다.
시스템(1302)은 또한, 무선 주파수 통신을 송신하고 수신하는 기능을 수행하는 무선부(radio)(1372)를 포함할 수도 있다. 무선부(1372)는, 통신 캐리어 또는 서비스 공급자를 통한, 시스템(1302)과 "외부 세계" 사이의 무선 접속성을 용이하게 한다. 무선부(1372)로의 그리고 무선부(1372)로부터의 송신은 오퍼레이팅 시스템(1364)의 제어하에서 행해진다. 다시 말하면, 무선부(1372)에 의해 수신되는 통신은 오퍼레이팅 시스템(1364)을 통해 애플리케이션 프로그램(1366)으로 배포될 수도 있고, 그 반대로 될 수도 있다.
시각적 표시자(1320)는 시각적 통지를 제공하기 위해 사용될 수도 있고, 및/또는 오디오 인터페이스(1374)는 오디오 트랜스듀서(1325)를 통해 가청 통지를 생성하는 데 사용될 수도 있다. 예시된 실시형태에서, 시각적 표시자(1320)는 발광 다이오드(light emitting diode; LED)이고 오디오 트랜스듀서(1325)는 스피커이다. 이들 디바이스는, 활성화되면, 프로세서(1360) 및 다른 컴포넌트가 배터리 전력을 절약하기 위해 셧다운할 수 있을지라도, 통지 메커니즘에 의해 지시되는 지속 기간 동안 이들 디바이스가 온 상태를 유지하도록, 전원(1370)에 직접적으로 커플링될 수도 있다. LED는, 디바이스의 파워 온 상태를 나타내기 위해, 유저가 액션을 취할 때까지 무한히 온 상태를 유지하도록 프로그래밍될 수도 있다. 오디오 인터페이스(1374)는 유저에게 가청 신호를 제공하고 유저로부터 가청 신호를 수신하기 위해 사용된다. 예를 들면, 오디오 트랜스듀서(1325)에 커플링되는 것 외에, 오디오 인터페이스(1374)는 또한, 예컨대 전화 대화를 용이하게 하기 위해, 가청 입력을 수신하는 마이크에 커플링될 수도 있다. 본 개시의 실시형태에 따르면, 마이크는 또한 통지의 제어를 용이하게 하는 오디오 센서로서 기능할 수도 있는데, 이것은 하기에서 설명될 것이다. 시스템(1302)은, 온보드 카메라(1330)의 동작이 스틸 이미지, 비디오 스트림 등등을 녹화하는 것을 가능하게 하는 비디오 인터페이스(1376)를 더 포함할 수도 있다.
시스템(1302)을 구현하는 모바일 컴퓨팅 디바이스(1300)는 추가적인 피쳐 또는 기능성을 구비할 수도 있다. 예를 들면, 모바일 컴퓨팅 디바이스(1300)는 또한, 자기 디스크, 광학 디스크, 또는 테이프와 같은 추가적인 데이터 스토리지 디바이스(착탈실 및/또는 비착탈식)를 포함할 수도 있다. 이러한 추가적인 스토리지는 도 13b에서 불휘발성 저장 영역(1368)에 의해 예시된다.
모바일 컴퓨팅 디바이스(1300)에 의해 생성되거나 캡쳐되며 시스템(1302)을 통해 저장되는 데이터/정보는, 상기에서 설명되는 바와 같이, 모바일 컴퓨팅 디바이스(1300) 상에 로컬하게 저장될 수도 있거나, 또는 데이터는, 모바일 컴퓨팅 디바이스(1300)와 모바일 컴퓨팅 디바이스(1300)와 연관되는 별개의 컴퓨팅 디바이스, 예를 들면, 인터넷과 같은 분산형 컴퓨팅 네트워크에서의 서버 컴퓨터 사이에서 무선(1372)을 통해 또는 유선 접속을 통해 디바이스에 의해 액세스될 수도 있는 임의의 수의 저장 매체 상에 저장될 수도 있다. 인식되어야 하는 바와 같이, 이러한 데이터/정보는 무선(1372)을 거쳐 또는 분산형 컴퓨팅 네트워크를 거쳐 모바일 컴퓨팅 디바이스(1300)를 통해 액세스될 수도 있다. 마찬가지로, 이러한 데이터/정보는, 전자 메일 및 공동 데이터/정보 공유 시스템을 포함하는, 널리 공지된 데이터/정보 전송 및 저장 수단에 따른 저장 및 사용을 위해 컴퓨팅 디바이스 사이에서 즉각 전송될 수도 있다.
도 14는, 상기에서 설명된 바와 같이, 고정된 포맷의 다큐먼트에서의 그래픽 엘리먼트의 검출 및 그룹화를 하나 이상의 클라이언트 디바이스로 제공하기 위한 시스템의 아키텍쳐의 일 실시형태를 예시한다. 서버 디바이스(1402)에서 디스플레이되는 컨텐츠는 상이한 통신 채널에서 또는 다른 저장 타입으로 저장될 수도 있다. 예를 들면, 다양한 다큐먼트는, 디렉토리 서비스(1422), 웹 포털(1424), 메일박스 서비스(1426), 인스턴트 메시징 저장소(1428), 또는 소셜 네트워킹 사이트(1430)를 사용하여 저장될 수도 있다. 원격 데스크탑 프로토콜 소프트웨어(108)는, 예를 들면 네트워크(1415)를 통한, 예를 들면, 웹을 통한, 원격 시스템에서의 디스플레이를 위해 RDP 준수, MPEG 준수(또는 다른 표준 준수) 데이터 스트림을 생성할 수도 있다. 예로서, 클라이언트 컴퓨팅 디바이스는 컴퓨팅 디바이스(102) 또는 원격 디바이스(120)로서 구현될 수도 있고 퍼스널 컴퓨터(1404), 태블릿 컴퓨팅 디바이스(1406) 및/또는 모바일 컴퓨팅 디바이스(1408)(예를 들면, 스마트폰)에서 구체화될 수도 있다. 컴퓨팅 디바이스(102, 130, 1200, 1300, 1406, 1408)의 이들 실시형태 중 임의의 것은, RDP 준수의 그리고 표준 준수의 디스플레이 데이터를 수신하는 것 외에, 저장소(1416)로부터 컨텐츠를 획득할 수 있고, 이러한 표준 기반의 프로그래시브 인코딩된 RDP 데이터를 디코딩하기 위한 특수 목적의 표준 기반의 하드웨어 컴포넌트를 포함할 수 있다.
본 발명의 실시형태는, 예를 들면, 본 발명의 실시형태에 따른 방법, 시스템, 및 컴퓨터 프로그램 제품의 동작적 예시 및/또는 블록도를 참조로 상기에서 설명되어 있다. 블록에서 언급되는 기능/액트(act)는 임의의 플로우차트에서 도시된 순서를 벗어나서 발생할 수도 있다. 예를 들면, 연속하여 나타내어진 두 블록은, 수반되는 기능성/액트에 따라, 실제로는, 실질적으로 동시에 발생할 수도 있거나 또는 블록은 가끔은 반대의 순서로 실행될 수도 있다.
본 출원에서 제공되는 하나 이상의 실시형태의 설명 및 예시는 청구되는 본 발명의 범위를 어떤 식으로든 제한하거나 한정하도록 의도되지 않는다. 본 출원에서 제공되는 실시형태, 예, 및 상세는, 소유권을 양도하여 타인이 청구된 발명의 최상의 모드를 만들고 사용하는 것을 가능하게 하기에 충분한 것으로 간주된다. 청구된 발명은 본 출원에서 제공되는 임의의 실시형태, 예, 또는 상세에 제한되는 것으로 간주되어선 안된다. 조합하여 도시되고 설명되든지 또는 개별적으로 도시되고 설명되든지에 무관하게, 다양한 피쳐(구조적 및 방법론적 둘 모두)는, 특정 세트의 피쳐를 갖는 실시형태를 생성하기 위해 선택적으로 포함되거나 생략되도록 의도된다. 본 출원의 설명 및 예시가 제공되었지만, 기술분야에서 숙련된 자는, 청구된 발명의 더 넓은 범위를 벗어나지 않는, 본 출원에서 구체화되는 일반적인 발명적 개념의 더 넓은 양태의 취지 내에 있는 변형예, 수정예, 및 대안적 실시형태를 구상할 수도 있다.
Claims (10)
- 클라이언트 디바이스로 전달하기 위한 스크린 컨텐츠를 압축하는 방법에 있어서,
특정 시간에 스크린에 포함되는 스크린 영역들에 대응하는 복수의 코딩 단위(coding unit)들 각각에 대해,
코딩 단위에 포함되는 스크린 컨텐츠를 복수의 컨텐츠 타입들 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하는 단계로서, 상기 스크린 컨텐츠는 디스플레이 상에 디스플레이되는 정보를 묘사하는(describing) 데이터를 포함하고, 상기 컨텐츠 타입들 중 적어도 하나의 컨텐츠 타입은 이미지 타입을 포함하는 것인, 스크린 컨텐츠 분류 단계; 및
상기 스크린 컨텐츠가 이미지 타입을 갖는다는 결정에 기초하여, 상기 코딩 단위의 상기 스크린 컨텐츠에 프로그레시브 표준 기반의 인코딩(progressive standards-based encoding)을 적용하는 단계;
각각의 코딩 단위의 상기 스크린 컨텐츠의 분류에 기초하여, 상기 스크린 컨텐츠의 분류에 관한 정보를 포함하는 메타데이터를 각각의 코딩 단위에 할당하는(assigning) 단계;
상기 복수의 코딩 단위들 각각과 연관된 메타데이터를 포함하는 스크린 맵을 생성하는 단계로서, 상기 메타데이터는 수신용 디바이스(receiving device)에 대해 각각의 코딩 단위와 연관된 스크린 영역이 상기 수신용 디바이스의 프로그래머블(programmable) 회로에 의해 디코딩될 수 있는지 여부를 정의하는 것인, 스크린 맵 생성 단계; 및
상기 스크린 영역들 각각에 대한 압축된 스크린 컨텐츠 비트스트림들을 상기 클라이언트 디바이스로 송신하는 단계
를 포함하는, 스크린 컨텐츠를 압축하는 방법. - 제1항에 있어서,
상기 표준 기반의 인코딩은 MPEG 기반의 인코딩을 포함하는 것인, 스크린 컨텐츠를 압축하는 방법. - 제1항에 있어서,
코딩 단위의 상기 스크린 컨텐츠가 비디오 타입을 갖는다는 결정에 기초하여, 비디오 컨텐츠의 압축을 위한 MPEG 기반의 인코딩을 적용하는 단계; 및
상기 스크린 컨텐츠가 텍스트 타입을 갖는다는 결정에 기초하여, 상기 코딩 단위의 상기 스크린 컨텐츠에 텍스트 코덱을 적용하는 단계
를 더 포함하는, 스크린 컨텐츠를 압축하는 방법. - 제1항에 있어서,
스크린 컨텐츠를 분류하는 단계는, 이전 시간에서의 상기 코딩 단위의 스크린 컨텐츠에 대한, 미리 결정된 시간에서의 상기 코딩 단위의 스크린 컨텐츠의 비교에 기초하여 움직임을 검출하는 단계를 포함하는 것인, 스크린 컨텐츠를 압축하는 방법. - 제4항에 있어서,
상기 메타데이터는,
스크린 컨텐츠의 프로그레시브 인코딩 및 전달에서 사용할 품질 레벨에 대해 4 레벨의 품질 제어를 제공하는 하나 이상의 품질 플래그,
현재의 컨텐츠가 슬라이드 기반의 컨텐츠인지의 여부를 나타내는 슬라이드 플래그,
특수 효과 모션이 존재하는지의 여부를 식별하는 특수 효과 플래그,
모션이 존재하는지의 여부를 식별하는 모션 플래그,
공간 스킵이 검출되었는지의 여부를 식별하는 공간 스킵 플래그, 및
시간 스킵의 존재를 정의하는 시간 스킵 플래그
를 포함하는 것인, 스크린 컨텐츠를 압축하는 방법. - 제5항에 있어서,
상기 메타데이터는 상기 코딩 단위의 스크린 컨텐츠의 수직 움직임 및 수평 움직임을 정의하는 복수의 비트들을 더 포함하는 것인, 스크린 컨텐츠를 압축하는 방법. - 시스템에 있어서,
컴퓨팅 시스템 상에서 실행되며 복수의 코딩 단위들 각각에 대해 스크린 컨텐츠를 복수의 컨텐츠 타입들 중에서 선택되는 컨텐츠 타입을 갖는 것으로 분류하도록 구성되는 분류 컴포넌트로서, 상기 스크린 컨텐츠는 디스플레이 상에서 디스플레이되는 정보를 묘사하는 데이터를 포함하고, 상기 컨텐츠 타입들 중 적어도 하나의 컨텐츠 타입은 이미지 타입을 포함하는 것인, 분류 컴포넌트; 및
상기 컴퓨팅 시스템 상에서 실행되며 상기 컨텐츠 타입에 기초하여 코딩 단위의 상기 스크린 컨텐츠에 인코딩을 적용하도록 구성되는 하나 이상의 인코딩 모듈
을 포함하고,
상기 하나 이상의 인코딩 모듈은, 상기 이미지 타입을 갖는 상기 코딩 단위들과 연관된 상기 스크린 컨텐츠에 대해 프로그레시브 표준 기반의 인코딩을 적용하도록 구성되고,
상기 복수의 코딩 단위들은 미리 결정된 시간에서의 스크린의 영역들에 대응하고,
원격 데스크탑 프로토콜 시스템이, 상기 스크린과 연관된 상기 복수의 코딩 단위들 각각과 연관된 메타데이터를 포함하는 스크린 맵을 생성하며,
상기 메타데이터는 수신용 디바이스(receiving device)에 대해 각각의 코딩 단위와 연관된 스크린 영역이 상기 수신용 디바이스의 프로그래머블(programmable) 회로에 의해 디코딩될 수 있는지 여부를 정의하는 것인, 시스템. - 제7항에 있어서,
원격 데스크탑 클라이언트 및 표준 기반의 하드웨어 디코더를 포함하는 수신용 디바이스를 더 포함하고,
상기 스크린 컨텐츠의 수신시, 상기 수신용 디바이스는, 상기 표준 기반의 하드웨어 디코더를 사용하여 상기 코딩 단위들과 연관된 인코딩된 스크린 컨텐츠를 디코딩하는 것인, 시스템. - 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/916,511 US9210434B2 (en) | 2013-06-12 | 2013-06-12 | Screen map and standards-based progressive codec for screen content coding |
US13/916,511 | 2013-06-12 | ||
PCT/US2014/041049 WO2014200792A1 (en) | 2013-06-12 | 2014-06-05 | Screen map and standards-based progressive codec for screen content coding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160021205A KR20160021205A (ko) | 2016-02-24 |
KR101885008B1 true KR101885008B1 (ko) | 2018-08-02 |
Family
ID=51134333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167000780A KR101885008B1 (ko) | 2013-06-12 | 2014-06-05 | 스크린 컨텐츠 코딩을 위한 스크린 맵 및 표준 기반의 프로그레시브 코덱 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9210434B2 (ko) |
EP (1) | EP3008903B1 (ko) |
KR (1) | KR101885008B1 (ko) |
CN (1) | CN105379279B (ko) |
ES (1) | ES2864863T3 (ko) |
TW (1) | TW201507440A (ko) |
WO (1) | WO2014200792A1 (ko) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7948448B2 (en) * | 2004-04-01 | 2011-05-24 | Polyvision Corporation | Portable presentation system and methods for use therewith |
US9225979B1 (en) * | 2013-01-30 | 2015-12-29 | Google Inc. | Remote access encoding |
US20150063451A1 (en) * | 2013-09-05 | 2015-03-05 | Microsoft Corporation | Universal Screen Content Codec |
KR20160075705A (ko) | 2013-10-25 | 2016-06-29 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 비디오 및 이미지 코딩에서의 해시 기반 블록 매칭 |
CN105684409B (zh) | 2013-10-25 | 2019-08-13 | 微软技术许可有限责任公司 | 在视频和图像编码和解码中使用散列值来表示各块 |
WO2015125420A1 (en) * | 2014-02-19 | 2015-08-27 | Canon Kabushiki Kaisha | Imaging apparatus and imaging system |
CN105393537B (zh) | 2014-03-04 | 2019-08-27 | 微软技术许可有限责任公司 | 用于基于散列的块匹配的散列表构建和可用性检查 |
EP3114841B1 (en) | 2014-03-04 | 2020-06-10 | Microsoft Technology Licensing, LLC | Encoder-side decisions for block flipping and skip mode in intra block copy prediction |
US10681372B2 (en) | 2014-06-23 | 2020-06-09 | Microsoft Technology Licensing, Llc | Encoder decisions based on results of hash-based block matching |
MX2017004210A (es) | 2014-09-30 | 2017-11-15 | Microsoft Technology Licensing Llc | Decisiones de codificador basadas en hash para codificar video. |
US9832521B2 (en) * | 2014-12-23 | 2017-11-28 | Intel Corporation | Latency and efficiency for remote display of non-media content |
CN107452041B (zh) * | 2016-05-31 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 图片的生成方法及装置 |
CN107545261A (zh) * | 2016-06-23 | 2018-01-05 | 佳能株式会社 | 文本检测的方法及装置 |
US10390039B2 (en) | 2016-08-31 | 2019-08-20 | Microsoft Technology Licensing, Llc | Motion estimation for screen remoting scenarios |
US11095877B2 (en) | 2016-11-30 | 2021-08-17 | Microsoft Technology Licensing, Llc | Local hash-based motion estimation for screen remoting scenarios |
US10264213B1 (en) | 2016-12-15 | 2019-04-16 | Steelcase Inc. | Content amplification system and method |
CA3059743A1 (en) | 2017-04-21 | 2018-10-25 | Zenimax Media Inc. | Systems and methods for deferred post-processes in video encoding |
CN107277509B (zh) * | 2017-08-03 | 2019-10-25 | 重庆邮电大学 | 一种基于屏幕内容的快速帧内预测方法 |
CN108174214A (zh) * | 2017-12-08 | 2018-06-15 | 重庆邮电大学 | 一种基于屏幕内容视频编码的远程桌面共享方法 |
CN108495135B (zh) * | 2018-03-14 | 2020-11-10 | 宁波大学 | 一种屏幕内容视频编码的快速编码方法 |
CN110545446B (zh) * | 2018-05-28 | 2022-01-18 | 深信服科技股份有限公司 | 一种桌面图像编码、解码方法、相关装置及存储介质 |
CN110933428B (zh) * | 2019-10-17 | 2023-03-17 | 西安万像电子科技有限公司 | 图像处理方法及装置 |
CN111225214B (zh) * | 2020-01-22 | 2022-08-12 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置及电子设备 |
US11202085B1 (en) | 2020-06-12 | 2021-12-14 | Microsoft Technology Licensing, Llc | Low-cost hash table construction and hash-based block matching for variable-size blocks |
CN111953983B (zh) * | 2020-07-17 | 2024-07-23 | 西安万像电子科技有限公司 | 视频编码方法及装置 |
CN111913675A (zh) * | 2020-07-30 | 2020-11-10 | 维沃移动通信有限公司 | 显示控制方法和装置、电子设备及计算机可读存储介质 |
CN113965751B (zh) * | 2021-10-09 | 2023-03-24 | 腾讯科技(深圳)有限公司 | 屏幕内容编码方法、装置、设备及存储介质 |
CN114339305B (zh) * | 2021-12-22 | 2024-07-09 | 深信服科技股份有限公司 | 一种虚拟桌面图像处理方法及相关装置 |
US12026919B2 (en) | 2021-12-22 | 2024-07-02 | Red Hat, Inc. | Content-based encoding of digital images |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294125A1 (en) | 2005-06-25 | 2006-12-28 | General Electric Company | Adaptive video compression of graphical user interfaces using application metadata |
US20100158400A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Accelerated Screen Codec |
US7847755B1 (en) | 2005-05-23 | 2010-12-07 | Glance Networks | Method and apparatus for the identification and selective encoding of changed host display information |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6819714B2 (en) | 2000-04-20 | 2004-11-16 | Matsushita Electric Industrial Co., Ltd. | Video encoding apparatus that adjusts code amount by skipping encoding of image data |
US8311095B2 (en) | 2002-07-17 | 2012-11-13 | Onmobile Global Limited | Method and apparatus for transcoding between hybrid video codec bitstreams |
US7092576B2 (en) | 2003-09-07 | 2006-08-15 | Microsoft Corporation | Bitplane coding for macroblock field/frame coding type information |
US7689051B2 (en) | 2004-04-15 | 2010-03-30 | Microsoft Corporation | Predictive lossless coding of images and video |
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 |
JP5233169B2 (ja) * | 2007-05-31 | 2013-07-10 | 富士通モバイルコミュニケーションズ株式会社 | 携帯端末 |
US8687702B2 (en) | 2008-10-27 | 2014-04-01 | Advanced Micro Devices, Inc. | Remote transmission and display of video data using standard H.264-based video codecs |
US8254704B2 (en) | 2008-10-30 | 2012-08-28 | Microsoft Corporation | Remote computing platforms providing high-fidelity display and interactivity for clients |
US8189661B2 (en) | 2009-03-09 | 2012-05-29 | Microsoft Corporation | Remote desktop protocol (RDP) tile image classification for improving compression efficiency and quality |
US8171154B2 (en) | 2009-09-29 | 2012-05-01 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
JP5515758B2 (ja) * | 2010-01-18 | 2014-06-11 | ソニー株式会社 | 画像処理装置および方法 |
US20130039408A1 (en) | 2011-02-07 | 2013-02-14 | Screenovate Technologies Ltd | Method for enhancing compression and transmission process of a screen image |
US8737724B2 (en) * | 2011-06-10 | 2014-05-27 | Microsoft Corporation | Image type classifier for improved remote presentation session compression |
-
2013
- 2013-06-12 US US13/916,511 patent/US9210434B2/en active Active
-
2014
- 2014-05-22 TW TW103117927A patent/TW201507440A/zh unknown
- 2014-06-05 WO PCT/US2014/041049 patent/WO2014200792A1/en active Application Filing
- 2014-06-05 EP EP14736146.3A patent/EP3008903B1/en active Active
- 2014-06-05 ES ES14736146T patent/ES2864863T3/es active Active
- 2014-06-05 CN CN201480033890.4A patent/CN105379279B/zh active Active
- 2014-06-05 KR KR1020167000780A patent/KR101885008B1/ko active IP Right Grant
-
2015
- 2015-12-07 US US14/961,410 patent/US20160092155A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7847755B1 (en) | 2005-05-23 | 2010-12-07 | Glance Networks | Method and apparatus for the identification and selective encoding of changed host display information |
US20060294125A1 (en) | 2005-06-25 | 2006-12-28 | General Electric Company | Adaptive video compression of graphical user interfaces using application metadata |
US20100158400A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Accelerated Screen Codec |
Also Published As
Publication number | Publication date |
---|---|
TW201507440A (zh) | 2015-02-16 |
WO2014200792A1 (en) | 2014-12-18 |
CN105379279B (zh) | 2019-05-17 |
US20160092155A1 (en) | 2016-03-31 |
ES2864863T3 (es) | 2021-10-14 |
EP3008903B1 (en) | 2021-04-07 |
US9210434B2 (en) | 2015-12-08 |
US20140369421A1 (en) | 2014-12-18 |
CN105379279A (zh) | 2016-03-02 |
EP3008903A1 (en) | 2016-04-20 |
KR20160021205A (ko) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101885008B1 (ko) | 스크린 컨텐츠 코딩을 위한 스크린 맵 및 표준 기반의 프로그레시브 코덱 | |
US20150063451A1 (en) | Universal Screen Content Codec | |
KR102362066B1 (ko) | 포인트 클라우드 기하학적 압축 | |
US11538196B2 (en) | Predictive coding for point cloud compression | |
KR102509533B1 (ko) | 비디오 인코딩 및 디코딩을 위한 적응형 전달 함수 | |
US8891939B2 (en) | Systems and methods for video-aware screen capture and compression | |
US9609338B2 (en) | Layered video encoding and decoding | |
WO2018036352A1 (zh) | 视频数据的编解码方法、装置、系统及存储介质 | |
US20150201199A1 (en) | Systems and methods for facilitating video encoding for screen-sharing applications | |
US20150117515A1 (en) | Layered Encoding Using Spatial and Temporal Analysis | |
US9053526B2 (en) | Method and apparatus for encoding cloud display screen by using application programming interface information | |
WO2017180402A1 (en) | Progressive updates with motion | |
US20170249120A1 (en) | Sharing of Multimedia Content | |
KR102247887B1 (ko) | 클라우드 스트리밍 서비스 시스템, 소스 정보를 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |