KR20160052688A - 범용 스크린 콘텐츠 코덱 - Google Patents

범용 스크린 콘텐츠 코덱 Download PDF

Info

Publication number
KR20160052688A
KR20160052688A KR1020167008968A KR20167008968A KR20160052688A KR 20160052688 A KR20160052688 A KR 20160052688A KR 1020167008968 A KR1020167008968 A KR 1020167008968A KR 20167008968 A KR20167008968 A KR 20167008968A KR 20160052688 A KR20160052688 A KR 20160052688A
Authority
KR
South Korea
Prior art keywords
content
screen
frame
encoded
codec
Prior art date
Application number
KR1020167008968A
Other languages
English (en)
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 KR20160052688A publication Critical patent/KR20160052688A/ko

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/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/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/12Selection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • 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
    • 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
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/17Methods 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/174Methods 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 slice, e.g. a line of blocks or a group of 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/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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/18Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/10Display system comprising arrangements, such as a coprocessor, specific for motion video images
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Discrete Mathematics (AREA)

Abstract

범용 스크린 콘텐츠 코덱을 제공하는 방법 및 시스템이 개시된다. 하나의 방법은 복수의 스크린 프레임들을 포함하는 스크린 콘텐츠를 수신하는 단계를 포함하고, 스크린 프레임 중 적어도 하나는 복수의 타입의 스크린 콘텐츠를 포함한다. 또한, 방법은 단일 코덱을 사용하여, 복수의 타입의 스크린 콘텐츠를 포함하는 스크린 프레임 중 적어도 하나를 인코딩하여 표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성한다. 복수의 타입의 스크린 콘텐츠는 텍스트, 비디오 또는 이미지 콘텐츠를 포함할 수 있다. 다양한 콘텐츠 타입을 포함하는 블록이 개별적으로 그리고 집합적으로 인코딩될 수 있다.

Description

범용 스크린 콘텐츠 코덱{UNIVERSAL SCREEN CONTENT CODEC}
디스플레이 상에서 컴퓨팅 시스템에 의해 사용자에게 디스플레이되는 정보를 기술하는 스크린 콘텐츠 또는 데이터는 일반적으로 복수의 다른 타입의 콘텐츠를 포함한다. 예를 들어, 이들은 텍스트 콘텐츠, 비디오 콘텐츠, 정적 이미지(예, 윈도우나 다른 GUI 요소의 디스플레이) 및 슬라이드나 다른 프레젠테이션 자료(presentation materials)를 포함할 수 있다. 갈수록 더, 스크린 콘텐츠가 멀리 전달되고, 이에 따라 예를 들면, 둘 이상의 원격 컴퓨팅 시스템이 공통 디스플레이를 공유할 수 있고, 이는 두 개의 원거리 배치된 개인이 동일한 스크린을 동시에 보는 것을 가능하게 하거나 또는 화상 회의에서 그러한 스크린이 복수의 개인들 간에 공유된다. 스크린 콘텐츠가 원거리로 전달되기 때문에, 그리고 증가하는 스크린 해상도로 인해, 이러한 콘텐츠는 자신의 본래 비트맵 사이즈 이하의 사이즈로 압축되어 대역폭을 절약하고 전송의 효율성을 향상시키는 것이 바람직하다.
스크린 콘텐츠와 같은 그래픽 데이터를 위한 복수의 압축 솔루션이 존재하나, 이러한 압축 솔루션은 가변적인 스크린 콘텐츠와 함께 사용하는 데 있어 적절하지 않다. 예를 들어, 전통적인 MPEG(Moving Picture Experts Group) 코덱은 비디오 콘텐츠에 대해 만족스러운 압축성능을 제공하는 데 이는 압축 솔루션이 일련의 프레임 간의 차이에 의존하기 때문이다. 나아가, 많은 장치는 그러한 인코딩된 데이터를 효과적으로 디코딩할 수 있는 통합된 MPEG 디코더를 가진다. 그러나, MPEG 인코딩은 비디오 콘텐츠는 아니지만 시간에 따라 변할 수 있는 콘텐츠에 대해서는 실질적인 데이터 압축을 제공하지 않고, 이에 따라 통상적으로 스크린 콘텐츠(특히, 원격 스크린 디스플레이)에 대해서는 사용되지 못한다.
전술한 문제점을 해결하기 위해, 혼합 코덱(mix of codecs)이 그래픽 데이터의 원거리 전달에 사용될 것이다. 예를 들어, 텍스트 데이터는 무손실 코덱(lossless codec)을 사용할 수 있으나, 스크린 배경 데이터 또는 비디오 데이터에는, 데이터를 압축하는 손실 코덱(lossy codec)이 사용될 수 있다(예, MPEG-4 AVC/264). 또한, 일부의 경우에, 손실 압축(lossy compression)이 프로그레시브(progressive) 기반으로 수행될 수 있다. 그러나 이러한 혼합 코덱의 사용은 문제를 일으킨다. 첫째로, 하나 이상의 코덱이 그래픽 데이터를 인코딩하는 데 사용되기 때문에, 복수의 상이한 코덱이 그래픽 데이터를 수신하는 원격 컴퓨팅 시스템에서 사용될 수 있다. 구체적으로, 원격 컴퓨팅 시스템이 씬 클라이언트(thin client) 장치인 경우에, 그러한 코덱 모두가 네이티브(native) 하드웨어에 의해 지원되지 않을 수 있다. 따라서, 범용 프로세서(general purpose processor)에서 소프트웨어 디코딩이 수행되고, 이는 컴퓨팅 자원 집약적이며 상당한 전력을 소모한다. 또한, 스크린 이미지의 서로 다른 영역에서 상이한 프로세싱 기법 및 손실 레벨을 가진 서로 다른 코덱의 사용으로 인해, 그래픽 잔여물(remnants) 또는 아티팩트(artifacts)가 저 대역폭 환경에서 나타날 수 있다.
요약하면, 본 발명은 스크린 콘텐츠에 사용되는 범용 코덱(universal codec)에 관한 것이다. 구체적으로, 본 발명은 포괄적으로 스크린 프레임과 같은 스크린 콘텐츠를 처리하는 방법 및 시스템에 관한 것이며, 스크린 프레임은 복수의 상이한 타입의 스크린 콘텐츠를 포함한다. 그러한 스크린 콘텐츠는 텍스트, 비디오, 이미지, 특수 효과 또는 다른 타입의 콘텐츠를 포함할 수 있다. 범용 코덱은 표준 기반 코덱과 호환될 수 있고, 이로써 인코딩된 스크린 콘텐츠를 수신하는 컴퓨팅 시스템으로 하여금 그러한 컴퓨팅 시스템에 공통적으로 삽입되는 특수 목적 프로세싱 유닛을 사용하여 그러한 콘텐츠를 디코딩하는 것을 가능하게 하고, 전력 소모적인 소프트웨어 디코딩 프로세스를 방지할 수 있다.
제1 측면에서, 방법은 복수의 스크린 프레임들을 포함하는 스크린 콘텐츠를 수신하는 단계를 포함하고, 여기서 스크린 프레임 중 적어도 하나는 복수의 타입의 스크린 콘텐츠를 포함한다. 또한, 방법은 복수의 타입의 스크린 콘텐츠를 포함하는 스크린 프레임 중 적어도 하나를 인코딩하여 표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성하는 단계를 포함한다.
제2 측면에서, 시스템은 프로그램가능 회로 및 컴퓨터 실행가능한 명령어를 포함하는 메모리를 포함하는 컴퓨팅 시스템을 포함한다. 실행되는 경우에, 컴퓨터 실행가능 명령어는 컴퓨팅 시스템으로 하여금 인코더에 복수의 스크린 프레임들을 제공하게 하고, 스크린 프레임 중 적어도 하나는 복수의 타입의 스크린 콘텐츠를 포함한다. 또한, 이들은 컴퓨팅 시스템으로 하여금 단일 코덱을 사용하여 복수의 타입의 스크린 콘텐츠를 포함하는 스크린 프레임 중 적어도 하나를 인코딩하여 표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성하게 한다.
제3 측면에는, 컴퓨터 실행가능 명령어가 저장된 컴퓨터 판독가능 저장 매체가 개시된다. 컴퓨팅 시스템에 의해 실행되는 경우에, 컴퓨터 실행가능 명령어는 컴퓨팅 시스템으로 하여금 복수의 스크린 프레임들을 포함하는 스크린 콘텐츠를 수신하는 단계를 포함하는 방법을 수행하게 하고, 스크린 프레임 중 적어도 하나는 텍스트 콘텐츠, 비디오 콘텐츠 및 이미지 콘텐츠를 포함한다. 또한, 방법은 텍스트 콘텐츠, 비디오 콘텐츠 및 이미지 콘텐츠를 포함하는 스크린 프레임 중 적어도 하나를 단일 코텍을 사용하여 인코딩하여 표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성하는 단계를 포함한다.
본 요약은 상세한 설명에서 이하에 추가로 기술되는 개념의 선택사항을 간략한 형태로 소개하기 위해 제공된다. 본 요약은 청구된 발명의 대상의 핵심 특징이나 주요 특징을 식별시키려는 것이 아니며 또한 청구된 발명의 대상의 범주를 제한하는 데 사용하려는 것도 아니다.
도 1은 원격 소스로부터 컴퓨팅 시스템에서 수신되는 그래픽 데이터가 처리되는 시스템에 대한 예시적인 개략적인 배열을 나타낸다.
도 2는 복수의 코덱을 사용하는 예시적인 원격 데스크톱 프로토콜 파이프라인 배열을 나타낸다.
도 3은 본 발명의 예시적인 실시예에 따라, 범용 스크린 콘텐츠 코덱을 사용하는 원격 데스크톱 프로토콜 파이프라인 배열을 나타낸다.
도 4는 도 3의 배열 내의 데이터 흐름을 나타내는 로직도이다.
도 5는 예시적인 실시예에 따라, 범용 스크린 콘텐츠 코덱을 구현하도록 수행되는 예시적인 프로세스 세트를 나타내는 흐름도이다.
도 6은 예시적인 실시예에 따라, 범용 스크린 콘텐츠 코덱의 구현예를 나타내는 상세한 아키텍처 다이어그램이다.
도 7은 예시적인 실시예에 따라 비디오 콘텐츠 인코더에 사용되는 예시적인 데이터 흐름을 나타낸다.
도 8은 예시적인 실시예에 따라, 이미지 콘텐츠 인코더에 사용되는 예시적인 데이터 흐름을 나타낸다.
도 9는 예시적인 실시예에 따라 특수 효과 콘텐츠 인코더에 사용되는 예시적인 데이터 흐름을 나타낸다.
도 10은 예시적인 실시예에 따라, 텍스트 콘텐츠 인코더에 사용되는 예시적인 데이터 흐름을 나타낸다.
도 11은 예시적인 실시예에 따라, 도 7에 설명된 비디오 콘텐츠 인코더의 모션 추정 컴포넌트 내의 예시적인 데이터 흐름을 나타낸다.
도 12는 예시적인 실시예에 따라, 도 11의 비디오 모션 추정 컴포넌트에 사용되는 스퀘어 모션 검색(square motion search)을 나타내는 로직도이다.
도 13은 예시적인 실시예에 따라, 도 11의 비디오 모션 추정 컴포넌트에 사용되는 다이아몬드 모션 검색(diamond motion search)을 나타내는 로직도이다.
도 14는 예시적인 실시예에 따라, 도 10의 텍스트 모션 추정 컴포넌트에 사용되는 역 헥사곤 모션 검색(inverse hexagon motion search)을 나타내는 로직도이다.
도 15는 도 9 및 10의 특수 효과 콘텐츠 인코더 및 텍스트 콘텐츠 인코더에 삽입된 것과 같은 모션 벡터 스무스 필터의 예시적인 아키텍처를 나타낸다.
도 16은 예시적인 실시예에 따라, 도 8의 이미지 콘텐츠 인코더에 포함된 모션 추정 컴포넌트의 예시적인 아키텍처를 나타낸다.
도 17은 예시적인 실시예에 따라, 도 16의 모션 추정 컴포넌트에 사용되는 스퀘어 모션 검색을 나타내는 로직도이다.
도 18은 본 발명의 실시예가 실현될 수 있는 컴퓨팅 장치의 예시적인 물리적 컴포넌트를 나타내는 블록도이다.
도 19a 및 19b는 본 발명의 실시예가 실현될 수 있는 모바일 컴퓨팅 장치의 간략한 블록도이다.
도 20은 본 발명의 실시예가 실현될 수 있는 분산형 컴퓨팅 시스템의 간략한 블록도이다.
간략하게 전술한 것과 같이, 본 발명의 실시예는 스크린 콘텐츠에 사용되는 범용 코덱에 관한 것이다. 구체적으로, 본 발명은 포괄적으로는 스크린 프레임과 같은 스크린 콘텐츠를 처리하는 방법 및 시스템에 관한 것이며, 스크린 프레임은 복수의 상이한 타입의 스크린 콘텐츠를 포함한다. 그러한 스크린 콘텐츠는 텍스트, 비디오, 이미지, 특수 효과 또는 다른 타입의 콘텐츠를 포함할 수 있다. 범용 코드는 표준 기반 코덱과 호환될 수 있고, 이로써 인코딩된 스크린 콘텐츠를 수신하는 컴퓨팅 시스템으로 하여금 그러한 컴퓨팅 시스템에 공통적으로 삽입되는 특수 목적 프로세싱 유닛을 사용하여 그러한 콘텐츠를 디코딩하는 것을 가능하게 하고, 전력 소모적인 소프트웨어 디코딩 프로세스를 방지할 수 있다.
원격 스크린 디스플레이 시스템의 일부 제한사항을 처리하기 위해, 원격 데스크톱 프로토콜(RDP, Remote Desktop Protocol)이 워싱턴주 레드몬드에 소재한 MICROSOFT® 사에 의해 개발되었다. 이러한 프로토콜에서는, 스크린 프레임이 다르게 분류된 서로 다른 콘텐츠를 이용하여 분석된다. RDP가 사용되는 경우에, 후속 재구성 및 디스플레이를 위해 압축되어 원격 시스템으로 전송될 스크린 콘텐츠 타입에 기초하여 혼합된 코덱 콜렉션이 적용될 수 있다. 예를 들어, 스크린의 텍스트 부분은 무손실 코덱을 사용할 수 있으나, 이미지 및 배경 데이터는 점진적으로 스크린 품질을 향상시키는 프로그레시브 코덱을 사용한다. 스크린 콘텐츠의 비디오 부분은 MPEG-4 AVC/264와 같은 표준 기반 비디오 코텍을 사용하여 인코딩되고, 그러한 표준 기반 코덱은 통상적으로 비디오 콘텐츠 또는 다른 단일 타입의 콘텐츠를 인코딩하는 것에 한정된다. 따라서, 복수의 코텍 콜렉션을 사용하는 것은 RDP로 하여금 각각의 콘텐츠 타입을 다르게 처리하게 하고, 콘텐츠의 품질이 빠르게 변화하지 않게 유지하는 한편, 보다 동적인, 변화하는 콘텐츠(예, 비디오)에 대해서는 보다 낮은 품질을 허용한다. 그러나 이러한 혼합된 코덱 콜렉션은 인코딩하는 송신 컴퓨팅 시스템 및 디코딩하는 수신 컴퓨팅 시스템 모두에게, 사용된 모든 코덱과의 호환성을 요구함으로써, 인코더 및 디코더 모두에서 계산이 복잡해지는 결과를 초래할 수 있다. 또한, 혼합 코덱은 흔히 구체적으로 저 대역폭 상황에서 스크린 콘텐츠에 시각적 아티팩트를 발생시킨다.
일부 실시예에서, 그리고 현존하는 RDP 솔루션과는 대조적으로, 본 발명의 범용 코덱이 구성되어 이의 출력 비트스트림이 MPEG 기반 코덱과 같은 특정한 표준 기반 코덱과 호환되도록 한다. 따라서, 복수의 콘텐츠 타입이 송신되는 경우에 흔히 그러한 것처럼 복수의 코덱을 사용하기 보다는, 단일 코덱이 사용될 수 있고, 송신될 특정한 타입의 콘텐츠에 인코딩이 맞춰진다. 이는 상이한 코덱을 사용하여 인코딩된 영역 사이의 경계에서 발생할 수 있는 스크린 이미지 품질의 가능한 불일치를 방지한다. 그러한 비트스트림을 수신하는 컴퓨팅 시스템은 공통으로 사용되는 하드웨어 디코더를 사용하여 수신된 비트스트림을 디코딩할 수 있다. 또한, 무손실 코덱과 손실 코덱 사이의 다른 속성으로 인해 혼합 코덱에 대한 비트 레이트를 제어하기가 어렵다. 이는 그러한 수신하는 컴퓨터의 범용 프로세서에서 비트스트림을 디코딩하는 것을 막고 결과적으로 수신하는 컴퓨터의 전력 소모를 낮춘다.
본 발명의 일부 실시예에서, 범용 코덱은, 특정한 영역의 속성을 획득하기 위한 모션 추정 또는 휴리스틱 히스토그램 프로세싱을 포함하는 프레임 사전 분석 모듈을 사용하여 구현된다. 분류기는 각각의 특정한 프레임 영역 내의 콘텐츠 타입을 판정하고, 콘텐츠 타입을 서로 다른 매크로블록으로 분할할 수 있다. 그러한 매크로블록은 콘텐츠의 타입에 기초하여 상이한 파라미터 및 품질로 인코딩될 수 있고, 서로 다르게 프로세싱될 수 있다(예를 들면, 서로 다른 모션 추정 기법을 사용하여). 그러나, 각각의 콘텐츠 타입은 결과 출력이 표준 기반 코덱과 호환될 수 있는 비트스트림으로서 제공되도록 일반적으로 인코딩된다. 그러한 표준 기반 코덱의 예는 MPEG-4 AVC/264이나, HEVC/H.265와 같은 다른 코덱이 마찬가지로 사용될 수 있다.
도 1은 원격 스크린 콘텐츠 분산이 수행될 수 있는 예시적인 개략적인 시스템의 배열(100)을 나타낸다. 도시된 것과 같이, 시스템(100)은 컴퓨팅 장치(102)를 포함하고, 컴퓨팅 장치는 CPU와 같은 프로그램가능 회로(104)를 포함한다. 컴퓨팅 장치(102)는 추가로 프로그램가능 회로(104)에 의해 실행될 수 있는 컴퓨팅 명령어를 저장하도록 구성되는 메모리(106)를 포함한다. 컴퓨팅 장치(102)로서 사용하기에 적합한 컴퓨팅 시스템의 예시적인 타입이 도 12 내지 14에 관하여 이하에서 논의된다.
일반적으로, 메모리(106)는 원격 데스크톱 프로토콜 소프트웨어(108) 및 인코더(10)를 포함한다. 원격 데스크톱 프로토콜 소프트웨어(108)는 일반적으로, 원격 장치(120)로서 표현된, 원격 컴퓨팅 장치 상의 컴퓨팅 장치(102)의 로컬 디스플레이(112)에 제시되는 스크린 콘텐츠를 복제하도록 구성된다. 일부 실시예에서, 원격 테스크톱 프로토콜 소프트웨어(108)는 레드몬드 워싱턴에 소재한 MICROSOFT® 사에 의해 정의된 원격 데스크톱 프로토콜(Remote Desktop Protocol (RDP))과 호환가능한 콘텐츠를 생성한다.
이하에 더 상세하게 논의되는 것과 같이, 인코더(110)는 원격 장치(120)에 송신하기 위해 콘텐츠가 압축되도록 복수의 콘텐츠 타입(예, 텍스트, 비디오, 이미지)의 콘텐츠에 범용 콘텐츠 코덱을 적용하도록 구성될 수 있다. 예시적인 실시예에서, 인코더(110)는 MPEG 기반 코덱과 같은 표준 기반 코덱과 호환되는 비트스트림을 생성할 수 있다. 구체적인 예에서, 인코더(110)는 MPEG-4 AVC/H.264 또는 HEVC/H.265 코덱과 같은 하나 이상의 코덱과 호환될 수 있다. 다른 타입의 표준 기반 인코딩 스킴 또는 코덱이 마찬가지로 사용될 수 있다.
도 1에 도시된 것과 같이, 인코딩된 스크린 콘텐츠가 컴퓨팅 장치(102)의 통신 인터페이스(114)에 의해 원격 장치(120)로 송신될 수 있고, 통신 인터페이스는 통신 연결부(116)(예, 인터넷)를 통해 원격 장치(120)의 통신 인터페이스(134)로 인코딩된 스크린 콘텐츠를 제공한다. 일반적으로, 그리고 이하에 논의된 것과 같이, 통신 연결부(116)는 예를 들면 통신가능한 연결부(116)를 형성하는 네트워크에서 발생하는 추가 트래픽으로 인해, 예측할 수 없는 가용 대역폭을 가질 수 있다. 따라서, 상이한 품질의 데이터가 통신 연결부(116)를 통해 송신될 수 있다.
본 발명의 맥락 속에서, 일부 실시예에서는, 원격 장치(120)가 CPU와 같은 메인 프로그램가능 회로(124) 및 특수 목적 프로그램가능 회로(125)를 포함한다. 예시적인 실시예에서, 특수 목적 프로그램가능 회로(125)는 특정한 표준(예, MPEG-4 AVC/H.264)을 가진 콘텐츠를 인코딩하거나 디코딩하도록 디자인된MPEG 디코더와 같은 표준 기반 디코더이다. 특정한 실시예에서, 원격 장치(120)는 컴퓨팅 장치(102)에 로컬인 또는 이로부터 원격인 클라이언트 장치에 대응하고, 스크린 콘텐츠를 수신하는 데 사용가능한 클라이언트 장치로서의 기능을 한다. 따라서, 원격 장치(120)의 관점에서, 컴퓨팅 장치(102)는 그래픽(예, 디스플레이) 콘텐츠의 원격 자원에 대응한다.
또한, 원격 장치는 메모리(126) 및 디스플레이(128)를 포함한다. 메모리(126)는 원격 데스크톱 클라이언트(130) 및 디스플레이 버퍼(132)를 포함한다. 원격 데스크톱 클라이언트(130)는 예를 들면, 컴퓨팅 장치(102)로부터 수신된 스크린 콘텐츠를 수신하고 디코딩하도록 구성된 소프트웨어 컴포넌트일 수 있다. 일부 실시예에서, 원격 데스크톱 클라이언트(130)는 디스플레이(128) 상에 원격 스크린을 제시하기 위해 스크린 콘텐츠를 수신하고 처리하도록 구성된다. 스크린 콘텐츠는 일부 실시예에서, 원격 데스크톱 프로토콜(워싱턴주 레드몬드에 소재한 MICROSOFT® 사에 의해 정의됨)에 따라 송신될 수 있다. 디스플레이 버퍼(132)는 예를 들면, 업데이트가 이용가능한 경우에 영역이 선택되고 교체될 수 있는 비트맵으로서 디스플레이(128) 상에 디스플레이될 스크린 콘텐츠의 현재 복사본을 메모리에 저장한다.
이제 도 2를 참조하면, RDP 프로토콜을 구현하는 예시적인 파이프라인 배열(200)이 도시된다. 도 2에 도시된 것과 같이, 파이프라인 배열(200)은 RDP 파이프라인(202)을 포함한다. RDP 파이프라인(202)은 스크린 캡처 컴포넌트(도시되지 않음)로부터 스크린 이미지를 수신하는 입력 모듈(204)을 포함하고, 이는 그러한 스크린 이미지(프레임)를 RDP 파이프라인(202)으로 전달한다. 차이 및 델타 프로세서(206)(difference and delta processor)는 현재 프레임 및 직전 프레임(immediately preceding frame) 사이의 차이를 판정하고, 캐시 프로세서(208)는 후속 프레임에 대한 비교를 위해 현재 프레임을 캐싱한다(cache). 모션 프로세서(210)는 인접한 프레임 간에 경험되는 모션의 양을 판정한다.
도시된 실시예에서, 분류 컴포넌트(212)는 각각의 스크린 프레임 내에 비디오 콘텐츠(214), 스크린 이미지 또는 배경 콘텐츠(216), 또는 텍스트 콘텐츠(218)로서 콘텐츠를 분류한다. 예를 들어, 특정한 스크린 프레임은 매크로블럭으로 분할될 수 있고, 각각의 매크로블록은 그 매크로블록 내의 콘텐츠에 따라 분류된다. 예를 들어, 비디오 콘텐츠(214)는 MPEG-4 AVC/264와 같은 MPEG 기반 코덱에 따른 인코딩을 수행하는 것으로 도시된 비디오 인코더(220)로 전달된다. 스크린 이미지 또는 배경 콘텐츠(216)는 프로그레시브 인코더(222)로 전달되고, 이는 저 품질 이미지 데이터가 처음으로 인코딩되어 원격 시스템에 제공되는 반복적 개선 인코딩 프로세스를 수행하고, 이어서 대역폭이 허용하는 대로 시간에 따라 개선된다. 또한, 텍스트 콘텐츠(218)는 깨끗한 무손실 코덱을 사용하여 텍스트를 인코딩하는 텍스트 인코더(224)로 제공된다. 비디오 인코더(220), 프로그레시브 인코더(222) 및 텍스트 인코더(224) 각각으로부터 인코딩된 콘텐츠가 RDP 파이프라인(202) 내의 멀티플렉서(226)로 다시 전달되고, 이는 매크로블록을 합계하고 대응하는 비트스트림을 원격 시스템으로 출력한다.
그에 반해서, 도 3은 본 발명의 예시적인 실시예에 따라 범용 스크린 콘텐츠 코덱을 사용하는 예시적인 원격 데스크톱 프로토콜 파이프라인 배열(300)을 나타낸다. 도 3에 도시된 것과 같이, 파이프라인 배열(300)은 RDP 파이프라인(302)을 포함한다. RDP 파이프라인(302)은 스크린 캡처 컴포넌트(도시되지 않음)로부터 스크린 이미지를 수신하는 입력 모듈(304)을 포함하고, 이는 그러한 스크린 이미지(프레임)를 RDP 파이프라인(302)으로 전달한다. RDP 파이프라인(302)은 범용 인코더(306)로 캡처된 프레임 모두를 전달하고, 범용 인코더는 공통의 범용 스크린 콘텐츠 코덱을 사용하여 전체 스크린 프레임을 인코딩한다. 범용 인코더로부터의 출력이 RDP 파이프라인(302) 내의 출력 모듈(308)로 제공되고, 이는 차례로 단일한 표준 기반 코덱(이는 수신 장치(예, MPEG-4 AVC/264 하드웨어 디코더)의 하드웨어 디코더를 사용하여 손쉽게 디코딩될 수 있음)과 호환되는 비트스트림을 출력한다.
지금부터 도 4를 참조하면, 도 3의 파이프라인 배열 내의 데이터 흐름(400)의 로직도가 도시된다. 도시된 것과 같이, RDP 파이프라인(302)은 캡처된 스크린 프레임을 수신하는 RDP 스케줄러(402)를 포함하고, 그러한 스크린 프레임 데이터를 코덱 프리프로세서(preprocessor)(404)로 제공한다. 코덱 프리프로세서(404)는 전체 스크린 프레임을 비트 레이트 및 컬러 변환 정보와 함께 또한 저 복잡도(low complexity)로 데이터를 인코딩할지 여부를 나타내는 플래그와 함께 스크린 미가공 데이터(screen raw data)(406)로서 범용 인코더(306)에 송신한다. 범용 인코더(306)는 스크린 미가공 데이터(406) 및 연관된 인코딩 정보를 전체 스크린 코덱 유닛(408)에서 수신한다. 전체 스크린 코덱 유닛(408)은 전체 스크린 프레임의 인코딩된 버전을 생성하고, 이로써 인코딩된 비트스트림(410) 및 인코딩을 기술하는 메타데이터(412)를 생성한다. 인코딩을 기술하는 메타데이터(412)는 예를 들면, RDP 파이프라인(302) 내의 코덱 포스트프로세서(postprocessor)(414)에 제공되는 예를 들면, 양자화 파라미터(QP, quantization parameter)를 포함한다. 또한, QP는 캡처를 정지시킬지 아니면 계속할지 여부를 결정하는 데 사용될 수 있다. 일반적으로, 이는 인코딩된 스크린 프레임의 품질을 코덱 포스트프로세서(414)에게 알려준다. 코덱 포스트프로세서(414)는 양자화 파라미터에 기초하여, (예를 들면, 가용 대역폭에 기초하여 품질이 충분하지 않은 경우에) 인코딩을 위해 하나 이상의 파라미터를 조절하라고 RDP 스케줄러(402)에게 나타내고, 이에 따라 RDP 스케줄러(402)는 스크린 프레임 인코딩을 다시 스케줄링할 수 있다. 코덱 포스트프로세서(414)는 또한 후속 스크린 프레임을 분석 및 스케줄링하는 데 사용하기 위해 RDP 스케줄러에게 인코딩된 비트스트림을 제공한다.
코덱 포스트프로세서(414)가 전체 스크린 프레임이 수용가능하다고 판정하면, 코덱 포스트프로세서는 멀티플렉서(416)에게 인코딩된 비트스트림(410) 및 메타데이터(412)가 디스플레이를 위한 원격 시스템에 송신될 준비가 되어 있다고 나타내고, 멀티플렉서(416)는 송신하기 위해 비디오를 임의의 다른 동반 데이터(예, 오디오 또는 다른 데이터)와 결합한다. 선택적으로, 코덱 포스트프로세서(414)는 멀티플렉서(416)에게 인코딩된 비트스트림(410)을 송신하라고 나타낼 수 있고, 또한 RDP 스케줄러(402)에게는 시간에 따라 이미지를 점진적으로 개선하도록 하라고 나타낼 수 있다. 이러한 루프 프로세스는 일반적으로 사전 지정된 임계치에 도달할 때까지, 코덱 포스트프로세서(414)에 의해 판정된 대로 반복될 수 있거나, 또는 프레임에 대한 대역폭이 충분하지 않게 될 때까지(여기서, 코덱 포스트프로세서(414)는 품질 임계치에 도달했는지 여부에 상관없이 멀티플렉서(416)에게 스크린 프레임과 통신하라고 신호한다) 반복될 수 있다.
이제 도 5를 참조하면, 범용 스크린 콘텐츠 코덱을 구현하도록 수행되는 예시적인 방법(500)의 흐름도가 예시적인 실시예에 따라 도시된다. 방법(500)은 일반적으로 각각의 스크린 프레임이 캡처된 후에 디스플레이를 위해 원격 컴퓨팅 시스템에 송신을 하기 전에, 각각의 스크린 프레임에 대해 수행되는 일련의 동작 세트로서 구현된다. 방법(500)의 동작은 일부 실시예에서, 도 4의 전체 스크린 코덱 유닛(408)에 의해 수행될 수 있다.
도시된 실시예에서, 전체 스크린 프레임이 입력 동작(502)에서 수신되고, 프레임 사전 분석 동작(504)으로 전달된다. 프레임 사전 분석 동작(504)은 입력 스크린 프레임의 속성(예, 자신의 사이즈, 콘텐츠 타입 및 스크린 프레임을 기술하는 다른 메타데이터)을 계산한다. 프레임 사전 분석 동작(504)은 16x16 블록 사이즈와 같은 특정한 블록 사이즈의 코드 유닛을 출력한다. 인트라/인터(intra/inter) 매크로블록 프로세싱 동작(506)은 모드 결정, 다양한 타입의 움직임 예측(이하에서 더 상세히 논의됨) 및 각각의 매크로블록 상의 스크린 프레임에 포함된 다양한 타입의 콘텐츠 각각에 대한 특정한 인코딩 프로세스를 수행한다. 엔트로피 인코더(508)는 인코딩된 데이터 및 잔류 계수(residue coefficients)를 인트라/인터 매크로블록 프로세싱 동작(506)의 다양한 콘텐츠 인코딩 프로세스로부터 수신하고, 스크린 또는 그래픽 콘텐츠에 대해 사용가능한 선택된 표준 기반 코덱과 일반적으로 호환되는 포맷을 가진 최종의 통일된 인코딩을 제공한다.
도 6은 예시적인 실시예에 따라, 프레임 사전 분석 동작(504) 및 인트라/인터 매크로블록 프로세싱 동작(506)의 세부사항을 나타낸다. 사전 분석 동작(504) 내에서, 장면 전환 검출 프로세서(602)가 이전 스크린 프레임에 관하여 장면이 변경되었는지 여부를 판정한다. 프레임이 첫 번째 프레임이 아니거나 장면 전환 포인트가 아니면, 활용될 수 있는 프레임 간에 일부 차이가 존재할 것이다(즉, 전체 프레임에 못 미치는 프레임이 재 인코딩될 수 있음). 따라서, 미가공 스크린 프레임이 심플 모션 추정 프로세스(604)로 전달되고, 이는 사전 스크린 프레임에 관하여 스크린 프레임 내의 요소에 대한 SAD(sum absolute difference) 및 모션 벡터(MV, motion vector)를 생성한다.
스크린 프레임이 새로운 프레임 또는 새로운 장면인 경우에 또는 심플 모션 추정 프로세스(604) 내의 모션 추정 파라미터에 기초하는 경우에, 프레임 타입 결정 프로세스(606)는 프레임이 I-프레임, P-프레임 또는 B-프레임에 대응하는지 여부를 판정한다. 일반적으로, I-프레임은 기준 프레임에 대응하고 완전히 특정된 픽처(fully-specified picture)로서 정의된다. 예를 들어, I-프레임은 제1 프레임 또는 장면 전환 프레임일 수 있다. P-프레임은 전방 예측 픽처(forward predicted pictures)를 정의하는 데 사용되며, B-프레임은 양방향 예측 픽처를 정의하는 데 사용된다. P-프레임 및 B-프레임은 모션 벡터 및 변환 계수(transform coefficients)로서 표현된다.
프레임이 I-프레임인 경우에, 프레임은 휴리스틱 히스토그램 프로세스(608)이고, 이는 입력되는 전체 스크린 콘텐츠의 히스토그램을 계산한다. 계산된 히스토그램 및 또한 휴리스틱 히스토그램 프로세스(608)에서 계산된 평균 절대차(mean absolute difference)에 기초하여, I-프레임 분석 프로세스(610)가 분류 프로세스(612)에 의해 사용되는 데이터를 생성하고, 이는 프레임의 특정한 영역(매크로블록) 내의 데이터가 비디오, 이미지, 텍스트 또는 특수 효과 데이터에 대응하는지 여부를 검출하기 위한 결정 트리(decision tree)에 사용될 수 있다.
프레임이 P-프레임이면, 프레임은 P-프레임 클러스터링 프로세스(614)로 전달되고, 이는 합산 절대차(sum absolute difference) 및 모션 벡터를 사용하여 분류 정보를 통합한다. P-프레임 분석 프로세스(616)는 이후에 프레임을 분석하여 분류 프로세스(612)가 프레임의 각각의 매크로블록 내의 콘텐츠 타입을 판정하는 것을 돕는 메타데이터를 생성한다. 마찬가지로, 프레임이 B-프레임인 경우에, 프레임은 B-프레임 클러스터링 프로세스(618)로 전달되고, 이는 합산 절대차 및 모션 벡터를 사용하여 합산 절대차 정보를 통합한다. B-프레임 분석 프로세스(620)는 이어서 프레임을 분석하여 분류 프로세스(612)가 프레임의 각각의 매크로블록 내의 콘텐츠 타입을 판정하는 것을 돕는 메타데이터를 생성한다. P-프레임 및 B-프레임의 경우에, 이들은 텍스트 콘텐츠 타입에 대응하지 않을 수 있다는 점에 주의해야 하는데, 이는 이들이 사전 프레임과의 차이로서 정의되는 모션 변경 프레임을 나타내고 (예를 들면, 비디오 또는 이미지 움직임에서와 같이) 프레임 간의 움직임을 인코딩하기 위한 것이기 때문이다.
분류 프로세스(612)는 분석 프로세스(610, 616, 620)에 의해 생성된 메타데이터를 사용하고 메타데이터 및 매크로블록 데이터를 인트라/인터 매크로블록 프로세싱 동작(506) 내의 다양한 콘텐츠 인코딩 프로세스로 출력한다. 콘텐츠 인코딩 프로세스는 예를 들면, 다양한 타입의 콘텐츠에서 수행되는 인코딩을 맞춤화하는 데 사용될 수 있어, 범용 코덱이 프레임 내에 존재하는 콘텐츠 타입에 기초하여 단일 프레임 내에서 품질을 선택적으로 변경하는 것을 가능하게 한다. 구체적으로, 도시된 실시예에서, 분류 프로세스(612)는 비디오 콘텐츠(622)를 비디오 매크로블록 인코딩 프로세스(623)로 전달하고, 스크린 및 배경 콘텐츠(626)를 스크린 및 배경 매크로블록 인코딩 프로세스(628)로 전달하며, 특수 효과 콘텐츠(630)를 특수 효과 매크로블록 인코딩 프로세스(632)로 전달하고, 텍스트 콘텐츠(634)를 텍스트 매크로블록 인코딩 프로세스(636)로 전달한다. 일반적으로, 인코딩 프로세스(624, 628, 632, 636) 각각은 상이한 모드 결정 및 모션 추정 알고리즘을 사용하여 각각의 매크로블록을 다르게 인코딩 한다. 그러한 인코딩 프로세스의 예가 도 7 내지 10을 참조하여 이하에 추가로 논의된다. 인코딩 프로세스(624, 628, 632, 636) 각각은 인코딩된 콘텐츠를 엔트로피 인코더(508)로 라우팅할 수 있고, 전술한 것과 같이 이는 인코딩된 매크로블록을 결합하고, 비트스트림으로서 원격 시스템에 송신하기 위해 표준 기반 코덱과 호환되는 방식으로 전체 스크린 프레임을 인코딩한다.
지금부터 도 7을 참조하면, 비디오 인코더(700)에서 사용되는 예시적인 데이터 흐름이 도시된다. 예시적인 실시예에서, 비디오 인코더(700)는 도 6의 비디오 매크로블록 인코딩 프로세스(624)를 수행하는 데 사용될 수 있다. 일반적으로, 비디오 인코더(700)는 비디오 인코더에서 수신된 모드 결정에 기초하여 인트라 매크로블록 콘텐츠(702) 및 인터 매크로블록 콘텐츠(704)를 분할한다. 인트라 매크로블록 콘텐츠(702)에 관하여, 이는 비디오 데이터라는 것이 알려져 있기 때문에, 고 복잡도 인트라 매크로블록 예측 동작(706)이 사용되고, 이는 모든 모드(예, 16x16, 8x8, 및 4x4 모드)에 대한 인트라 예측이 수행될 수 있다는 것을 의미한다. 인터 매크로블록 콘텐츠(704)에 관하여는, 하이브리드 모션 추정 동작(708)이 사용된다. 하이브리드 모션 추정 동작(708)은 인터 매크로블록 콘텐츠(704)에 포함되는 블록에 대한 조합된 추정에 기초하여 모션 추정을 수행하여 프레임에 대한 시각적 품질의 유지 및 정확한/정밀한 모션을 보장한다. 대부분의 RDP 콘텐츠가 이미 압축되었기 때문에, 이러한 하이브리드 모션 추정 동작(708)은 전통적인 비디오 콘텐츠에 대해 보다 높은 압축률을 발생시킨다.
고 복잡도 인트라 매크로블록 예측 동작(706) 또는 하이브리드 모션 추정 동작(708)에서부터, 변환 및 양자화 동작(710)이 수행되고, 마찬가지로 역 양자화 및 변환 동작(712)이 수행된다. 추가 모션 예측 동작(714)이 추가로 수행되고, 예측된 모션이 적응형 루프 필터(adaptive loop filter)(716)로 전달된다. 일부 실시예에서, 적응형 루프 필터(716)은 적응형 블록해제 필터(adaptive deblocking filter)로서 구현되고, 추가로 최종 인코딩 이미지를 개선한다. 최종 이미지 블록은 이어서 픽처 레퍼런스 캐시(718)로 전달되고, 픽처 레퍼런스 캐시는 합산된 스크린 프레임을 저장한다. 또한, 픽처 레퍼런스 캐시(718)는 예를 들면, 모션 추정 프로세스에 사용되는 인터 매크로블록 비교를 가능하게 하기 위해 하이브리드 모션 추정 동작(708)에서 사용되도록 제공된다.
이제 도 8을 참조하면, 이미지 콘텐츠 인코더(800)에 사용되는 예시적인 데이터 흐름이 도시된다. 예시적인 실시예에서, 이미지 콘텐츠 인코더(800)는 도 6의 스크린 및 배경 매크로블록 인코딩 프로세스(628)를 수행하는 데 사용될 수 있다. 일반적으로, 이미지 콘텐츠 인코더(800)는 전술한 비디오 인코더(700)와 유사하게, 이미지 콘텐츠 인코더(800)에서 수신된 모드 결정에 기초하여 인트라 매크로블록 콘텐츠(802) 및 인터 매크로블록 콘텐츠(804)를 분할한다. 이미지 콘텐츠 인코더(800)는 비디오 인코더(700)와 유사하게 고 복잡도 인트라 매크로블록 예측 동작(806)을 포함한다. 그러나, 비디오 인코더에 의해 수행되는 하이브리드 모션 추정와 달리, 이미지 콘텐츠 인코더(800)에서는, 심플 모션 추정 동작(808) 및 글로벌 모션 추정 동작(810)이 포함된다. 일반적으로, 글로벌 모션 추정 동작(810)은 스크롤링된 문서 또는 이동된 윈도우의 경우에서와 같이 이미지의 많은 부분이 이동되는 라지 스케일 모션에 사용될 수 있는 반면에, 심플 모션 추정 동작(808)은 스크린에서 일어나는 스몰 스케일 모션에 대해 이용될 수 있다. 글로벌 모션 추정 동작(810)의 사용은 전통적인 비디오 인코더보다 더 정확한 모션 추정을 보다 높은 효율로 가능하게 하고, 프레임 간의 움직임을 판정하기 위해 작은 영역에 대해 계산을 수행할 것이다. 일부 실시예에서, 심플 모션 추정 동작(808) 및 글로벌 모션 추정 동작(810)은 이하에서 도 16에 나타낸 것과 같이 수행될 수 있다.
비디오 인코더에서와 같이, 고 복잡도 인트라 매크로블록 예측 동작(806) 또는 글로벌 모션 추정 동작(810)으로부터, 변환 및 양자화 동작(812)이 수행되고, 마찬가지로 역 양자화 및 변환 동작(814)이 수행된다. 추가 모션 예측 동작(816)이 추가로 수행되고, 예측된 동작은 적응형 루프 필터(818)로 전달된다. 일부 실시예에서, 적응형 루프 필터(818)는 적응형 블록해제 필터로서 구현되고, 이는 추가로 최종 인코딩 이미지를 개선한다. 최종 이미지 블록은 이후에 픽처 레퍼런스 캐시(718)로 전달되고, 이는 모든 타입의 매크로블록을 포함하는 합산된 스크린 프레임을 저장한다. 또한, 픽처 레퍼런스 캐시(718)는 예를 들면 심플 모션 추정 프로세스에서 사용되는 인터 매크로블록 비교를 가능하게 하기 위해, 심플 모션 추정 동작(808)에 의해 사용되도록 제공될 수 있다.
지금부터 도 9를 참조하면, 특수 효과 콘텐츠 인코더(900)에 사용되는 예시적인 데이터 흐름이 도시된다. 일반적으로, 특수 효과는 페이드 인/페이드 아웃 효과와 같이, 프레젠테이션에서 발생할 수 있는 구체적인 효과를 나타낸다. 특수 효과에 대한 구체적인, 분할 압축 전략(separate compression strategy)이 그러한 효과에 대해 더 많은 압축을 가능하게 하고, 보다 효율적으로 인코딩된 비트스트림으로 이어진다. 예시적인 실시예에서, 특수 효과 콘텐츠 인코더(900)는 도 6의 특수 효과 매크로블록 인코딩 프로세스(632)를 수행하는 데 사용될 수 있다.
일반적으로, 특수 효과 콘텐츠 인코더(900)는 전술한 비디오 인코더(700) 및 이미지 콘텐츠 인코더(800)와 유사하게, 특수 효과 콘텐츠 인코더(900)에서 수신된 모드 결정에 기초하여 인트라 매크로블록 콘텐츠(902) 및 인터 매크로블록 콘텐츠(904)를 분할한다. 특수 효과 콘텐츠 인코더(900)는 전술한 것과 유사하게 고 복잡도 인트라 매크로블록 예측 동작(906)을 포함한다. 그러나, 특수 효과 콘텐츠 인코더(900)에서는 하이브리드 모션 추정 또는 심플 모션 추정보다는, 가중된 모션 추정 동작(908)이 수행되고, 뒤이어 모션 벡터 스무스 필터 동작(910)이 수행된다. 가중된 모션 추정 동작(908)은 프레임 간의 변화를 검출하기 위해 컴퓨팅 심화 비디오 인코딩(computing-intensive video encoding)을 사용하도록 요구하지 않고, 휘도 변화 및 심플 모션 검출을 사용하여 그러한 특수 효과를 검출한다. 모션 벡터 스무스 필터 동작이 모션 벡터의 코딩 성능을 향상시키고, 또한 특수 효과 스크린 콘텐츠의 시각적 품질을 향상시키도록 제공된다. 이하에 추가로 설명되는 것과 같이, 모션 벡터 스무스 필터 동작(910)을 수행하는 데 사용될 수 있는 모션 벡터 스무스 필터의 예가 도 15에 도시된다. 일부 실시예에서, 가중된 모션 추정 동작(908) 및 모션 벡터 스무스 필터 동작(910)의 사용은 그러한 변화의 인코딩에 관하여 실질적인 (예를 들면, 약 20번까지 또는 그 이상의) 성능 변화를 제공한다.
비디오 인코더(700) 및 이미지 콘텐츠 인코더(800)와 유사하게, 고 복잡도 인트라 매크로블록 예측 동작(906) 또는 모션 벡터 스무스 필터 동작(910)에서부터, 변환 및 양자화 동작(912)이 수행되고, 마찬가지로 역 양자화 및 변환 동작(914)이 수행된다. 추가 모션 예측 동작(916)이 추가로 수행되고, 예측된 모션이 적응형 루프 필터(918)로 전달된다. 일부 실시예에서, 적응형 루프 필터(918)가 적응형 블록해제 필터로서 구현되고, 인코딩된 이미지가 추가로 개선된다. 이어서, 최종 이미지 블록이 픽처 레퍼런스 캐시(718)로 전달된다. 픽처 레퍼런스 캐시(718)는 또한 예를 들면 모션 추정 프로세스에서 사용되는 인터 매크로블록 비교를 가능하게 하기 위해 가중된 모션 추정 동작(908)에 의해 사용되도록 제공된다는 점에 주의한다.
도 10을 참조하면, 텍스트 콘텐츠 인코더(1000)에 사용되는 예시적인 데이터 흐름이 설명된다. 예시적인 실시예에서, 특수 효과 콘텐츠 인코더(1000)는 도 6의 텍스트 매크로블록 인코딩 프로세스(636)를 수행하는 데 사용될 수 있다. 인코더(700-900)에 관하여 설명된 것과 같이, 텍스트 콘텐츠 인코더(1000)는 텍스트 콘텐츠 인코더(1000)에서 수신된 모드 결정에 기초하여 인트라 매크로블록 콘텐츠(1002) 및 인터 매크로블록 콘텐츠(1004)를 분할한다. 텍스트 콘텐츠 인코더(1000)는 인트라 매크로블록 콘텐츠(1002)에 대해 저 복잡도 모션 예측 동작(1006)을 수행하는데, 이는 그러한 콘텐츠가 일반적으로 낮은 복잡도를 가지기 때문이다. 구체적으로, 일부 실시예에서, 저 복잡도 모션 예측 동작(1006)은 4X4 예측 모드만을 수행한다. 인터 매크로블록 콘텐츠(1004)에 대해, 텍스트 콘텐츠 인코더(1000)는 텍스트 모션 추정 동작(1008)을 수행하고, 일부 실시예에서, 이는 역 헥사곤 모션 추정을 수행한다. 그러한 모션 추정의 일 예가 도 14에 그래픽적으로 표현되며, 여기서, 수직, 수평 및 각이 있는(angled) 모션 추정이 텍스트 블록에 관하여 수행된다. 모션 벡터 스무스 필터(1010)는 텍스트 모션 추정 동작(1008)에 뒤이어 적용될 수 있고, 이하에 보다 상세하게 논의되는 도 15에 도시된 것과 같을 수 있다.
인코더(700-900)와 유사하게, 저 복잡도 모션 예측 동작(1006) 또는 모션 벡터 스무스 필터 동작(1010)에서부터, 변환 및 양자화 동작(1012)이 수행되고, 마찬가지로 역 양자화 및 변환 동작(1014)이 수행된다. 추가 모션 예측 동작(1016)이 추가로 수행된다. 결과 텍스트 블록이 이후에 픽처 레퍼런스 캐시(718)에 전달되고, 이는 합산된 스크린 프레임을 저장한다. 픽처 레퍼런스 캐시(718)는 또한, 예를 들면 텍스트 모션 추정 프로세스에서 사용되는 인터 매크로블록 비교를 가능하게 하기 위해 텍스트 모션 추정 동작(1008)에서 사용되도록 제공된다.
일반적으로 도 7 내지 10을 참조하면, 각각의 스크린 프레임에서 검출된 상이한 타입의 콘텐츠에 기초하여, 서로 다른 모션 추정이 수행될 수 있다. 추가로, 이전에 언급한 바와 같이, 이미지, 텍스트 및 스크린 프레임의 비디오 부분에 대한 가독성(readability) 또는 픽처 품질을 보증하기 위해 각각의 블록에 대해 상이한 품질 파라미터가 사용될 수 있다. 예를 들어, 인코더 각각은 상이한 양자화 파라미터(QP) 값을 가진 인코딩된 데이터를 생성하도록 구성될 수 있고, 이들은 다른 품질을 나타낸다. 구체적으로, 텍스트 인코더(1000)는 낮은 QP 값(따라서 높은 품질)을 가진 인코딩된 텍스트를 생성하도록 구성될 수 있는 한편, 비디오 데이터는 (원격 장치로 인코딩된 콘텐츠를 송신하기 위해 인코딩 컴퓨팅 시스템에서 이용가능한 대역폭에 따라) 비교적 더 높은 QP 및 더 낮은 품질을 제공하도록 비디오 인코더(700)에 의해 인코딩될 수 있다. 이제, 도 11 내지 17을 참조하면, 전술한 인코더에 의해 수행되는 다양한 모션 추정 프로세스에 관한 추가적인 세부사항이 제공된다.
도 11을 참조하면, 구체적으로, 모션 추정 컴포넌트(1100)가 도 7의 비디오 인코더(700)와 같은 비디오 인코더에서 사용될 수 있다. 일부 실시예에서, 모션 추정 컴포넌트(1100)는 도 7의 하이브리드 모션 추정 동작(708)을 수행할 수 있다. 도 11에 도시된 것과 같이, 초기 모션 추정은 스퀘어 모션 추정(1102)를 사용하여 수행되는 데, 스퀘어 모션 추정에서는 수직 및 수평 모션 추정이 매크로블록 내의 콘텐츠에 대해 수행된다. 이는 스크린 프레임 내의 다양한 콘텐츠의 X-Y 모션을 나타내도록 모션 벡터 세트가 생성되게 한다. 이해할 수 있는 것과 같이, 예를 들면 도 12에서, 스퀘어 모션 추정(1102)가 "PMV"로서 표현되는 모션 벡터를 검출하는 데 사용되고, 모션에서 객체의 중심점(midpoint)의 모션을 나타낸다. 고속 스킵 결정(fast skip decision)(1104)은 모션 추정이 비디오 콘텐츠 내의 객체의 모션을 나타내기에 적합한지 여부를 판정한다. 일반적으로, 이는 모션이 거의 없는 경우에 그러한 것이며, 많은 비디오 프레임에 대해 사용될 수 있다. 그러나, 스퀘어 모션 추정(1102)가 수용될 수 없는 경우에, 스크린 매크로블록이 다운샘플링 컴포넌트(1106)로 전달되고, 이는 다운샘플링 동작(1108), 다운샘플링 평면 모션 추정(1110), 및 모션 벡터 생성 동작(1112)을 포함한다. 이러한 다운샘플링된 모션 벡터 세트가 다이아몬드 모션 추정(1114)로 제공된다. 다이아몬드 모션 추정(1114)는 모션이 추정되는 포인트 주위의 샘플링된, 대각선으로 이격된 포인트(diagonally-spaced points)의 중심점으로부터 정의된 모션 벡터를 생성한다. 그러한 다이아몬드 모션 추정의 일 예가 도 13에 도시되고, 이 예에서는 대각선 모션이 다운샘플링 후에 검출될 수 있고, 이로써 그러한 모션 계산의 효율성이 높아진다.
다이아몬드 모션 추정(1114)로부터 또는 고속 스킵 결정(1104)이 다운샘플링이 필요하지 않다고 판정하는 경우에(예를 들어, 스퀘어 모션 추정(1102) 후에 모션 추정이 이미 충분함), 종료 동작(1116)은 그러한 매크로블록에 대해 모션 추정의 완료를 나타낸다.
도 14는 예시적인 실시예에 따라, 도 10의 텍스트 모션 추정 컴포넌트에서 사용되는 역 헥사곤 모션 추정(1400)의 로직도이다. 도 14에 설명된 것과 같이, 사용되는 역 헥사곤 모션 추정(1400)는 육방 격자에 대한 샘플링을 수행하고 이어서 주파수 도메인에서 교차상관을 수행하며, 여기서 그리드에 정의된 전체 매크로블록의 서브셀(subcell)은 비정수(non-integer), 각도 변화 또는 텍스트 데이터의 이동을 등록한다. 이는 텍스트 콘텐츠 인코더(1000)의 콘텍스트 내에서 사용되는 경우에, 텍스트의 각도 이동에 대한 보다 정확한 추적을 가능하게 한다.
도 15는 모션 벡터 스무스 필터의 예시적인 아키텍처를 나타내고, 일부 실시예에서, 이러한 아키텍처는 도 9 및 10의 모션 벡터 스무스 필터(910, 1010) 각각을 구현하는 데 사용될 수 있다. 도시된 실시예에서, 모션 벡터 스무스 필터는 모션 벡터 입력 동작(1502)에서 모션 벡터를 수신하고, 모션 벡터를 저역 통과 필터(1504) 및 모션 벡터 캐시 윈도우로 전달한다. 저역 통과 필터(1504)는 매크로블록 내에 제시되는 모션 벡터의 수직 및 수평 컴포넌트를 필터링하는 데 사용된다. 모션 벡터 캐시 윈도우(1506)는 지난 이웃 필터(past neighbor filter)를 저장하고, 저역 통과 필터(1504)로 전달하여 사전 이웃 모션 벡터(prior neighbor motion vectors)를 마찬가지로 평탄화(smoothen)한다. 가중된 중간값 필터(median filter)(1508)는 매크로블록의 인접한 섹션 사이에 이웃 모션 벡터의 추가적인 평탄화(smoothing)를 제공하여 필터 오류를 방지하고 인코딩된 모션이 평탄화되는 것을 보장한다. 따라서, 히스토리 모션 벡터 및 필터의 사용은 가중된 중간값 필터(1508) 덕에, 특수 효과 또는 다른 변화와의 적합성(conformance)이 보전되는 것을 보증하는 평탄화 모션을 가능하게 한다.
도 16은 예시적인 실시예에 따라, 도 8의 이미지 콘텐츠 인코더에 포함될 수 있는 모션 추정 컴포넌트(1600)의 예시적인 아키텍처를 나타낸다. 예를 들어, 모션 추정 컴포넌트(1600)는 이미지 콘텐츠 인코더(800)의 심플 모션 추정 동작(808) 및 글로벌 모션 추정 동작(810) 모두를 수행하는 데 사용된다. 도시된 실시예에서, 스퀘어 모션 추정 동작(1602)이 인터 매크로블록 콘텐츠에 대해 먼저 수행되어 심플 모션 추정을 완료한다. 스퀘어 모션 추정 동작(1602)은 도 17에 도시된 것과 같이, 콘텐츠 내의 각각의 위치에 대해, 그 위치 주위를 둘러싸는 네 개의 포인트의 움직임에 기초하여 벡터를 판정한다. 모션 벡터 및 인터 매크로블록 콘텐츠는 이후에 글로벌 모션 추정 동작(1604)으로 전달되고, 이는 모션 모델 추정 동작(1606) 및 경사 이미지(gradient image) 계산 동작(1608))을 포함한다. 구체적으로, 스퀘어 모션 추정 동작(1602)으로부터의 모션 벡터가 모션 모델 추정 동작(1606)으로 전달되어 글로벌 모션을 추적하고, 경사 이미지가 이미지의 글로벌 모션을 판정하는 것을 돕는 데 사용될 수 있다. 이러한 배열은 배경 이미지 또는 스크린의 많은 이미지 또는 부분들이 동시에 이동하는 다른 경우에 특히 유용하다.
도 18 내지 20 및 관련 설명은 본 발명의 실시예가 실행될 수 있는 다양한 동작 환경에 대한 논의를 제공한다. 그러나, 도 18 내지 20에 관하여 설명되고 논의된 장치 및 시스템은 예시를 목적으로 한 것이며, 본 명세서에 설명된 발명의 실시예를 실현하는 데 사용될 수 있는 방대한 수의 컴퓨팅 장치 구성을 제한하는 것은 아니다.
도 18은 본 발명의 실시예가 실현될 수 있는 컴퓨팅 장치(1800)의 물리적인 컴포넌트(즉, 하드웨어)를 나타내는 블록도이다. 이하에 설명된 컴퓨팅 장치는 도 1의 원격 장치(102, 120)와 같은 컴퓨팅 장치로서 동작하기에 적합할 수 있다. 기본 구성에서, 컴퓨팅 장치(1800)는 적어도 하나의 프로세싱 유닛(1802) 및 시스템 메모리(1804)를 포함할 수 있다. 컴퓨팅 장치의 구성 및 타입에 따라, 시스템 메모리(1804)가 휘발성 저장소(예, 랜덤 액세스 메모리), 비휘발성 저장소(예, 리드 온리 메모리), 플래시 메모리 또는 그러한 메모리의 임의의 조합을 포함할 수 있으나, 이에 한정되는 것은 아니다. 시스템 메모리(1804)는 운영체제(1805) 및 도 1에 관하여 전술한 원격 데스크톱 프로토콜 소프트웨어(108) 및 인코더(110)와 그리고 구체적으로는 도 2 내지 17에 관하여 설명된 인코딩과 같은 소프트웨어 애플리케이션(1820)을 동작시키는 데 적합한 하나 이상의 프로그램 모듈(1806)을 포함할 수 있다. 운영체제(1805)는 예를 들면, 컴퓨팅 장치(1800)의 동작을 제어하는 데 적합할 수 있다. 또한, 본 발명의 실시예가 그래픽 라이브러리, 다른 운영체제 또는 임의의 다른 애플리케이션 프로그램과 함께 실행될 수 있고, 임의의 특정한 애플리케이션이나 시스템에 한정되는 것은 아니다. 이러한 기본 구성은 도 18에 파선(1808) 내의 컴포넌트로 표현된다. 컴퓨팅 장치(1800)는 추가적인 특징이나 기능을 가질 수 있다. 예를 들어, 컴퓨팅 장치(1800)는, 예를 들면, 자기 디스크, 광학 디스크 또는 테이프와 같은 추가적인 데이터 저장 장치(착탈식 및/또는 비착탈식)를 포함할 수 있다. 그러한 추가 저장소는 도 18에서, 착탈식 저장 장치(1809) 및 비착탈식 저장 장치(1810)로 표현된다.
전술한 것과 같이, 복수의 프로그램 모듈 및 데이터 파일이 시스템 메모리(1804)에 저장될 수 있다. 프로세싱 유닛(1802)에서 실행되는 동안, 프로그램 모듈(1806)(예를 들면, 원격 데스크톱 프로토콜 소프트웨어(108) 및 인코더(110))은 본 명세서에 설명된 범용 코덱 인코더 또는 디코더의 동작을 포함하는(이에 한정되는 것은 아님) 프로세스를 수행할 수 있다. 본 발명의 실시예에 따라, 구체적으로는 스크린 콘텐츠를 생성하는 데 사용될 수 있는 다른 프로그램 모듈은 전자 메일 및 연락처 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 데이터베이스 애플리케이션, 슬라이드 프레젠테이션 애플리케이션, 도면 또는 컴퓨터-보조 애플리케이션 프로그램 등을 포함할 수 있다.
또한, 본 발명의 실시예는 구분된 전자 구성요소를 포함하는 회로, 로직 게이트를 포함하는 패키지화되거나 집적된 전자 칩, 마이크로프로세서를 사용하는 회로 내에 구현되거나 또는 전자 구성요소나 마이크로프로세서를 포함하는 단일 칩 상에 구현될 수 있다. 예를 들어, 본 발명의 실시예는 시스템 온 칩(SOC)을 통해 구현될 수 있으며, 도 18에 도시된 컴포넌트 각각 또는 이들 중 다수가 단일 집적 회로에 통합될 수 있다. 그러한 SOC 장치는 하나 이상의 프로세싱 유닛, 그래픽 유닛, 통신 유닛, 시스템 가상화 유닛 및 다양한 애플리케이션 기능(이들 모두는 칩 기판에 단일 집적 회로로서 통합됨(또는 "버닝됨(burned)")을 포함할 수 있다. SOC를 통해 동작하는 경우에, 본 명세서에 설명된 기능(웹 페이지 콘텐츠에 관한 것)은 단일 집적 회로(칩) 상에서 컴퓨팅 장치(1800)의 다른 컴포넌트와 통합되는 애플리케이션 특정 로직을 통해 동작될 수 있다. 또한, 본 발명의 실시예는 로직 연산(예를 들면, AND, OR, 및 NOT)을 수행할 수 있는 다른 기법(제한이 아닌 예로써, 기계, 광학, 유체 및 양자 기법을 포함함)을 사용하여 구현될 수 있다. 또한, 본 발명의 실시예는 범용 컴퓨터 내에 또는 임의의 다른 회로나 시스템에 구현될 수 있다.
컴퓨팅 장치(1800)는 또한 키보드, 마우스, 펜 및 사운드 입력 장치, 터치 입력 장치 등과 같은 하나 이상의 입력 장치(들)(1812)를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 장치(들)(1814)도 또한 포함될 수 있다. 전술한 장치는 예시이며, 다른 장치가 사용될 수 있다. 컴퓨팅 장치(1800)는 다른 컴퓨팅 장치(1818)와의 통신을 가능하게 하는 하나 이상의 통신 연결부(1816)를 포함할 수 있다. 적합한 통신 연결부(1816)의 제한이 아닌 예로는 RF 송신기, 수신기 및/또는 송수신기 회로, 범용 직렬 버스(USB), 병렬 및/또는 직렬 포트가 포함된다.
본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 휘발성 및 비휘발성 착탈식 및 비착탈식 매체를 포함하며, 이러한 매체는 정보(예, 컴퓨터 판독가능 명령어, 데이터 구조 또는 프로그램 모듈)를 저장하기 위한 임의의 방법 또는 기법으로 구현된다. 시스템 메모리(1804), 착탈식 저장 장치(1809) 및 비착탈식 저장 장치(1810)는 모든 컴퓨터 저장 매체의 예(즉, 메모리 저장소)이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM(electrically erasable read-only memory'), 플래시 메모리 또는 다른 메모리 기법, CD-ROM, DVD(digital versatile disks) 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소나 다른 자기 저장 장치, 또는 컴퓨팅 장치(1800)에 의해 액세스될 수 있고 정보를 저장하는 데 사용될 수 있는 임의의 다른 제조 물품을 포함할 수 있다. 그러한 컴퓨터 저장 매체는 어느 것이나 컴퓨팅 장치(1800)의 일부가 될 수 있다. 컴퓨터 저장 매체는 반송파 또는 다른 전파되거나 변조되는 데이터 신호를 포함하지 않는다.
통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 변조된 데이터 신호 내의 다른 데이터(가령, 반송파 또는 다른 전송 메커니즘)에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"라는 용어는 신호에 정보를 인코딩하는 것과 같은 방식으로 설정되거나 변경된 하나 이상의 특성을 가진 신호를 나타낸다. 제한이 아닌 예시로서, 통신 매체는 유선 네트워크 또는 직접 유선 연결부와 같은 유선 매체, 음향, 무선 주파수(RF), 적외선, 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있다.
도 19a 및 19b는 모바일 컴퓨팅 장치(1900)(예를 들면, 휴대 전화, 스마트 폰, 태블릿 개인 컴퓨터, 랩톱 컴퓨터 등으로서, 이를 이용하여 본 발명의 실시예가 실현될 수 있는 것)를 나타낸다. 도 19a를 참조하면, 실시예를 구현하는 모바일 컴퓨팅 장치(1900)의 일 실시예가 도시된다. 기본 구성에서, 모바일 컴퓨팅 장치(1900)는 입력 요소 및 출력 요소 모두를 가진 핸드헬드 컴퓨터이다. 모바일 컴퓨팅 장치(1900)는 일반적으로 디스플레이(1905) 및 사용자로 하여금 정보를 모바일 컴퓨팅 장치(1900)에 입력하게 하는 하나 이상의 입력 버튼(1910)을 포함한다. 모바일 컴퓨팅 장치(1900)의 디스플레이(1905)는 또한 입력 장치(예, 터치 스크린 디스플레이)로서의 기능을 할 수 있다. 포함되는 경우에, 선택적인 측면 입력 요소(1915)가 추가적인 사용자 입력을 가능하게 한다. 측면 입력 요소(1915)는 회전 스위치, 버튼 또는 임의의 다른 유형의 수동 입력 요소일 수 있다. 선택적인 실시예에서, 모바일 컴퓨팅 장치(1900)는 더 많거나 적은 입력 요소를 포함할 수 있다. 예를 들어, 디스플레이(1905)는 일부 실시예에서 터치 스크린이 아닐 수 있다. 또 다른 선택적 실시예에서, 모바일 컴퓨팅 장치(1900)는 휴대용 전화 시스템(예, 셀룰러 폰)이다. 모바일 컴퓨팅 장치(1900)는 또한 선택적인 키패드(1935)를 포함할 수 있다. 선택적인 키패드(1935)는 물리적 키패드 또는 터치 스크린 디스플레이 상에 생성되는 "소프트" 키패드일 수 있다. 다양한 실시예에서, 출력 요소는 그래픽 사용자 인터페이스(GUI)를 위한 디스플레이(805), 시각적 표시기(1920)(예, 발광 다이오드), 및/또는 오디오 트랜스듀서(1925, audio transducer)(예, 스피커)를 포함한다. 일부 실시예에서, 모바일 컴퓨팅 장치(1900)는 사용자에게 촉각 피드백을 제공하는 진동 트랜스듀서를 포함한다. 또 다른 실시예에서, 모바일 컴퓨팅 장치(1900)는 신호를 송신하거나 외부 장치로부터 신호를 수신하는 입력 및/또는 출력 포트(예, 오디오 입력부(예, 마이크로폰 잭), 오디오 출력부(예, 헤드폰 잭), 및 비디오 출력부(예, HDMI 포트))를 포함한다.
도 19b는 모바일 컴퓨팅 장치의 일 실시예의 아키텍처를 나타내는 블록도이다. 즉, 모바일 컴퓨팅 장치(1900)는 일부 실시예를 구현하기 위한 시스템(즉, 아키텍처)(1902)을 포함한다. 일 실시예에서, 시스템(1902)은 하나 이상의 애플리케이션(예, 브라우저, 이메일, 캘린더, 연락처 매니저, 메시지 클라이언트, 게임 및 미디어 클라이언트/플레이어)을 실행할 수 있는 "스마트 폰"으로서 구현된다. 일부 실시예에서, 시스템(1902)은 컴퓨팅 장치(가령, 통합형 개인 디지털 보조기(PDA) 및 무선 전화)로서 구현된다.
하나 이상의 애플리케이션 프로그램(1966)은 메모리(1962)에 로딩되고 운영체제(1964)에서 실행되거나 이와 함께 실행될 수 있다. 애플리케이션 프로그램의 예는 전화 걸기 애플리케이션(phone dialer application), 이메일 애플리케이션, 개인 정보 관리(PIM) 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 인터넷 브라우저 애플리케이션, 노트 애플리케이션, 메시징 애플리케이션 등을 포함한다. 시스템(1902)은 또한 메모리(1962) 내에 비휘발성 저장 영역(1968)을 포함한다. 비휘발성 저장 영역(1968)은 시스템(1902)의 전원이 꺼지는 경우에 손실되어서는 안 되는 지속 정보(persistent information)를 저장하는 데 사용될 수 있다. 애플리케이션 프로그램(1966)은 비휘발성 저장 영역(1968) 내에 정보(예를 들면, 이메일 애플리케이션에 의해 사용되는 이메일이나 다른 메시지 등)를 사용하고 저장할 수 있다. 또한, 동기화 애플리케이션(도시되지 않음)은 시스템(1902)에 상주하고 있으며, 호스트 컴퓨터에 상주하고 있는 대응하는 동기화 애플리케이션과 상호작용하도록 프로그램되어 호스트 컴퓨터에 저장된 대응하는 정보와 동기화되는 비휘발성 저장 영역(1968)에 저장된 정보를 보관한다. 이해할 수 있는 것과 같이, 다른 애플리케이션이 메모리(1962)에 로딩될 수 있고 모바일 컴퓨팅 장치(1900)에서 실행될 수 있으며, 다른 애플리케이션은 본 명세서에 설명된 원격 데스크톱 프로토콜 소프트웨어(108)(및/또는 선택적으로 인코더(110) 또는 원격 장치(120))를 포함한다. 일부 아날로그 시스템에서, 역 프로세스가 시스템(1902)을 통해 수행될 수 있고, 시스템은 범용 스크린 콘텐츠 코덱을 사용하여 생성되는 비트스트림을 디코딩하는 원격 장치(120)로서 동작한다.
시스템(1902)은 파워 서플라이(1970)(이는 하나 이상의 배터리로 구현될 수 있음)을 가진다. 파워 서플라이(1970)은 외부 전원(예, AC 어댑터 또는 배터리를 보충하거나 재충전하는 파워 도킹 크래들(powered docking cradle))을 더 포함할 수 있다.
또한, 시스템(1902)은 무선 주파수 통신(radio frequency communications)을 송신하고 수신하는 기능을 수행하는 라디오(1972)를 포함할 수 있다. 라디오(1972)는 통신 캐리어 또는 서비스 공급자를 통한, 시스템(1902) 및 "외부 세계(outside world)" 사이의 무선 연결을 용이하게 한다. 라디오(1972)로의 그리고 이로부터의 송신은 운영체제(1964)의 제어 하에 수행된다. 다르게 설명하면, 라디오(1972)에 의해 수신된 통신이 운영체제(1964)를 통해 애플리케이션 프로그램으로 그리고 반대로 전파될 수 있다.
시각적 표시기(1920)는 시각적 통지(visual notification)를 제공하는 데 사용될 수 있고 또는 오디오 인터페이스(1974)는 오디오 트랜스듀서(1925)를 통해 청각적 통지를 생성하는 데 사용될 수 있다. 도시된 실시예에서, 시각적 표시기(1920)는 발광 다이오드(LED)이고, 오디오 트랜스듀서(1925)는 스피커이다. 이러한 장치는 파워 서플라이(1970)에 직접 연결될 수 있고, 따라서 활성화되는 경우에 이들은 프로세서(1960) 및 다른 컴포넌트가 배터리 전원을 절약하기 위해 차단될 경우에도 통지 메커니즘이 지시한 지속시간 동안 유지된다. LED는 사용자가 장치의 파워 온 상태를 나타내기 위한 액션을 취할 때까지 무기한 유지되도록 프로그램될 수 있다. 오디오 인터페이스(1974)는 사용자에게 청각 신호를 제공하고 사용자로부터 수신하는 데 사용된다. 예를 들어, 오디오 트랜스듀서(1925)에 연결되는 것에 추가하여, 오디오 인터페이스(1974)는 또한 오디오 입력을 수신하도록 마이크로폰에 연결되어 전화 통화를 용이하게 할 수 있다. 본 발명의 실시예에 따라, 또한 마이크로폰은 이하에 설명될 것과 같이, 통지의 제어를 용이하게 하기 위한 오디오 센서의 기능을 할 수 있다. 시스템(1902)은 정지 이미지, 비디오 스트림 등을 기록하기 위한 온 보드 카메라(1930)의 동작을 가능하게 하는 비디오 인터페이스(1976)를 더 포함할 수 있다.
시스템(1902)을 구현하는 모바일 컴퓨팅 장치(1900)는 추가적인 특징 또는 기능을 가질 수 있다. 예를 들어, 모바일 컴퓨팅 장치(1900)는 또한 추가 데이터 저장 장치(착탈식 및/또는 비착탈식)(예를 들면, 자기 디스크, 광학 디스크 또는 테이프)를 포함할 수 있다. 그러한 추가 저장소는 도 19b에 비휘발성 저장 영역(1968)으로 도시된다.
모바일 컴퓨팅 장치(1900)에 의해 생성되거나 캡처되고 시스템(1902)을 통해 저장된 데이터/정보가 전술한 것과 같이 모바일 컴퓨팅 장치(1900)에 로컬로 저장될 수 있거나 또는 데이터가 라디오(1972)를 통해 또는 모바일 컴퓨팅 장치(1900) 및 모바일 컴퓨팅 장치(1900)와 연관된 별개의 컴퓨팅 장치(인터넷과 같은 분산형 컴퓨팅 네트워크의 서버 컴퓨터) 사이의 무선 연결을 통해 장치에 의해 액세스될 수 있는 임의의 개수의 저장 매체에 저장될 수 있다. 이해할 수 있는 것과 같이, 그러한 데이터/정보는 분산형 컴퓨팅 네트워크를 통해 또는 라디오(1972)를 통해 모바일 컴퓨팅 장치(1900)를 거쳐 액세스될 수 있다. 마찬가지로, 그러한 데이터/정보는 공지의 데이터/정보 전달 및 저장 수단(전자 메일 및 협업 가능한 데이터/정보 공유 시스템을 포함함)에 따라 저장 및 사용을 위해 컴퓨팅 장치 간에 쉽게 전송될 수 있다.
도 20은 전술한 바와 같이, 컴퓨팅 장치(2004), 태블릿(2006) 또는 모바일 장치(2008)와 같은 원격 소스로부터 컴퓨팅 시스템에서 수신되는 데이터를 처리하는 시스템의 아키텍처의 일 실시예를 나타낸다. 서버 장치(2002)에서 디스플레이되는 콘텐츠가 상이한 통신 채널 또는 다른 저장소 타입에 저장될 수 있다. 예를 들어, 다양한 문서가 디렉토리 서비스(2022), 웹 포털(2024), 메일박스 서비스(2026), 인스턴트 메시징 기억 장치(2028) 또는 소셜 네트워킹 사이트(2030)를 이용하여 저장될 수 있다. 원격 데스트톱 프로토콜 소프트웨어(108)는 원격 시스템에서 예를 들면 네트워크(2015)를 통해, 예를 들면 웹 상으로 원격 시스템에서 디스플레이하기 위해, RDP 호환형, MPEG 호환형(또는 다른 표준 호환형) 데이터 스트림을 생성할 수 있다. 예시로서, 클라이언트 컴퓨팅 장치는 컴퓨팅 장치(102) 또는 원격 장치(120)로서 구현될 수 있고, 개인 컴퓨터(2004), 태블릿 컴퓨팅 장치(2006) 및/또는 모바일 컴퓨팅 장치(2008)(예, 스마트 폰)에 구현될 수 있다. 그래픽 발신 시스템(graphic-originating system)에서 사전 처리되거나 수신 컴퓨팅 시스템에서 사후 처리되는 데 이용할 수 있는 그래픽 데이터를 수신하는 것에 추가하여, 컴퓨팅 장치(102, 120, 1800, 1900, 2002, 2004, 2006, 2008)의 이러한 실시예 중 어느 것이나 기억 장치(2016)로부터 콘텐츠를 획득할 수 있다.
본 발명의 실시예는 예를 들면, 본 발명의 실시예에 따른 방법, 시스템 및 컴퓨터 프로그램 제품에 대한 블록도 및/또는 동작도를 참조하여 위에 설명되었다. 블록에 나타낸 기능/동작은 임의의 흐름도에 도시된 순서를 벗어나 수행될 수 있다. 예를 들어, 연속적으로 도시된 두 개의 블록이 사실상 실질적으로 동시에 수행될 수 있거나 또는 두 개의 블록이 때로는 관계된 기능/동작에 따라 반대 순서로 실행될 수 있다.
본 응용예에 제공된 하나 이상의 실시예에 대한 설명 및 예시는 어떠한 방식으로든 본 발명의 범주를 제한하거나 한정하려는 것이 아니다. 본 응용예에서 제공된 실시예, 예시 및 상세한 내용은 소유물을 전달하고 다른 사람들에게 청구된 발명의 최적 모드를 만들어 사용하는 것을 가능하게 하기에 충분한 것으로 생각된다. 청구된 발명은 본 응용예에 제공된 임의의 실시예, 예시 또는 상세한 내용에 한정되는 것으로 생각되어서는 안 된다. 함께 또는 개별적으로 도시되고 설명되었는지 여부와 관계없이, 특정한 세트의 특징을 가진 실시예를 생성하도록 다양한 특징(구조 및 방법론적인 것 모두)이 선택적으로 포함되거나 생략된다. 본 발명의 응용예에 대한 설명 및 예시가 제공되었으나, 본 발명의 관련 분야의 당업자라면 청구된 발명의 보다 넓은 범주를 벗어나지 않는 응용예에 구현되는 포괄적인 발명의 개념의 보다 넓은 양상 내에 속하는 변형, 수정 및 대안적 실시예를 구상할 수 있을 것이다.

Claims (10)

  1. 방법에 있어서,
    복수의 스크린 프레임들을 포함하는 스크린 콘텐츠 ― 상기 스크린 프레임들 중 적어도 하나는 복수의 타입의 스크린 콘텐츠를 포함함 ― 를 수신하는 단계; 및
    표준 기반 코덱(standards-based codec)과 호환되는 인코딩된 비트스트림을 생성하기 위하여, 단일 코덱을 사용하여 상기 복수의 타입의 스크린 콘텐츠를 포함하는 상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하는 단계
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 복수의 타입의 스크린 콘텐츠는 텍스트 콘텐츠, 이미지 콘텐츠 및 비디오 콘텐츠를 포함하는 것인, 방법.
  3. 제 1 항에 있어서,
    상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하는 단계는,
    상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 복수의 영역들로 분할하는 단계;
    상기 복수의 영역들 중 제1 영역은 제1 콘텐츠 타입을 포함하고 상기 복수의 영역들 중 제2 영역은 제2 콘텐츠 타입을 포함하는 것을 판정하는 단계 ― 상기 제1 콘텐츠 타입 및 상기 제2 콘텐츠 타입은 상기 복수의 타입의 스크린 콘텐츠 사이에 포함됨 ― ;
    상기 제1 콘텐츠 타입 및 상기 제2 콘텐츠 타입에 기초하여 파라미터들을 사용하여 상기 제1 영역 및 상기 제2 영역을 개별적으로 인코딩하여, 제1 인코딩된 영역 및 제2 인코딩된 영역을 생성하는 단계;
    적어도 상기 제1 인코딩된 영역 및 상기 제2 인코딩된 영역을 포함하는 결합된 인코딩된 프레임을 엔트로피 인코더(entropy encoder)로 전달하는 단계; 및
    상기 엔트로피 인코더에서, 상기 결합된 인코딩된 프레임으로부터 인코딩된 적어도 하나의 스크린 프레임을 생성하는 단계
    를 포함하는 것인, 방법.
  4. 제 1 항에 있어서,
    상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하는 단계는,
    프레임 사전 분석(pre-analysis)을 수행하는 단계;
    상기 스크린 프레임들 중 적어도 하나의 스크린 프레임에 포함되는 매크로블록들을 처리하는 단계; 및
    상기 매크로블록들 각각에 대해 엔트로피 인코딩을 수행하여, 인코딩된 적어도 하나의 스크린 프레임을 생성하는 단계
    를 포함하는 것인, 방법.
  5. 제 1 항에 있어서,
    상기 인코딩된 적어도 하나의 스크린 프레임 및 상기 인코딩된 적어도 하나의 스크린 프레임을 기술하는 메타데이터를 원격 시스템에 송신하는 단계를 더 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하는 단계는, 상기 콘텐츠 타입에 적어도 부분적으로 기초하여 모션 추정 프로세스(motion estimation process)를 수행하는 단계를 포함하는 것인, 방법.
  7. 제 6 항에 있어서,
    상기 모션 추정 프로세스는 가중된(weighted) 모션 추정 프로세스를 포함하는 것인, 방법.
  8. 제 6 항에 있어서,
    상기 모션 추정 프로세스는 상기 스크린 프레임들 중 적어도 하나의 스크린 프레임에 포함되는 비디오 콘텐츠에 대해 다운샘플링(downsampling)을 수행하는 것인, 방법.
  9. 시스템에 있어서,
    컴퓨팅 시스템을 포함하며, 상기 컴퓨팅 시스템은,
    프로그램가능 회로; 및
    컴퓨터 실행가능 명령어를 포함하는 메모리
    를 포함하고, 상기 컴퓨터 실행가능 명령어는 실행되는 경우 상기 컴퓨팅 시스템으로 하여금,
    복수의 스크린 프레임들 ― 상기 스크린 프레임들 중 적어도 하나는 복수의 타입의 스크린 콘텐츠를 포함함 ― 을 인코더에 제공하며;
    표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성하기 위하여, 단일 코덱을 사용하여 상기 복수의 타입의 스크린 콘텐츠를 포함하는 상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하게
    하는 것인, 시스템.
  10. 컴퓨터 실행가능 명령어를 저장한 컴퓨터 판독가능 저장 매체에 있어서,
    상기 컴퓨터 실행가능 명령어는 컴퓨팅 시스템에 의해 실행되는 경우에, 상기 컴퓨팅 시스템으로 하여금,
    복수의 스크린 프레임들을 포함하는 스크린 콘텐츠 ― 상기 스크린 프레임들 중 적어도 하나는 텍스트 콘텐츠, 비디오 콘텐츠 및 이미지 콘텐츠를 포함함 ― 를 수신하는 단계; 및
    표준 기반 코덱과 호환되는 인코딩된 비트스트림을 생성하기 위하여, 단일 코덱을 사용하여 상기 텍스트 콘텐츠, 상기 비디오 콘텐츠 및 상기 이미지 콘텐츠를 포함하는 상기 스크린 프레임들 중 적어도 하나의 스크린 프레임을 인코딩하는 단계
    를 포함하는 방법을 수행하게 하는 것인, 컴퓨터 판독가능 저장 매체.
KR1020167008968A 2013-09-05 2014-09-01 범용 스크린 콘텐츠 코덱 KR20160052688A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/019,451 US20150063451A1 (en) 2013-09-05 2013-09-05 Universal Screen Content Codec
US14/019,451 2013-09-05
PCT/US2014/053623 WO2015034793A1 (en) 2013-09-05 2014-09-01 Universal screen content codec

Publications (1)

Publication Number Publication Date
KR20160052688A true KR20160052688A (ko) 2016-05-12

Family

ID=51570867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167008968A KR20160052688A (ko) 2013-09-05 2014-09-01 범용 스크린 콘텐츠 코덱

Country Status (10)

Country Link
US (1) US20150063451A1 (ko)
EP (1) EP3042484A1 (ko)
JP (1) JP2016534654A (ko)
KR (1) KR20160052688A (ko)
CN (1) CN105723676A (ko)
AU (1) AU2014315430A1 (ko)
CA (1) CA2923023A1 (ko)
MX (1) MX2016002926A (ko)
RU (1) RU2016107755A (ko)
WO (1) WO2015034793A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
US9582240B2 (en) * 2012-12-26 2017-02-28 Vmware, Inc. Using contextual and spatial awareness to improve remote desktop imaging fidelity
KR102131326B1 (ko) * 2013-08-22 2020-07-07 삼성전자 주식회사 영상 프레임 움직임 추정 장치, 그것의 움직임 추정 방법
WO2015058397A1 (en) 2013-10-25 2015-04-30 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
KR20160075705A (ko) 2013-10-25 2016-06-29 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩에서의 해시 기반 블록 매칭
TWI538487B (zh) * 2013-12-05 2016-06-11 財團法人工業技術研究院 螢幕視訊之預測編碼的方法與系統
US10368092B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US20150262404A1 (en) * 2014-03-13 2015-09-17 Huawei Technologies Co., Ltd. Screen Content And Mixed Content Coding
TWI508531B (zh) * 2014-06-04 2015-11-11 Hon Hai Prec Ind Co Ltd 視訊編碼裝置及方法
KR102287779B1 (ko) 2014-06-23 2021-08-06 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정
KR102490706B1 (ko) 2014-09-30 2023-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 코딩을 위한 해시 기반 인코더 결정
KR102376700B1 (ko) * 2015-08-12 2022-03-22 삼성전자주식회사 비디오 컨텐츠 생성 방법 및 그 장치
CN105677279B (zh) * 2016-01-08 2018-10-12 全时云商务服务股份有限公司 桌面区域共享方法、系统及相应的共享端和观看端
US10237566B2 (en) * 2016-04-01 2019-03-19 Microsoft Technology Licensing, Llc Video decoding using point sprites
US20170300312A1 (en) * 2016-04-13 2017-10-19 Microsoft Technology Licensing, Llc Progressive updates with motion
US10503458B2 (en) * 2016-07-28 2019-12-10 Intelligent Waves Llc System, method and computer program product for generating remote views in a virtual mobile device platform using efficient macroblock comparison during display encoding, including efficient detection of unchanged macroblocks
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
CN107396113B (zh) * 2017-03-02 2020-02-07 北方工业大学 用于hevc屏幕内容图像的三维块匹配滤波算法
US10638144B2 (en) * 2017-03-15 2020-04-28 Facebook, Inc. Content-based transcoder
US11588872B2 (en) 2017-06-12 2023-02-21 C-Hear, Inc. System and method for codec for combining disparate content
US10187443B2 (en) 2017-06-12 2019-01-22 C-Hear, Inc. System and method for encoding image data and other data types into one data format and decoding of same
CN107181928A (zh) * 2017-07-21 2017-09-19 苏睿 会议系统及数据传输方法
JP6900359B2 (ja) * 2018-12-28 2021-07-07 株式会社ドワンゴ 画像送受信システム、データ送受信システム、送受信方法、コンピュータ・プログラム、画像送信システム、画像受信装置、送信システム、受信装置
CN117459718A (zh) 2019-04-01 2024-01-26 北京字节跳动网络技术有限公司 视频编码中的可选插值滤波器
US11115445B2 (en) * 2019-05-16 2021-09-07 Cisco Technology, Inc. Content type auto detection for online collaboration screen sharing
CN117395411A (zh) 2019-08-20 2024-01-12 北京字节跳动网络技术有限公司 用于视频处理的方法、装置以及计算机可读存储介质
CN110505522A (zh) * 2019-09-16 2019-11-26 腾讯科技(深圳)有限公司 视频数据的处理方法、装置、及电子设备
CN110971903A (zh) * 2019-10-17 2020-04-07 西安万像电子科技有限公司 编码方法、设备及系统
CN111200740A (zh) * 2020-01-09 2020-05-26 西安万像电子科技有限公司 编码方法及编码器
CN111314701A (zh) * 2020-02-27 2020-06-19 北京字节跳动网络技术有限公司 视频处理方法及电子设备
CN111787329B (zh) * 2020-06-01 2023-04-14 视联动力信息技术股份有限公司 一种数据处理方法、系统、装置、电子设备及存储介质
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
US11546617B2 (en) 2020-06-30 2023-01-03 At&T Mobility Ii Llc Separation of graphics from natural video in streaming video content
CN115580723B (zh) * 2022-12-09 2023-06-09 中南大学 一种屏幕内容图像的编码优化方法、系统、设备及介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996008114A1 (en) * 1994-09-02 1996-03-14 David Sarnoff Research Center, Inc. Method and apparatus for global-to-local block motion estimation
US6567559B1 (en) * 1998-09-16 2003-05-20 Texas Instruments Incorporated Hybrid image compression with compression ratio control
US6587583B1 (en) * 1999-09-17 2003-07-01 Kurzweil Educational Systems, Inc. Compression/decompression algorithm for image documents having text, graphical and color content
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US20040032906A1 (en) * 2002-08-19 2004-02-19 Lillig Thomas M. Foreground segmentation for digital video
US7302107B2 (en) * 2003-12-23 2007-11-27 Lexmark International, Inc. JPEG encoding for document images using pixel classification
US7747086B1 (en) * 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US8160144B1 (en) * 2006-05-10 2012-04-17 Texas Instruments Incorporated Video motion estimation
KR101599875B1 (ko) * 2008-04-17 2016-03-14 삼성전자주식회사 멀티미디어의 컨텐트 특성에 기반한 멀티미디어 부호화 방법 및 장치, 멀티미디어의 컨텐트 특성에 기반한 멀티미디어 복호화 방법 및 장치
US8456380B2 (en) * 2008-05-15 2013-06-04 International Business Machines Corporation Processing computer graphics generated by a remote computer for streaming to a client computer
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
US8180165B2 (en) * 2008-12-19 2012-05-15 Microsoft Corp. Accelerated screen codec
JP5413080B2 (ja) * 2009-09-15 2014-02-12 株式会社リコー 画像処理装置及び画像処理方法
US9357228B2 (en) * 2010-05-27 2016-05-31 The Hong Kong University Of Science And Technology Motion estimation of images
CN101977322A (zh) * 2010-11-10 2011-02-16 上海交通大学 基于通用视频编码标准的屏幕编码系统
WO2013056200A1 (en) * 2011-10-14 2013-04-18 Brightsentry, Inc. Method and apparatus for video compression of stationary scenes
US9013536B2 (en) * 2013-03-13 2015-04-21 Futurewei Technologies, Inc. Augmented video calls on mobile devices
US9210434B2 (en) * 2013-06-12 2015-12-08 Microsoft Technology Licensing, Llc Screen map and standards-based progressive codec for screen content coding

Also Published As

Publication number Publication date
CN105723676A (zh) 2016-06-29
RU2016107755A3 (ko) 2018-05-15
US20150063451A1 (en) 2015-03-05
EP3042484A1 (en) 2016-07-13
AU2014315430A1 (en) 2016-03-24
MX2016002926A (es) 2016-08-18
RU2016107755A (ru) 2017-09-07
JP2016534654A (ja) 2016-11-04
WO2015034793A1 (en) 2015-03-12
CA2923023A1 (en) 2015-03-12

Similar Documents

Publication Publication Date Title
KR20160052688A (ko) 범용 스크린 콘텐츠 코덱
KR101885008B1 (ko) 스크린 컨텐츠 코딩을 위한 스크린 맵 및 표준 기반의 프로그레시브 코덱
US20220408096A1 (en) Adaptive Transfer Function for Video Encoding and Decoding
CN107113432B (zh) 用于并行视频编码的码率控制
CN106664437B (zh) 一种用于对视频内容进行编码以进行无线传输的计算机实现的方法、系统、设备以及可读介质
US9386319B2 (en) Post-process filter for decompressed screen content
JP2017535148A (ja) 映像符号化のためのハッシュベースのエンコーダ判断
US8582876B2 (en) Hybrid codec for compound image compression
WO2017180402A1 (en) Progressive updates with motion
CN115361582B (zh) 一种视频实时超分辨率处理方法、装置、终端及存储介质
KR20160082521A (ko) 크로마 하향 변환 및 상향 변환 처리
CN105706447B (zh) 动画图像编码设备、动画图像解码设备、动画图像编码方法以及动画图像解码方法
US20230105436A1 (en) Generative adversarial network for video compression
CN118020290A (zh) 用存储器高效预测模式选择来编码和解码视频的系统和方法
WO2013112592A1 (en) Remote protocol

Legal Events

Date Code Title Description
WITB Written withdrawal of application