KR20140045013A - Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치 - Google Patents

Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치 Download PDF

Info

Publication number
KR20140045013A
KR20140045013A KR1020120110837A KR20120110837A KR20140045013A KR 20140045013 A KR20140045013 A KR 20140045013A KR 1020120110837 A KR1020120110837 A KR 1020120110837A KR 20120110837 A KR20120110837 A KR 20120110837A KR 20140045013 A KR20140045013 A KR 20140045013A
Authority
KR
South Korea
Prior art keywords
encoding
information
area
block
window
Prior art date
Application number
KR1020120110837A
Other languages
English (en)
Other versions
KR101984825B1 (ko
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 삼성전자주식회사
Priority to KR1020120110837A priority Critical patent/KR101984825B1/ko
Priority to US14/045,333 priority patent/US9053526B2/en
Publication of KR20140045013A publication Critical patent/KR20140045013A/ko
Application granted granted Critical
Publication of KR101984825B1 publication Critical patent/KR101984825B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image 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/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
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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, manipulating MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software

Abstract

클라우드 서버와 클라이언트 단말 사이에 디스플레이 화면을 효율적으로 부호화 하여 클라우드 컴퓨팅을 구현하는 방법 및 장치가 개시된다.
본 발명에 따른 클라우드 서버가 클라우드 디스플레이 화면을 부호화 하는 방법은, 운영체제의 API 함수 정보에 기초하여 현재 생성된 윈도우들의 영역정보를 획득하는 단계; 상기 운영체제로부터 상기 생성된 윈도우들 간의 상대적인 깊이정보를 추출하는 단계; 상기 획득된 영역정보와 상기 추출된 깊이정보에 기초하여 상기 화면 전체를 복수개의 블럭으로 분할하는 부호화모드맵을 생성하는 단계; 및 상기 생성된 부호화모드맵에 기초하여 상기 각 블록을 부호화하는 단계를 포함한다.

Description

API 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치{Method and Apparatus for Encoding a Cloud Display Screen by Using API Information}
본 발명은 클라우드 시스템을 구성하는 서버에서 화면을 부호화하여 단말로 전송하는 기술과 관련되며, 특히 커널 또는 운영체제에서 처리되는 API 정보를 이용하여 화면에 디스플레이되는 윈도우의 영역을 분석하고, 아울러 윈도우의 깊이 정보를 이용하여, 화면을 부호화하는 기술과 관련된다.
데이터를 부호화하는 방식은 크게 손실 부호화 방식과 무손실 부호화 방식으로 분류할 수 있다. 텍스트, 아이콘 등과 같이 약간의 화질 열화도 두드러지는 특징을 가지는 영역을 압축할 때는 일반적으로 무손실 부호화 기법이 선호된다. 사진, 동영상 등과 같이 화소 구성이 복잡한 영역을 압축할 때는 데이터가 어느 정도 손실되더라도 크게 드러나지 않기 때문에 손실 부호화 방식이 선호된다.
그러나 그래픽 요소(텍스트, 아이콘, 도형 등)와 이미지 요소(사진, 동영상 등)가 함께 존재하는 복합영상을 부호화하는 경우에 있어서, 이를 하나의 알고리즘으로 부호화 하는 경우가 일반적이다. 예를 들면, H.264, MPEG-2, JPEG와 같은 동영상 또는 사진이미지 부호화 알고리즘을 획일적으로 적용하거나, 그래픽 요소에 적합한 부호화 알고리즘을 획일적으로 적용한다. 아울러 복합영상의 영역을 선택적으로 부호화하는 경우에는 영상을 분석하여, 분석 결과에 따라 적합한 부호화 알고리즘을 영역별로 선택적으로 적용할 수 있다. 이때는 영상을 분석하는 과정이 필수적이다. 영상분석을 위해서는 대표적으로 저수준 영상처리(low-level image processing)가 활용된다. 저수준 영상처리 기술은 부호화하고자 하는 영역을 스캔하여, 획득된 픽셀값을 이용하여 화소의 통계적 특성 정보, 영상의 평탄화 또는 그레디언트(gradient) 정도 등을 이용하여 화면을 분석한다.
일반적인 클라우드 시스템에서는 클라이언트 단말로부터 입력된 제어신호를 서버에서 처리하여, 그 처리 결과를 클라이언트 단말의 화면에 디스플레이한다. 클라이언트 단말은 별도의 중앙처리장치나 렌더링 툴을 구비하지 않은 경우가 많고, 이러한 경우 서버는 디스플레이될 영상을 부호화해서 클라이언트 단말로 전송하게 된다. 그러나 통상 클라우드 디스플레이 화면은 텍스트, 그래픽, 이미지, 동영상 등을 포함하는 복합영상으로 구성된다.
클라우드 디스플레이 화면에 대해 영상의 특성과 관계없이 부호화 방법을 적용한다면, 적절하지 않을 수 있다. 예를 들어, 클라우드 단말을 이용하여 문서작업을 하는 경우를 가정해보자. 문서 작업이 수행중인 클라우드 디스플레이 화면에 영상 분석을 적용하면, 텍스트는 픽셀값의 차이가 크기 때문에 텍스트 영역으로 분석될 확률이 높다. 그러나 일반적인 이미지 부호화 알고리즘을 이용한다면, 화질 열화가 크게 발생하게 되고, 문서작업이 어려운 수준까지 텍스트의 가독성이 떨어질 수 있다. 그러므로 영상분석을 통한 영역에 적합한 부호화 알고리즘을 적용하는 것은 매우 중요하다. 그러나 저수준 영상처리 기술은 영역구분에 있어서, 오인지(flase alarm) 확률과 미인지(missing alarm) 확률이 항상 존재한다.
본 발명은 클라우드 서버에서 클라우드 디스플레이 화면을 구성하는 영역정보의 특성에 따라 효율적으로 클라우드 디스플레이 화면을 부호화하고, 부호화된 데이터를 클라우드 단말로 전송하고, 데이터를 다시 복호화하여 클라우드 단말에서 디스플레이하기 위한 방법 및 그 장치를 제공하는 것을 목적으로 한다.
본 발명에 따른 클라우드 서버가 클라우드 디스플레이 화면을 부호화 하는 방법은, 운영체제의 API 함수 정보에 기초하여 현재 생성된 윈도우들의 영역정보를 획득하는 단계; 상기 운영체제로부터 상기 생성된 윈도우들 간의 상대적인 깊이정보를 추출하는 단계; 상기 획득된 영역정보와 상기 추출된 깊이정보에 기초하여 상기 화면 전체를 복수개의 블럭으로 분할하고 각 블록에 부호화 모드가 할당 되어진 부호화모드맵을 생성하는 단계; 및 상기 생성된 부호화모드맵에 기초하여 상기 각 블록을 부호화하는 단계를 포함한다.
상기 윈도우들의 영역정보를 획득하는 단계는, 상기 생성된 윈도우 각각에 대해 식별자를 부여하고, 상기 식별자에 대응하는 윈도우의 영역정보를 저장할 수 있다. 또한 상기 생성된 윈도우들 중 적어도 하나의 윈도우가 종료되면, 상기 종료된 윈도우의 식별자에 대응하는 영역정보를 삭제할 수 있다. 또한, 상기 식별자는 윈도우 핸들일 수 있다.
상기 부호화모드맵 생성 단계는, 상기 각 블록에 포함된 영역정보에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하거나, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록을 구성하는 영역정보의 비율에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하거나, 상기 각 블록에 포함된 복수개의 영역정보에 대응하여 미리 설정된 부호화 알고리즘간의 우선순위에 따라 상기 블록에 적용될 부호화 알고리즘으로 결정할 수 있다.
상기 복수개의 블록을 부호화하는 단계는, 각 블록을 래스터 스캔 순서(raster-scan order)에 따라 블록별로 지정된 부호모드에 적합한 부호화화 방법으로 부호화 할 수 있다.
본 발명에 따른 클라우드 디스플레이 화면을 부호화하기 위한 클라우드 서버는, 운영체제의 API 함수 정보에 기초하여 현재 생성된 윈도우들의 영역정보를 획득하는 영역정보 획득부; 상기 운영체제로부터 상기 생성된 윈도우들 간의 상대적인 깊이정보를 추출하는 깊이정보 추출부; 상기 획득된 영역정보와 상기 추출된 깊이정보에 기초하여 상기 화면 전체를 복수개의 블럭으로 분할하는 부호화모드맵을 생성하는 화면영역 결정부; 및 상기 생성된 부호화모드맵에 기초하여, 상기 각 블록을 부호화하는 부호화부를 포함한다.
상기 영역정보 획득부는, 상기 생성된 윈도우들 각각에 대해 식별자를 부여하고, 상기 식별자에 대응하는 윈도우의 영역정보를 저장하는 영역저장부를 포함할 수 있다. 또한 상기 생성된 윈도우들 중 적어도 하나의 윈도우가 종료되면, 상기 종료된 윈도우의 식별자에 대응하는 영역정보를 삭제할 수 있다.
상기 화면영역 결정부는, 상기 각 블록에 포함된 영역정보에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하거나, 상기 각 블록에 포함된 윈도우들의 깊이정보에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하거나, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록을 구성하는 영역정보의 비율에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하거나, 상기 각 블록에 포함된 복수개의 영역정보에 대응하여 미리 설정된 부호화 알고리즘간의 우선순위에 따라 상기 블록에 적용될 부호화 알고리즘으로 결정할 수 있다.
본 발명에 따른 클라우드 디스플레이 화면을 복호화하기 위한 클라우드 단말은, 클라우드 서버로부터 부호화된 클라우드 디스플레이 화면 스트림을 수신하는 통신부; 및 상기 스트림을 복호화하는 복호화부를 포함하고, 상기 스트림은 복수개의 블록단위로 분할된 클라우드 디스플레이 화면 각각에 대해 선택적으로 적용된 부호화 알고리즘으로 부호화된 데이터를 포함하는 것을 특징으로 할 수 있다.
상기 복호화부는 상기 각 부호화 알고리즘에 대응되는 복호화 알고리즘으로 상기 스트림을 복호화 할 수 있다.
본 발명에 따르면, 클라우드 시스템에서 저수준 영상처리의 복잡한 계산을 하지 않고, 고속으로 화면 내의 영역들에 대해 특성을 분류하여 특성에 맞게 화면을 부호화하여, 서버와 클라이언트 사이의 통신에 있어서, 지연시간 및 압축효율을 향상시켜 그래픽 사용자 인터페이스(GUI)를 지원하는 원활한 클라우드 컴퓨팅 서비스를 제공할 수 있는 효과가 있다.
또한 본 발명은, 클라이언트 단말이 별도의 렌더링 툴을 전혀 구비하지 않아도 API 정보에 기초하여 효율적으로 클라우드 디스플레이 화면을 클라이언트 단말에 복원할 수 있다.
도 1은 일반적인 클라우드 시스템을 나타낸다.
도 2는 클라우드 서버(210)와 클라이언트 단말(220)을 포함하는 클라우드 시스템(200)의 예시적인 구성이다.
도 3은 클라우드 서버(210)의 보다 상세한 도면이다.
도 4는 운영체제가 구동되고, 윈도우들이 디스플레이 된 클라우드 디스플레이 화면을 나타낸다.
도 5는 화면에 디스플레이 된 윈도우들 사이의 깊이를 나타낸다.
도 6은 영역정보와 깊이정보에 기초하여 부호화모드맵을 생성하는 과정을 도시한다.
도 7은 윈도우에 식별자 정보를 부여하는 특징을 포함한 본 발명의 부호화 방법의 구체적인 흐름도를 나타낸다.
도 8은 API 기반 윈도우의 영역정보를 획득하는 단계를 보다 구체적으로 나타낸 도면이다.
도 19는 클라우드 디스플레이 화면을 부호화 하여 클라우드 서버에서 클라이언트 단말로 전송하고, 다시 복호화 하는 일련의 과정을 나타낸다.
도 1은 일반적인 클라우드 시스템을 나타낸다. PC(110), 태블릿(120), 휴대폰(130), 랩탑(140), 스마트폰(150), 및 디스플레이 디바이스(160)등이 클라우드 서버(100)와 함께 클라우드 시스템을 구성할 수 있다. 클라우드, 클라우드 컴퓨팅, 혹은 클라우드 시스템 등은 다소 그 의미가 광범위하게 활용되나, 본 발명에서는 클라이언트 단말로부터 제어신호가 발생하면, 클라우드 서버에서 그 제어신호를 수신하여 연산을 처리하고, 처리 결과를 다시 클라이언트 단말로 전송하고, 클라이언트 단말은 해당 처리 결과를 디스플레이 하는 기능을 수행하는 시스템을 클라우드 시스템으로 한정하여 설명한다.
따라서, 클라이언트 단말은 일반적으로 별도의 연산을 수행하기 위한 유닛을 필요로 하지 않는다. 일반적인 컴퓨터의 모니터와 같이, 연산 결과를 디스플레이 하기 위해 필요한 최소한의 구성요소 만으로도 클라이언트 단말은 구성될 수 있다. 물론, 제어신호를 생성하여 전송하기 위한 사용자 입력 인터페이스 및 통신부를 포함할 수 있다.
도 1에 도시된 몇몇 디바이스들, 예를 들어 스마트폰, 태블릿 등은 자체적인 연산처리장치, 즉 프로세서를 포함한다. 그러나 이러한 디바이스들도 프로세서의 시스템 자원을 전혀 소모하지 않거나, 다른 용도로 활용하면서 연산처리를 클라우드 서버에 의존하도록 할 수 있다. 궁극적으로, 통신부와 디스플레이 처리능력을 보유한 일반적인 디바이스들은 본 발명에 의한 클라이언트 단말로 기능할 수 있다.
통상적으로 클라이언트 단말은 씬(thin) 클라이언트와 제로(zero) 클라이언트로 구분한다. 구분 기준은 클라이언트 단말이 연산처리능력, 혹은 렌더링 툴을 포함하는지 여부이다. 이러한 분류 혹은 명칭은 클라우드 기술의 발전 및 업계 동향에 따라 얼마든지 향후 변동될 수 있다. 본 발명에서 제시하는 방법은, 별도의 렌더링 툴을 보유하지 않은 제로 클라이언트 단말의 경우에 특히 유용하다. 물론 시스템 자원의 효율적 측면에서 기타 다른 종류의 클라이언트 단말에도 적용될 수 있음은 전술한 바와 같다.
클라우드 시스템을 이용하는 사용자는, 자신이 사용하는 클라이언트 단말이 사실은 디스플레이 장치와 입력장치만을 구비하고 있으며, 자신의 입력과 관계된 연산들이 클라우드 서버에서 처리된다는 사실을 인식하지 못한다. 혹은, 클라우드 시스템은 사용자가 이러한 점을 인식하지 못하도록 하여야 한다. 그렇게 하기 위해서 클라우드 시스템은, 사용자의 입력에 따른 연산의 수행 결과가 실시간으로 디스플레이 되어야 하는 점(실시간 요건)과, 사용자가 디스플레이 된 결과물을 용이하게 인식할 수 있어야 한다는 점(화질 요건)을 필수적으로 만족시켜야 한다.
그러나 충분한 가독성을 제공하기 위해 클라우드 디스플레이 화면을 부호화하는 경우, 화면의 특성을 파악하고 부호화하는데 소모되는 시간이 늘어나게 된다. 또한, 그렇게 생성된 화면 정보가 클라이언트 단말로 전송되고, 클라이언트 단말에서 다시 복호화 하는데 걸리는 시간 역시 증가하게 된다. 따라서 실시간 요건을 만족시키는 것이 필수적이다.
실시간 요건을 만족시키기 위해 클라우드 디스플레이 화면을 부호화 하는 경우, 해상도가 너무 낮아지거나, 텍스트가 포함된 영역을 이미지 혹은 동영상을 부호화시 사용하는 알고리즘을 적용함에 따라, 가독성이 떨어질 수 있다. 따라서 화질 요건을 만족시키지 못할 수 있다.
즉, 클라우드 디스플레이 화면을 구성하는 영역의 특성에 맞게 화면을 부호화 하여, 연산의 수행 결과를 사용자가 감지할 수 있는 정도의 화질열화 없이 확인할 수 있으면서도 처리 결과의 실시간성을 만족하는 클라우드 디스플레이 화면의 부호화 방법이 요구된다. 특히, 렌더링 프로세서 같은 고수준 렌더링 기능이 없고, 단지 서버에서 사용되는 부호화기에 대응되는 복호화기만 사용하여 화면을 복원하는 경우에도 적용할 수 있어야 한다.
도 2는 클라우드 서버(210)와 클라이언트 단말(220)을 포함하는 클라우드 시스템(200)의 예시적인 구성이다. 도 2에서는 클라우드 서버(210)과 클라이언트 단말(220)을 각각 하나로 가정하였으나, 클라우드 서버(210)에는 복수개의 단말이 연결될 수 있다. 또한 클라우드 서버(210)는 필요한 경우, 다른 서버, 외부 데이터 저장소 등과 연결되어 연산을 처리할 수 있다.
클라우드 서버(210)는 제어부(211), 부호화부(212), 저장부(213), 및 통신부(214)를 포함한다. 제어부(211)는 클라우드 서버(210)를 구성하는 구성요소들을 제어하고, 전반적인 작업을 처리하는 기능을 수행한다. 일반적으로는 통신부(214)를 통해 수신된 클라이언트 단말(220)의 제어신호에 따라 필요한 연산을 수행한다. 통신부(214)는 하나의 구성요소로 표시하였으나, 수신부와 전송부로 구분되어 구성될 수도 있다.
제어부(211)에 의해 처리된 연산결과는 클라이언트 단말(220)에서 디스플레이 되기에 적합하도록 부호화부(212)에서 부호화된다. 본 명세서에서 클라우드 디스플레이 화면이라고 하면 부호화되기 전의 연산결과를 의미한다. 즉, 클라이언트 단말(220)에 디스플레이 되는 것은 부호화된 클라우드 디스플레이 화면이 복호화 된 영상이다. 즉, 클라우드 디스플레이 화면은 부호화 되기 전의 연산결과가 소정의 디스플레이 장치에 디스플레이 되는 것으로 이해될 수 있다.
클라이언트 단말(220)은 제어부(221), 복호화부(222), 통신부(223), 입력인터페이스(225), 디스플레이 장치(224)를 포함할 수 있다. 도 2에서는 입력 인터페이스(225)와 디스플레이 장치(224)가 클라이언트 단말(220)의 외부로 연결된 것으로 도시하였으나, 클라이언트 단말(220)과 일체형으로 구성될 수도 있다. 예를 들어, 태블릿과 같은 디바이스가 그러하다.
클라이언트 단말(220)의 제어부(221)는 클라우드 서버(210)의 제어부(211)와는 구별된다. 클라이언트 단말(220)의 제어부(221)는 연산을 수행할 프로세서를 구비하지 않아도 좋다. 통신부(223)를 통해 수신된 복호화된 클라우드 디스플레이 화면을 복호화부(222)로 하여금 다시 복호화하여 디스플레이 장치(224)에 디스플레이 되도록 제어하는 기능만 수행할 수 있으면 충분하다.
도 3은 클라우드 서버(210)의 보다 상세한 도면이다. 클라우드 서버(210)의 제어부(211)는 영역정보획득부(311), 깊이정보추출부(312), 화면영역결정부(313), 및 중앙처리부(314)를 포함할 수 있다. 각각의 구성 요소의 기능에 대해서는 도 4 내지 도10을 참조하여 상세히 설명하도록 한다. 이러한 제어부를 구성하는 구성요소는 통합되거나 일부 삭제될 수 있다. 부호화부(212) 역시 제어부(211)에 포함될 수 있다. 중앙처리부(314)는 영역정보획득부(311) 및 깊이정보추출부(312)의 기능을 포함할 수 있다. 이러한 변경의 구성은 당업자의 지식수준에 따라 자유롭게 구성될 수 있으며, 반드시 도면과 같은 형태로 구성될 필요는 없다.
도 4는 운영체제가 구동되고, 윈도우들이 디스플레이 된 클라우드 디스플레이 화면을 나타낸다.
참고로 본 발명에서 언급되는 운영체제는 해당 클라이언트 단말에서 실행되는 응용프로그램을 구동하는데 필요한 API를 제공한다. 즉, 이러한 운영 체제로는 Miscrosoft 사의 Windows 시리즈, Linux, Unix, Apple사의 Mac OS, iOS, Samsung 사의 바다 OS, Google의 안드로이드, 노키아의 심비안 등이 될 수 있다. 나아가 본 발명에서 API라고 하면, Application Programming Interface, 즉 응용 프로그램 프로그래밍 인터페이스를 의미한다. 다시 말하면 API는 운영 체제에서 제공하는 기능을 제어할 수 있게 만든 인터페이스를 의미한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어, 통신 기능제어 등 다양한 기능을 제공하기 위한 인터페이스를 제공한다. API는 운영체제에서 제공하는 기능을 활용하여 다양한 Application을 제작할 수 있도록 다양한 함수를 포함하고 있다.
다시 도 4를 참조하면, 도 4의 클라우드 디스플레이 화면(400)은 작업표시줄(410), 제1윈도우(420), 제2윈도우(430), 및 아이콘(440)을 포함한다. 제1윈도우(420)는 파워포인트 응용프로그램에 의해 생성되고, 제2윈도우(430)는 인터넷 응용프로그램에 의해 생성되는 것으로 가정한다.
이와 같이 각각의 응용프로그램들은 자신의 출력물을 특정 윈도우에 출력하고, 각각의 윈도우 들은 중첩되어 화면에 디스플레이된다. 즉, 제2윈도우(430)는 제1윈도우(420)에 중첩되어 일부분이 가려져있다. 물론, 윈도우들에 의해 기본적인 배경화면도 일부분이 가려지게 된다.
각각의 응용프로그램은 자신에게 할당된 윈도우에 처리 결과를 출력하기 위해서 API 함수를 이용한다. 예를 들어, 제1윈도우(420)는, 윈도우의 제목표시줄 영역(421), 메뉴 아이콘이 포함된 영역(422), 좌측에 슬라이드 개요를 표현하는 영역(423), 우측에 슬라이드의 주내용을 출력하기 위한 영역(424) 및 해당 슬라이드의 스크립트를 나타내는 영역(425)를 포함하고 있다. 운영체제가 Windows라고 가정하면, 제목표시줄 영역(421) 혹은 스트립트 영역(425) 등에 텍스트를 출력하기 위해 Windows는 DrawText와 같은 Text를 출력하기 위한 API 함수를 이용한다. 즉, 이 DrawText와 같은 텍스트출력 함수를 모니터링 하면 제1윈도우(420)의 어느 위치에 텍스트를 출력하는지 알 수 있다.
비트맵을 출력하기 위해서 운영체제는 BltBlt라는 API 함수를 사용할 수 있다. 이 함수를 모니터링 하면 윈도우의 어느 위치에 비트맵을 출력하는지 알 수 있다. 예를 들어 제1윈도우의 컨텐츠 영역(424)의 특정부분에 비트맵이 출력된다는 정보를 획득할 수 있다.
미디어 플레이어와 같은 동영상 재생 프로그램에서, 비디오를 출력하기 위한 윈도우를 설정하기 위해서 IvideoWindow::put_Owner() 또는 IMFVideoDisplayControl::SetVideoWindow()와 같은 함수를 사용한다. 해당 함수를 모니터링하여 어떤 윈도우 영역에 비디오를 재생하려고 하는지 그 정보를 얻을 수 있다. 나아가, 비디오를 재생시키고자 할 때 응용프로그램은 ImediaControl::Run() 또는 IMFClockStateSink::OnClockStart() 등의 함수를 이용하고, 재생을 정지시키고자 할 때 ImediaControl::Stop() 또는 IMFClockStateSink::OnClockStop() 등의 함수를 이용한다. 이러한 함수를 모니터링하여 비디오 영역의 상태에 대한 정보 역시 획득할 수 있다. 이러한 상태정보 역시 윈도우에 포함된 영역들에 대한 정보를 결정하는데 활용될 수 있다. 즉, 비디오를 출력하기 위해 설정된 영역이라도, 현재 그 비디오가 재생이 이루어지지 않고 정지상태에 있다면, 해당 영역을 비디오 영역이 아닌 이미지 영역으로 판단할 수 있다.
다시 제1윈도우(420)를 참조하면, 제1윈도우(420)의 제목표시줄 영역(421)과 스크립트 영역(425)은 텍스트영역, 메뉴 아이콘 영역(422)은 이미지 영역으로 결정될 수 있다. 또한, 슬라이드 이미지 영역(423)은 해당 영역에 출력되는 내용에 따라, 텍스트, 텍스트를 제외한 그래픽, 이미지영역들로 복합적으로 구성될 수 있으며, , 컨텐츠 영역(424)는 해당 영역에 출력되는 내용에 따라, 텍스트, 텍스트를 제외한 그래픽, 이미지, 동영상 영역들로 복합적으로 구성될 수 있다.
부언하자면, 상술한 제1윈도우(420)에 관련된 설명은 실제 응용프로그램에 의해 생성된 윈도우와 비교하였을 때 상당히 단순화 된 설명이다. 예를 들어, API 함수를 추적하였을 때, 제목표시줄 영역(421)의 좌측 일부만이 텍스트 영역으로 판단될 수 있다. 메뉴 아이콘 영역(422)는 각 메뉴의 이름을 지시하는 텍스트 영역과 메뉴 아이콘이 도시되는 이미지 영역으로 판단될 수 있다. 이는 제1윈도우(420)를 구성하는 다른 부분에 대해서도 마찬가지이다. 즉 실제 응용프로그램에 의해서 생성되는 윈도우에 관련된 API 정보로부터 획득되는 윈도우를 구성하는 영역에 대한 정보, 즉 윈도우의 영역정보는 도 4에 도시된 것보다 훨씬 복잡하고 다양한 영역을 포함할 수 있다.
나아가, 텍스트 영역, 텍스트를 제외한 그래픽, 이미지 영역, 동영상 영역은 단순히 영역을 분류하기 위한 예시에 불과하다. 예를 들어, 슬라이드 이미지 영역(423)의 경우, 실제 이미지가 도시되는 부분은 사각형 영역뿐이며, 사각형을 제외한 영역은 배경 그래픽으로 채워진다. 이러한 영역은, 예를 들어 그래픽 영역 등으로 따로 분류될 수 있다. 이는 바탕화면 영역에 대해서도 마찬가지로 배경 그래팩 또는 사진 이미지, 애니메이션 등이 적용될 수 있다.
이제 제2윈도우(430)를 참조하면, 제2윈도우(430)는 웹브라우저 애플리케이션에 의해 생성된 윈도우이다. 제2윈도우(430) 내부에는 다양한 컨텐츠들이 포함될 수 있다. 제2윈도우(430)와 관련된 API 함수를 추적하면, 제1윈도우(420)에서 수행한 것과 같이, 제2윈도우(430)의 영역정보를 획득할 수 있다. 그러나 제2윈도우(430)는 제1윈도우(420)에 의해 일부분이 가려져서 디스플레이 되지 않는다. 즉 최종적으로 클라이언트 단말(220)에 디스플레이 되는 클라우드 디스플레이 화면의 형태 영역정보를 판단하기 위해서 윈도우들 사이에 서로 겹쳐지는 관계에 대한 정보가 필요하다. 이를 본 발명에서는 윈도우 깊이정보라고 하고, 후술한다.
종합하면, 영역정보획득부(311)는 개별 응용프로그램의 윈도우에 발생한 API정보로부터 해당하는 영역의 특성을 결정하고, 이러한 과정을 통해 수집된 전체 화면에 표시되는 윈도우들의 정보와 각 윈도우에 속한 영역들의 정보, 즉 윈도우의 영역정보를 추출한다. 즉, 개별 응용프로그램이 API를 이용하여 윈도우 내부의 특정 영역에 텍스트를 출력하면 이 정보를 기반으로 해당 영역은 텍스트 영역으로 결정되고, API를 이용하여 사진이나 그림을 출력하면 해당 영역은 그림영역으로 결정되고, API를 이용하여 동영상을 재생하면, 비디오가 재생되는 영역은 동영상 영역으로 결정된다. 이와 같은 과정으로 전체 화면에 표시되는 모든 윈도우들의 영역들을 결정하고, 모든 윈도우 정보와, 각 윈도우에 속한 영역정보 및 어떤 영역정보가 어떤 윈도우에 속해 있는지를 나타내는 관계정보를 저장한다. 즉, 윈도우에 해당하는 식별자를 부여하고, 식별자에 해당하는 영역정보를 모아서 저장함으로써 윈도우가 어떠한 영역들로 구성되어 있는지에 대한 정보를 획득한다. 식별자에 관한 자세한 설명은 후술한다.
도 5는 화면에 디스플레이 된 윈도우들 사이의 깊이를 나타낸다. 설명의 편의를 위해 3개의 윈도우가 디스플레이 되고 있다고 가정한다. 또한 텍스트 특성을 가지는 영역을 영역A, 이미지 특성을 가지는 영역을 영역B, 동영상 특성을 가지는 영역을 영역C, 그래픽 특성을 가지는 영역을 영역D로 가정한다. 최하층 윈도우(510)는 영역A(511)와 영역D(512)를 포함한다. 중간층 윈도우(520)는 영역B(521)를 포함한다. 최상층 윈도우(530)는 영역A(531와 영역C(532)를 포함한다.
깊이정보추출부(312)는 이러한 윈도우 간의 상대적인 깊이정보를 추출하는 역할을 수행한다. 가령 하나의 윈도우가 화면에 표시되고, 그 뒤에 다른 윈도우가 겹쳐져서 앞의 윈도우에 의해 일부, 혹은 전부가 가려져 있다면, 두 개의 윈도우는 서로 깊이가 다르다. 윈도우의 깊이는 화면 맨 앞에 디스플레이 되는 윈도우부터 설정된다. 즉, 뒤쪽에 위치한 윈도우는 상대적으로 보다 깊은 곳에 위치한 윈도우로 간주한다. 두 개의 윈도우가 서로 겹침이 없이 모두 보여진다면, 두 개의 윈도우는 깊이정보가 동일하고, 모두 맨 앞에 위치한 윈도우이다. 깊이정보추출부(312)는 운영체제로부터 현재 실행되고 있는 응용프로그램 중에서 화면에 보여지는 윈도우들 사이의 깊이정보를 추출한다. 이때 윈도우의 좌표정보도 함께 추출할 수 있다. 만약 하나의 응용프로그램에서 복수개의 윈도우가 생성되었다면, 각각의 윈도우를 별개로 간주하여 처리한다. 운영체제는 각 윈도우를 서로 겹치면서 디스플레이 하기 위해서는 각 윈도우간의 깊이에 대한 정보를 가지고 있어야 하므로, 깊이정보추출부(312)는 특정 함수나 명령어를 운영체제제로 보내고, 소정의 리턴 값을 획득하는 등의 방법으로 깊이정보를 획득할 수 있다.
도 6은 영역정보와 깊이정보에 기초하여 부호화모드맵을 생성하는 과정을 도시한다. 설명의 편의를 위해 두 개의 윈도우가 디스플레이 되는 것으로 가정한다. 영역정보획득부(311)는 각 윈도우(610, 620)에 포함된 영역들에 대한 정보를 획득한다. 깊이정보추출부(312)는 운영체제로부터 윈도우들 사이의 상대적인 깊이정보를 추출하여 각 윈도우(610, 620) 중 어느 윈도우가 앞에 위치하는지 판단한다. 전면에 위치한 윈도우(610)는 텍스트영역(611), 이미지영역(612), 동영상영역(613)을 포함한다. 후면에 위치한 윈도우(620)는 텍스트영역(621)과 이미지영역(622)를 포함한다. 이 영역정보와 깊이정보를 조합하여 획득된 클라우드 디스플레이 화면 전체에 대한 영역정보를 참조하면 후면에 위치한 윈도우(620)에 포함된 텍스트영역(621)의 일부가 디스플레이 되지 않는다는 것을 알 수 있다.
이제 클라우드 디스플레이 화면 전체를 복수개의 블록으로 분할한다. 도 6에서는 16x16, 즉 256개의 블록으로 분할하였다. 이러한 분할 개수 및 방법은 디스플레이 장치의 해상도, 또는 시스템 성능에 따라 자유롭게 변경될 수 있다. 예를 들어, 화면을 128x128, 즉 16384개의 블록으로 분할하거나, 16:9 해상도를 가지는 디스플레이 장치를 고려하여 12개(4x3)의 블록으로 분할하거나 144개(16x9)의 블록으로 분할할 수 있다. 물론 해상도에 관계없이 임의 개수의 블록으로 분할할 수 있다. 또한 블록의 크기는 모두 동일할 수도 있으나, 서로 다른 크기의 블록으로 분할될 수도 있다.
분할된 블록 중에서 음영처리된 블록은, 하나의 특성을 가지는 영역으로 채워진 블록을 의미한다. 예를 들어, 전면에 위치한 윈도우(610)의 텍스트영역(611)은 44개(11x4)의 블록의 일부 혹은 전부에 해당하는 영역에 분포한다. 이 중 18개의 음영처리된 블록만이 텍스트영역으로 100% 채워져 있다. 같은 방식으로 전면 윈도우(610)의 이미지영역(612)의 4개 블록, 동영상영역(613)의 24개 블록은 동영상 영역으로만 채워져 있다. 음영 처리된 블록과 같이, 하나의 블록이 한가지 특성을 가지는 영역으로 가득 채워진 경우, 해당 블록에 포함된 영역 특성에 적절한 부호화 모드를 할당할 수 있다. 예를 들어, 텍스트 영역으로 100% 채워진 블록의 경우 텍스트모드, 이미지 영역의 경우 이미지 모드, 동영상 영역의 경우 동영상 모드로 각각 부호화 모드를 할당할 수 있다. 이러한 설명은 후면에 위치한 윈도우(620)과 관련된 블록에도 적용할 수 있다.
그러나 하나의 블록이 하나의 영역 특성으로 100% 채워지지 않거나, 하나의 블록에 둘 이상의 영역 특성이 포함될 수 있다. 예를 들어, 623 블록은 블록의 일부에만 이미지 영역이 포함되어 있으며, 624 블록은 블록의 일부에 텍스트 영역 뿐만아니라 이미지 영역도 포함되어 있다. 이렇게 분할된 블록이 어떤 특성을 가지는 영역을 어느 정도 포함하는지에 따라 해당 블록을 부호화 하는 방법을 결정할 수 있다. 일 예로써, 블록에 가장 많이 포함된 영역을 기준으로 부호화 모드를 결정할 수 있다. 특정 블록에 텍스트 영역이 가장 많이 포함되어 있다면, 해당 블록을 텍스트 모드로 부호화 하는 것으로 결정한다. 부호화부(212)는 텍스트 모드에 대응되는 부호화 알고리즘, 예를 들어 반복길이 부호화(Run-Length encoding) 혹은 허프만 부호화(Huffman coding)와 같은 가변길이 부호화(variable length encoding)와 같은 방식을 사용할 수 있다. 물론 텍스트 모드라도 설정하기에 따라서 손실 알고리즘을 이용하여 부호화 할 수 있다. 다른 예로써, 블록에 포함된 영역의 특성 중에서 가장 낮은 손실률의 부호화 방법을 요하는 영역을 기준으로 부호화 모드를 할당할 수 있다. 즉, 블록에 텍스트, 이미지, 동영상 영역이 모두 포함되어 있는 경우, 설령 동영상 영역이 제일 많은 비율을 차지하며 분포하고 있다 하더라도, 동영상 모드로 해당 블록을 부호화 하면 텍스트를 인식하기 어려울 수 있다. 따라서 이러한 경우, 텍스트모드로 부호화 할 수 있다. 상술한 예시들은 복수개의 영역특성을 포함하는 블록에 부호화 모드를 할당하는 예시에 불과하며, 상술한 각각의 부호화 모드는 다양한 기준에 따라 각 블록에 할당될 수 있다. 예를 들어, 블록이 복수개의 영역을 포함하는 경우, 일률적으로 이미지 모드, 그래픽 모드 등의 부호화 모드를 할당하는 것도 가능하다.
종합하면, 화면영역결정부(313)는 깊이정보추출부(312)로부터 추출된 깊이정보와 영역정보획득부(311)에 의해 획득된 영역정보를 이용하여 전체 클라우드 디스플레이 화면의 영역특성을 결정하고, 부호화부(212)가 영역의 특성을 반영하여 압축효율을 향상시킬 수 있도록 블록단위의 부호화모드맵을 생성한다. 특정 윈도우 식별자를 갖는 영역들이 깊이정보를 고려하였을 때 모두 보여지는 영역이라면 해당 영역들은 해당 윈도우의 영역정보에 저장된 특성으로 결정된다. 그러나 특정 윈도우 전체가 다른 윈도우에 의해 가려진다면 해당 윈도우의 식별자를 갖는 영역정보들은 무시된다. 반면, 특정 윈도우의 경우 영역의 일부는 가려지고 일부는 보여질 수 있는데, 부분적으로 보여지는 부분에 해당하는 영역정보가 해당 영역의 특성으로 결정된다.
도 7은 윈도우에 식별자 정보를 부여하는 특징을 포함한 본 발명의 부호화 방법의 구체적인 흐름도를 나타낸다. 응용프로그램A(751)를 포함한 복수개의 응용프로그램이 실행되고 있고, 각각의 응용프로그램은 API를 이용하여 윈도우를 생성한다. 각 윈도우에는 식별자를 부여할 수 있다. 예를 들어, 응용프로그램A(751)는 0xFC909090의 식별자를 갖는 윈도우(761)를 생성할 수 있다. 하나의 응용프로그램은 복수개의 윈도우를 생성할 수 있다. 생성된 윈도우들에는 각각 식별자가 부여된다. 예를 들어 응용프로그램C(753)는 식별자 0xFD909090을 갖는 윈도우(763)와 식별자 0xCC909009를 갖는 윈도우(754)를 생성할 수 있다. 윈도우와 관련된 정보들은 식별자 단위로 관리된다. 단계 710에서, 클라우드 서버는 API 정보에 기반하여, 식별자 단위로 윈도우의 영역정보를 획득한다. 단계 720에서, 마찬가지로 식별자 단위로 운영체제로부터 각 윈도우 사이의 상대적인 깊이정보를 추출한다. 단계 730에서, 획득된 영역정보와 추출된 깊이정보로부터 화면의 특정 영역에 대한 특성(그래픽, 사진, 그림, 텍스트, 동영상 등)을 결정한다. 예를 들면, 식별자 0xFC909090을 갖는 윈도우(761)가 식별자 0xF8909090을 갖는 윈도우(762)에 의해 일부 가려진다면, 식별자 0xFC909090을 갖는 윈도우(761)의 영역정보중 식별자 0xF8909090을 갖는 윈도우(762)의 좌표정보를 활용하여 가려지지 않는 영역을 해당 영역의 특성으로 결정한다. 이때 식별자 0xFC909090을 갖는 영역정보 중 특정 영역정보가 일부만 가려지는 경우는 나머지 가려지지 않은 부분만을 해당 영역의 특성으로 결정한다. 좌표정보는 영역정보획득부(311), 깊이정보추출부(312) 뿐만 아니라 중앙처리부(314) 등의 제어부(211) 구성요소로부터 획득될 수 있다.
전체 화면 영역의 특성을 결정한 후, 화면 부호화를 위하여 부호화모드맵을 생성한다.(단계 730) 부호화모드맵은 미리 정의된 블록단위(예: 16x16)로 영역의 특성을 재정의한 맵이다. 하나의 블록 내부에 복수개의 영역 특성이 포함되어 있다면, 미리 정의된 기준에 따라 블록의 부호화 모드를 할당한다. 그 외에 결정되지 않은 영역은 화면부호화부(212)가 미리 결정한 기본 부호화 모드로 부호화 된다. 예를 들어 단 API에 대응되어 영역이 결정되지 않은 영역 등은 미리 결정된 기본 부호화 모드를 할당할 수 있다. 화면 부호화부(212)는 할당된 부호화 모드에 따라 각 블록을 부호화 모드에 대응되는 부호화 알고리즘으로 부호화한다. (단계 740)
단계 740에서 화면 부호화부(212)는 화면영역결정부에서 생성된 부호화모드맵을 활용하여 순차적으로(raster-scan order) 해당 블럭에 할당된 부호화모드에 따라 미리 정의된 부호화알고리즘을 사용하여 부호화한다. 즉, Text 모드가 할당되면 텍스트에 적합한 부호화알고리즘을, 사진 모드가 할당되면 사진영역 부호화에 적합한 알고리즘을, 그래픽 모드가 할당되면 그래픽 부호화에 적합한 알고리즘을, 동영상 모드가 할당되면 동영상 부호화에 적합한 부호화알고리즘을 적용하여 화면전체 영역을 부호화한다.
도 8는 API 기반 윈도우의 영역정보를 획득하는 단계를 보다 구체적으로 나타낸 도면이다. 도 8과 중복되는 부분의 설명은 생략한다. 도 8의 윈도우 영역정보 획득단계(단계 710)는 API에 기반하여 윈도우에 포함된 영역의 내용을 결정하는 단계 810과 영역을 관리하는 단계 820, 및 그 영역 정보를 저장하는 단계 830으로 세분화 될 수 있다. 각각의 단계를 수행하기 위해 영역정보획득부(311)는 영역관리부, 영역저장부 등을 추가로 포함할 수 있다. 물론 이러한 기능은 중앙처리부(314)와 같은 제어부(211)의 다른 요소나, 저장부(213) 등에 의해 수행될 수 있다.
제어부(211)는 개별 응용프로그램으로부터 수집된 영역정보에 응용프로그램의 영역정보가 속한 윈도우에 해당하는 식별자를 부여하고, 해당 식별자에 대응되는 영역정보를 모아서 저장할 수 있다. 즉, 특정 식별자에 해당하는 영역정보를 모아서 하나의 그룹으로 저장한다. 그룹은 윈도우 식별자에 의해 구분된다. 예를 들어, 워드 프로세스와 같은 응용프로그램의 작업 윈도우에 그림영역 A와 텍스트영역B가 있고, 상기 작업윈도우에 식별자가 0xFC909090이 부여되었다면, 식별자 0xFC909090의 윈도우는 그림영역A와 텍스트영역B를 포함한다. 시스템에서는 해당 영역의 좌표와 영역의 특성정보가 저장되고, 식별자 0xFC909090에 포함되는 정보라는 내용이 기록된다. 운영체제가 마이크로소프스 사의 Windows 라면 시스템에서 부여하는 윈도우 핸들이 식별자가 될 수 있다. 특정 응용프로그램은 복수개의 윈도우를 가질 수 있으며, 상황에 따라 윈도우의 개수는 변할 수 있다. 복수의 윈도우가 존재하는 경우에는, 각각의 윈도우별로 식별자가 할당된다. 영역정보는 자신이 속한 윈도우의 식별자를 기준으로 분류된다.
영역관리부는, 개별 응용프로그램이 종료되거나 새로이 실행될 때, 시스템에 저장된 영역정보를 관리하는 역할을 수행한다. 즉, 응용프로그램이 새롭게 실행되면, 새로이 생성된 윈도우의 식별자를 설정하고, 응용프로그램에서 생성되는 영역정보를 저장하기 위한 메모리 공간을 확보한다. 반대로 실행중이던 응용프로그램 또는 윈도우가 종료되면, 종료된 윈도우에 해당하는 식별자를 가지고 저장되었던 영역정보를 삭제하고 해당 메모리 공간을 시스템에 반환한다.
도 9는 클라우드 디스플레이 화면을 부호화 하여 클라우드 서버에서 클라이언트 단말로 전송하고, 다시 복호화 하는 일련의 과정을 나타낸다. 클라우드 서버는 클라우드 디스플레이 화면(910)을 분석하여 전술한 방법에 따라 위치정보와 깊이정보에 기초하여 전체 화면의 영역 특성을 결정하고(920), 각 블록에 포함된 영역 특성에 따라 부호화모드맵(930)을 생성한다. 도 9에서, 동영상 부호화 모드는 M으로, 이미지 부호화 모드는 I로, 텍스트 부호화 모드는 T로 표시하였다. 후술하겠지만, 대응되는 복호화 모드는 각각 M', I', T'으로 표시하였다.
도 9에서는 36개(6x6)의 블록을 포함하는 부호화모드맵(930)을 도시하고 있으나, 블록의 개수나 영역의 종류 등이 변경될 수 있다는 점은 이미 설명한 바 있다. 또한, 같은 이미지 영역이라도 손실률 등이 다른 압축 알고리즘이 적용되도록 세분화하여, 예를 들면 I1, I2, I3 등과 같이 부호화 모드를 설정할 수 있다.
부호화모드맵(930)에 기초하여 클라우드 디스플레이 화면(910)이 부호화되면, 전송 스트림으로 구성되어 클라이언트 단말로 전송된다. 이때, 전송스트림에는 해당 데이터의 부호화 모드에 대한 정보가 스트림을 구성하는 헤더 등에 포함될 수 있다. 클라이언트 단말은 수신된 스트림을 분석하여, 부호화 모드에 대응되는 복호화 알고리즘을 각각의 블록에 적용하여(940) 복원된 클라우드 디스플레이 화면(950)을 클라이언트 단말에 디스플레이한다. 이때 래스터 스캔 방식(raster-scan order)과 같이 좌상단의 블록부터 우하단의 블록 순서로 복호화 할 수 있다. 이러한 방식을 적용함으로써, 클라이언트 단말은 별도의 렌더링 도구 없이도, 좌상단 블록에 대응되는 영역부터 순차적으로 복원하여 클라이언트 단말에 클라우드 디스플레이 화면을 복원할 수 있다.
이상, 본 발명에서 개시된 블럭도들은 본 발명의 원리들을 구현하기 위한 회로를 개념적으로 표현한 형태라고 당업자에게 해석될 수 있을 것이다. 유사하게, 임의의 흐름 차트, 흐름도, 상태 전이도, 의사코드 등은 컴퓨터 판독가능 매체에서 실질적으로 표현되어, 컴퓨터 또는 프로세서가 명시적으로 도시되든지 아니든지 간에 이러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스를 나타낸다는 것이 당업자에게 인식될 것이다. 따라서, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
도면들에 도시된 다양한 요소들의 기능들은 적절한 소프트웨어와 관련되어 소프트웨어를 실행할 수 있는 하드웨어뿐만 아니라 전용 하드웨어의 이용을 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 이런 기능은 단일 전용 프로세서, 단일 공유 프로세서, 또는 일부가 공유될 수 있는 복수의 개별 프로세서에 의해 제공될 수 있다. 또한, 용어 "프로세서" 또는 "제어부"의 명시적 이용은 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 지칭하는 것으로 해석되지 말아야 하며, 제한 없이, 디지털 신호 프로세서(DSP) 하드웨어, 소프트웨어를 저장하기 위한 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 및 비휘발성 저장장치를 묵시적으로 포함할 수 있다.
본 명세서의 청구항들에서, 특정 기능을 수행하기 위한 수단으로서 표현된 요소는 특정 기능을 수행하는 임의의 방식을 포괄하고, 이러한 요소는 특정 기능을 수행하는 회로 요소들의 조합, 또는 특정 기능을 수행하기 위한 소프트웨어를 수행하기 위해 적합한 회로와 결합된, 펌웨어, 마이크로코드 등을 포함하는 임의의 형태의 소프트웨어를 포함할 수 있다.
본 명세서에서 본 발명의 원리들의 '일 실시예'와 이런 표현의 다양한 변형들의 지칭은 이 실시예와 관련되어 특정 특징, 구조, 특성 등이 본 발명의 원리의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 표현 '일 실시예에서'와, 본 명세서 전체를 통해 개시된 임의의 다른 변형례들은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
본 명세서에서, 'A와 B 중 적어도 하나'의 경우에서 '~중 적어도 하나'의 표현은, 첫 번째 옵션 (A)의 선택만, 또는 두 번째 열거된 옵션 (B)의 선택만, 또는 양쪽 옵션들 (A와 B)의 선택을 포괄하기 위해 사용된다. 추가적인 예로 'A, B, 및 C 중 적어도 하나'의 경우는, 첫 번째 열거된 옵션 (A)의 선택만, 또는 두 번째 열거된 옵션 (B)의 선택만, 또는 세 번째 열거된 옵션 (C)의 선택만, 또는 첫 번째와 두 번째 열거된 옵션들 (A와 B)의 선택만, 또는 두 번째와 세 번째 열거된 옵션 (B와 C)의 선택만, 또는 모든 3개의 옵션들의 선택(A와 B와 C)이 포괄할 수 있다. 더 많은 항목들이 열거되는 경우에도 당업자에게 명백하게 확장 해석될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 명세서를 통해 개시된 모든 실시예들과 조건부 예시들은, 본 발명의 기술 분야에서 통상의 지식을 가진 당업자가 독자가 본 발명의 원리와 개념을 이해하도록 돕기 위한 의도로 기술된 것으로, 당업자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
클라우드 서버: 210
클라이언트 단말: 220
제어부(서버): 211
영역정보획득부: 311
깊이정보추출부: 312
화면영역결정부: 313
중앙처리부: 314
부호화부(서버): 212
저장부(서버): 213
통신부(서버): 214
제어부(단말): 221
복호화부(단말): 222
통신부(단말): 223
디스플레이 디바이스: 224
입력 인터페이스: 225

Claims (16)

  1. 클라우드 서버가 클라우드 디스플레이 화면을 부호화 하는 방법에 있어서,
    운영체제의 API 함수 정보에 기초하여 현재 생성된 윈도우들의 영역정보를 획득하는 단계;
    상기 운영체제로부터 상기 생성된 윈도우들 간의 상대적인 깊이정보를 추출하는 단계;
    상기 획득된 영역정보와 상기 추출된 깊이정보에 기초하여 상기 화면 전체를 복수개의 블럭으로 분할하는 부호화모드맵을 생성하는 단계; 및
    상기 생성된 부호화모드맵에 기초하여 상기 각 블록을 부호화하는 단계를 포함하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  2. 제1항에 있어서,
    상기 윈도우들의 영역정보를 획득하는 단계는, 상기 생성된 윈도우 각각에 대해 식별자를 부여하고, 상기 식별자에 대응하는 윈도우의 영역정보를 저장하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  3. 제2항에 있어서,
    상기 윈도우의 영역정보를 획득하는 단계는, 상기 생성된 윈도우들 중 적어도 하나의 윈도우가 종료되면, 상기 종료된 윈도우의 식별자에 대응하는 영역정보를 삭제하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  4. 제2항에 있어서,
    상기 식별자는 윈도우 핸들인 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  5. 제1항에 있어서,
    상기 부호화모드맵 생성 단계는, 상기 각 블록에 포함된 영역정보에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  6. 제5항에 있어서,
    상기 부호화모드맵 생성 단계는, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록을 구성하는 영역정보의 비율에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  7. 제5항에 있어서,
    상기 부호화모드맵 생성단계는, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록에 포함된 복수개의 영역정보에 대응하여 미리 설정된 부호화 알고리즘의 우선순위에 따라 상기 블록에 적용될 부호화 알고리즘으로 결정하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  8. 제1항에 있어서,
    상기 복수개의 블록을 부호화하는 단계는, 각 블록을 래스터 스캔 순서(raster-scan order)에 따라 부호화 하는 것을 특징으로 하는 클라우드 디스플레이 화면의 부호화 방법.
  9. 클라우드 디스플레이 화면을 부호화하기 위한 클라우드 서버에 있어서,
    운영체제의 API 함수 정보에 기초하여 현재 생성된 윈도우들의 영역정보를 획득하는 영역정보 획득부;
    상기 운영체제로부터 상기 생성된 윈도우들 간의 상대적인 깊이정보를 추출하는 깊이정보 추출부;
    상기 획득된 영역정보와 상기 추출된 깊이정보에 기초하여 상기 화면 전체를 복수개의 블럭으로 분할하는 부호화모드맵을 생성하는 화면영역 결정부; 및
    상기 생성된 부호화모드맵에 기초하여, 상기 각 블록을 부호화하는 부호화부를 포함하는 것을 특징으로 하는 클라우드 서버.
  10. 제9항에 있어서,
    상기 영역정보 획득부는, 상기 생성된 윈도우들 각각에 대해 식별자를 부여하고,
    상기 식별자에 대응하는 윈도우의 영역정보를 저장하는 영역저장부를 포함하는 것을 특징으로 하는 클라우드 서버.
  11. 제10항에 있어서,
    상기 영역정보 획득부는, 상기 생성된 윈도우들 중 적어도 하나의 윈도우가 종료되면, 상기 종료된 윈도우의 식별자에 대응하는 영역정보를 삭제하는 영역관리부를 더 포함하는 것을 특징으로 하는 클라우드 서버.
  12. 제9항에 있어서,
    상기 화면영역 결정부는, 상기 각 블록에 포함된 영역정보에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하는 것을 특징으로 하는 클라우드 서버.
  13. 제12항에 있어서,
    상기 화면영역 결정부는, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록을 구성하는 영역정보의 비율에 기초하여 상기 각 블록에 적용될 부호화 알고리즘을 결정하는 것을 특징으로 하는 클라우드 서버.
  14. 제12항에 있어서,
    상기 화면영역 결정부는, 상기 각 블록에 복수개의 영역정보가 포함되어 있는 경우, 상기 각 블록에 포함된 복수개의 영역정보에 대응하여 미리 설정된 부호화 알고리즘간의 우선순위에 따라 상기 블록에 적용될 부호화 알고리즘으로 결정하는 것을 특징으로 하는 클라우드 서버.
  15. 클라우드 디스플레이 화면을 복호화하기 위한 클라우드 단말에 있어서,
    클라우드 서버로부터 부호화된 클라우드 디스플레이 화면 스트림을 수신하는 통신부; 및
    상기 스트림을 복호화하는 복호화부를 포함하고,
    상기 스트림은 복수개의 블록단위로 분할된 클라우드 디스플레이 화면 각각에 대해 선택적으로 적용된 부호화 알고리즘으로 부호화된 데이터를 포함하는 것을 특징으로 하는 클라우드 단말.
  16. 제15항에 있어서,
    상기 복호화부는 상기 각 부호화 알고리즘에 대응되는 복호화 알고리즘으로 상기 스트림을 복호화하는 것을 특징으로 하는 클라우드 단말.
KR1020120110837A 2012-10-05 2012-10-05 Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치 KR101984825B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120110837A KR101984825B1 (ko) 2012-10-05 2012-10-05 Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치
US14/045,333 US9053526B2 (en) 2012-10-05 2013-10-03 Method and apparatus for encoding cloud display screen by using application programming interface information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120110837A KR101984825B1 (ko) 2012-10-05 2012-10-05 Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20140045013A true KR20140045013A (ko) 2014-04-16
KR101984825B1 KR101984825B1 (ko) 2019-05-31

Family

ID=50432720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120110837A KR101984825B1 (ko) 2012-10-05 2012-10-05 Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치

Country Status (2)

Country Link
US (1) US9053526B2 (ko)
KR (1) KR101984825B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160043398A (ko) 2014-10-13 2016-04-21 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 소스 정보를 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20170025140A (ko) * 2015-08-27 2017-03-08 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, os 메시지를 이용한 변화 영역 탐지 기반의 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20190049071A (ko) * 2017-11-01 2019-05-09 카테노이드 주식회사 클라우드 스토리지 서비스 제공 방법
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870659A (zh) * 2017-11-03 2018-04-03 河南智业科技发展有限公司 一种可视型云计算桌面终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040072612A (ko) * 2002-12-10 2004-08-18 임경수 동영상 압축 및 복원방법과 그 장치
KR20090029513A (ko) * 2007-09-18 2009-03-23 엘지전자 주식회사 멀티 미디어 데이터의 부호화/복호화 방법 및 장치
KR20120058227A (ko) * 2010-11-29 2012-06-07 주식회사 케이티 프리젠테이션 가상화를 위한 화면 부호화 방법 및 서버

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8805110B2 (en) * 2008-08-19 2014-08-12 Digimarc Corporation Methods and systems for content processing
US8886206B2 (en) * 2009-05-01 2014-11-11 Digimarc Corporation Methods and systems for content processing
US8768313B2 (en) * 2009-08-17 2014-07-01 Digimarc Corporation Methods and systems for image or audio recognition processing
US8885702B2 (en) * 2011-10-17 2014-11-11 Google Inc. Rate-distortion-complexity optimization of video encoding guided by video description length

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040072612A (ko) * 2002-12-10 2004-08-18 임경수 동영상 압축 및 복원방법과 그 장치
KR20090029513A (ko) * 2007-09-18 2009-03-23 엘지전자 주식회사 멀티 미디어 데이터의 부호화/복호화 방법 및 장치
KR20120058227A (ko) * 2010-11-29 2012-06-07 주식회사 케이티 프리젠테이션 가상화를 위한 화면 부호화 방법 및 서버

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor
KR20160043398A (ko) 2014-10-13 2016-04-21 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 소스 정보를 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20170025140A (ko) * 2015-08-27 2017-03-08 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, os 메시지를 이용한 변화 영역 탐지 기반의 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20190049071A (ko) * 2017-11-01 2019-05-09 카테노이드 주식회사 클라우드 스토리지 서비스 제공 방법

Also Published As

Publication number Publication date
US20140099041A1 (en) 2014-04-10
KR101984825B1 (ko) 2019-05-31
US9053526B2 (en) 2015-06-09

Similar Documents

Publication Publication Date Title
WO2017005149A1 (zh) 一种游戏加速方法和装置
US10652591B2 (en) System for cloud streaming service, method for same using still-image compression technique and apparatus therefor
US9426476B2 (en) Video stream
CN109309842B (zh) 直播数据处理方法和装置、计算机设备和存储介质
KR101984825B1 (ko) Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치
US10742923B2 (en) Detection of photosensitive triggers in video content
US11521025B2 (en) Selective image compression of an image stored on a device based on user preferences
US20150117515A1 (en) Layered Encoding Using Spatial and Temporal Analysis
CN116457819A (zh) 低带宽传输中的高清视频实时流的非并行压缩视频编码
CN114691063A (zh) 一种屏幕采集方法、终端及存储介质
US10666954B2 (en) Audio and video multimedia modification and presentation
US10609368B2 (en) Multiple image storage compression tree
KR20160131827A (ko) 클라우드 스트리밍 서비스 시스템, 알파 레벨을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US9916861B2 (en) Editing media on a mobile device before transmission
US20230056599A1 (en) System and method for rendering a design including a dynamic design element
US10972740B2 (en) Method for bandwidth reduction when streaming large format multi-frame image data
US20160064039A1 (en) Thumbnail Generation
CN112164066A (zh) 一种遥感图像分层分割方法、装置、终端及存储介质
US11438633B2 (en) Temporal de-noising for video
JP7403115B2 (ja) 映像送信装置、アプリケーションプログラム及び映像送信方法
KR102247657B1 (ko) 클라우드 스트리밍 서비스 시스템, 인코딩 처리 유닛의 작업 분리를 통한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN112596850A (zh) 针对多窗口应用程序的控制方法及系统
CN115941861A (zh) 窗格画面播放方法、装置、电子设备及介质
CN113271497A (zh) 一种视频播放方法、智能终端、存储介质及程序产品
CN117915020A (zh) 用于视频裁剪的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant