[go: up one dir, main page]

KR20250014115A - Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor - Google Patents

Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor Download PDF

Info

Publication number
KR20250014115A
KR20250014115A KR1020230093561A KR20230093561A KR20250014115A KR 20250014115 A KR20250014115 A KR 20250014115A KR 1020230093561 A KR1020230093561 A KR 1020230093561A KR 20230093561 A KR20230093561 A KR 20230093561A KR 20250014115 A KR20250014115 A KR 20250014115A
Authority
KR
South Korea
Prior art keywords
data
alpha data
cloud streaming
gpu memory
alpha
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020230093561A
Other languages
Korean (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 KR1020230093561A priority Critical patent/KR20250014115A/en
Priority to PCT/KR2024/009299 priority patent/WO2025018651A1/en
Publication of KR20250014115A publication Critical patent/KR20250014115A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • 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/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2223Secondary servers, e.g. proxy server, cable television Head-end being a public access point, e.g. for downloading to or uploading from clients
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치가 개시된다. 본 발명에 따른 비디오 클라우드 스트리밍 서비스 제공 방법은 클라우드 스트리밍 서버가, 렌더러 프로세스에서 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하고, GPU 메모리 상에서 알파 데이터의 프레임간 변화 여부를 판단하고, 알파 데이터가 변화한 경우에 알파 데이터를 CPU 메모리로 전달하여 인코딩하고, CPU 메모리에서 인코딩된 알파 데이터와 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍할 수 있다.A method for providing a video cloud streaming service based on efficient transparency processing and a device therefor are disclosed. The video cloud streaming service providing method according to the present invention allows a cloud streaming server to display a current frame on a GPU memory using alpha data obtained from a renderer process, determine whether there is a change in the alpha data between frames on the GPU memory, encode the alpha data by transferring it to a CPU memory when the alpha data has changed, and stream the alpha data encoded in the CPU memory and the RGB data encoded in the GPU memory to a user terminal.

Description

효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치{METHOD FOR PROVIDING VIDEO CLOUD STREAMING SERVICE BASED ON EFFICIENT TRANSPARENCY PROCESSING AND APPARATUS THEREFOR}METHOD FOR PROVIDING VIDEO CLOUD STREAMING SERVICE BASED ON EFFICIENT TRANSPARENCY PROCESSING AND APPARATUS THEREFOR

본 발명은 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 기술에 관한 것으로, 특히 GPU 메모리 상에서 투명도 변화를 처리함으로써 GPU 메모리와 CPU 메모리 간 데이터 전송량 감소시킬 수 있는 기술에 관한 것이다.The present invention relates to a technology for providing a video cloud streaming service based on efficient transparency processing, and more particularly, to a technology capable of reducing the amount of data transferred between GPU memory and CPU memory by processing transparency changes on GPU memory.

인터넷의 급속한 발달은 개인의 통신 속도를 급격히 향상시키는 결과를 가져왔으며, 이러한 통신 속도의 향상은 원격지에 위치한 컴퓨터에 접속하여 대용량의 데이터를 다운로드 또는 업로드 하거나, 원격지 컴퓨터 제어 프로그램을 사용하여 마치 원격지 컴퓨터에 로컬 로그인한 것과 같이 원격지 컴퓨터를 이용할 수 있는 환경을 제공하고 있다. 또한, 스마트폰과 같은 이동통신 단말에서 구동되는 어플리케이션이 다양하게 개발되면서, 비교적 낮은 성능의 사용자 단말에서 높은 성능을 필요로 하는 어플리케이션을 구동하기 위한 가상화 기술들이 많이 제안되고 있다.The rapid development of the Internet has resulted in a rapid increase in personal communication speeds, and this increase in communication speeds has provided an environment in which one can access a remote computer to download or upload large amounts of data, or use a remote computer control program to use the remote computer as if one were logged into the remote computer locally. In addition, as various applications that run on mobile communication terminals such as smartphones are developed, many virtualization technologies are being proposed to run applications that require high performance on relatively low-performance user terminals.

클라우드 스트리밍(Cloud Streaming) 기술은 고사양의 시스템 자원을 필요로 하는 어플리케이션 또는 서비스를 클라우드 스트리밍 서버에서 구동하고, 렌더링된 결과만을 사용자 단말로 전달하는 솔루션에 해당한다. 따라서, 저사양의 단말에서도 고사양의 비디오를 재생하거나 또는 3D 게임을 플레이 할 수 있다.Cloud Streaming technology is a solution that runs applications or services that require high-spec system resources on a cloud streaming server and delivers only the rendered results to the user terminal. Therefore, high-spec videos or 3D games can be played even on low-spec terminals.

한편, 라이브 채널(Live Channel) 위에 표시되는 메뉴 또는 포스터 등의 UI(User Interface)를 제공하기 위한 클라우드 스트리밍은 주로 이미지 인코딩을 통해 이루어지는데, 이는 투명도 처리에 용이하기 때문이다. 그러나, 이미지 인코딩의 경우, 애니메이션과 같이 화면 변화 속도가 빨라지는 처리에 있어서 부하가 크게 발생하는 단점이 존재하였다.Meanwhile, cloud streaming for providing UI (User Interface) such as menus or posters displayed on the live channel is mainly done through image encoding because it is easy to handle transparency. However, in the case of image encoding, there was a disadvantage that a large load was generated in processing where the screen changes quickly, such as animation.

따라서, 비디오 클라우드 스트리밍 기반의 비디오 인코딩을 이용한 기술의 필요성이 강조되고 있으나, 비디오 클라우드 스트리밍의 브라우저에서 투명도 정보인 알파 데이터의 처리는 GPU 프로세스 프레임 버퍼와의 동기화 또는 해상도 조절에 의한 추가 비용 발생 등에 관련된 이슈가 존재한다.Therefore, the need for technology using video encoding based on video cloud streaming is being emphasized, but there are issues related to processing alpha data, which is transparency information, in the browser of video cloud streaming, such as synchronization with the GPU process frame buffer or additional costs due to resolution adjustment.

한국 공개 특허 제10-2016-0131829호, 2016년 11월 16일 공개 (명칭: 클라우드 스트리밍 서비스 시스템, 이미지 타입에 따른 알파 값을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치)Korean Patent Publication No. 10-2016-0131829, published on November 16, 2016 (Title: Cloud streaming service system, image cloud streaming service method using alpha value according to image type and device therefor)

본 발명의 목적은, 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리하는 것이다.The purpose of the present invention is to process transparency information to match the final screen composition on the GPU process while solving the synchronization problem between the renderer process and the GPU process in the browser of video cloud streaming.

또한, 본 발명의 목적은, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득하는 것이다.In addition, an object of the present invention is to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method, in video cloud streaming.

또한, 본 발명의 목적은 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화하는 것이다.In addition, an object of the present invention is to minimize performance degradation due to data transfer between memories by minimizing the amount of data transfer between GPU memories for transparency processing.

상기한 목적을 달성하기 위한 본 발명에 따른 비디오 클라우드 스트리밍 서비스 제공 방법은, 클라우드 스트리밍 서버가, 렌더러 프로세스를 통해 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하는 단계; 상기 GPU 메모리 상에서 상기 알파 데이터의 프레임간 변화 여부를 판단하는 단계; 상기 알파 데이터가 변화한 경우, 상기 알파 데이터를 CPU 메모리로 전달하여 인코딩하는 단계; 및 상기 CPU 메모리에서 인코딩된 알파 데이터와 상기 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍하는 단계를 포함한다.In order to achieve the above-described purpose, the method for providing a video cloud streaming service according to the present invention comprises the steps of: allowing a cloud streaming server to display a current frame on a GPU memory using alpha data obtained through a renderer process; determining whether there is a change in the alpha data between frames on the GPU memory; encoding the alpha data by transferring it to a CPU memory when the alpha data has changed; and streaming the alpha data encoded in the CPU memory and the RGB data encoded in the GPU memory to a user terminal.

이 때, 판단하는 단계는 상기 GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하는 단계를 더 포함하고, 상기 GPU 메모리 컨트롤 프레임워크의 커널에서 상기 알파 데이터의 프레임간 변화 여부를 판단할 수 있다.At this time, the judging step further includes a step of copying the frame buffer (FRAME BUFFER) in the GPU memory to the GPU memory control framework, and the kernel of the GPU memory control framework can judge whether the alpha data changes between frames.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 상기 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

이 때, CPU 메모리는 상기 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the alpha data and encode the alpha data change area.

이 때, 인코딩된 RGB 데이터는 인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to encoded VIDEO ELEMENT STREAM data.

이 때, 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser of the cloud streaming server can be operated in NATIVE WINDOWS mode.

이 때, 사용자 단말은 상기 인코딩된 알파 데이터와 상기 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이할 수 있다.At this time, the user terminal can decode the encoded alpha data and the encoded RGB data respectively, and apply the decoded alpha data to the decoded RGB data to display a screen with transparency applied to the user.

또한, 본 발명에 따른 클라우드 스트리밍 서버는 렌더러 프로세스에서 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하고, 상기 GPU 메모리 상에서 상기 알파 데이터의 프레임간 변화 여부를 판단하고, 상기 알파 데이터가 변화한 경우, 상기 알파 데이터를 CPU 메모리로 전달하여 인코딩하고, 상기 CPU 메모리에서 인코딩된 알파 데이터와 상기 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍하는 프로세서; 및 상기 알파 데이터를 저장하는 메모리를 포함한다.In addition, the cloud streaming server according to the present invention includes a processor that displays a current frame on a GPU memory using alpha data obtained from a renderer process, determines whether there is a change in the alpha data between frames on the GPU memory, and if the alpha data has changed, transmits the alpha data to a CPU memory to encode it, and streams the alpha data encoded in the CPU memory and the RGB data encoded in the GPU memory to a user terminal; and a memory that stores the alpha data.

이 때, 프로세서는 상기 GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하고, 상기 GPU 메모리 컨트롤 프레임워크의 커널에서 상기 알파 데이터의 프레임간 변화 여부를 판단할 수 있다.At this time, the processor can copy the frame buffer in the GPU memory to the GPU memory control framework, and the kernel of the GPU memory control framework can determine whether there is a change in the alpha data between frames.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 상기 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

이 때, CPU 메모리는 상기 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the alpha data and encode the alpha data change area.

이 때, 인코딩된 RGB 데이터는 인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to encoded VIDEO ELEMENT STREAM data.

이 때, 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser of the cloud streaming server can be operated in NATIVE WINDOWS mode.

이 때, 사용자 단말은 상기 인코딩된 알파 데이터와 상기 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이할 수 있다.At this time, the user terminal can decode the encoded alpha data and the encoded RGB data respectively, and apply the decoded alpha data to the decoded RGB data to display a screen with transparency applied to the user.

본 발명에 따르면, 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.According to the present invention, transparency information can be processed to match the final screen composition on the GPU process while solving the synchronization problem between the renderer process and the GPU process in the browser of video cloud streaming.

또한, 본 발명은, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, the present invention can efficiently obtain alpha values, which are transparency information, while simultaneously using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 본 발명은 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.In addition, the present invention can minimize performance degradation due to data transfer between memories by minimizing the amount of data transfer between GPU memories for transparency processing.

도 1은 본 발명의 일실시예에 따른 클라우드 스트리밍 서비스 시스템을 나타낸 블록도이다.
도 2는 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 3은 본 발명에 따라 알파 데이터를 전송하는 과정의 일 예를 나타낸 도면이다.
도 4는 도 3에서 알파 데이터를 전송하는 과정을 보다 상세하게 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법을 상세하게 나타낸 동작 흐름도이다.
도 6은 본 발명의 일실시예에 따른 클라우드 스트리밍 서버를 나타낸 블록도이다.
FIG. 1 is a block diagram illustrating a cloud streaming service system according to one embodiment of the present invention.
FIG. 2 is a flowchart illustrating a method for providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention.
FIG. 3 is a diagram showing an example of a process for transmitting alpha data according to the present invention.
Figure 4 is a drawing showing in more detail the process of transmitting alpha data in Figure 3.
FIG. 5 is a detailed flowchart illustrating a method for providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention.
FIG. 6 is a block diagram illustrating a cloud streaming server according to an embodiment of the present invention.

이하 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the attached drawings. However, detailed descriptions of well-known functions or configurations that may obscure the gist of the present invention in the following description and the attached drawings will be omitted. In addition, it should be noted that identical components are indicated by the same drawing reference numerals throughout the drawings as much as possible.

이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다. 또한 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다.The terms or words used in this specification and claims described below should not be interpreted as limited to their usual or dictionary meanings, but should be interpreted as meanings and concepts that conform to the technical idea of the present invention based on the principle that the inventor can appropriately define the concept of the term to best describe his or her invention. Therefore, the embodiments described in this specification and the configurations illustrated in the drawings are only the most preferred embodiments of the present invention and do not represent all of the technical idea of the present invention. Therefore, it should be understood that there may be various equivalents and modified examples that can replace them at the time of this application. In addition, terms such as first, second, etc. are used to describe various components, and are only used for the purpose of distinguishing one component from another, and are not used to limit the components.

도 1은 본 발명의 일실시예에 따른 클라우드 스트리밍 서비스 시스템을 나타낸 블록도이다.FIG. 1 is a block diagram illustrating a cloud streaming service system according to one embodiment of the present invention.

도 1을 참조하면, 본 발명의 일실시예에 따른 클라우드 스트리밍 서비스 시스템은 클라우드 스트리밍 서버(110), 사용자 단말(120-1~120-N) 및 네트워크(130)를 포함한다.Referring to FIG. 1, a cloud streaming service system according to one embodiment of the present invention includes a cloud streaming server (110), user terminals (120-1 to 120-N), and a network (130).

클라우드 스트리밍 서비스 또는 클라우드 컴퓨팅 서비스는 사용자가 컨텐츠를 로컬 스토리지가 아닌, 인터넷상의 클라우드 스토리지에 저장해놓고, 인터넷이 가능한 기기를 이용하여 언제 어디서든지 클라우드 스토리지에 접근하여 컨텐츠를 이용할 수 있는 서비스이다.Cloud streaming service or cloud computing service is a service that allows users to store content in cloud storage on the Internet rather than in local storage, and access the cloud storage to use the content anytime, anywhere using an Internet-enabled device.

클라우드 스트리밍 서버(110)는 사용자 단말(120-1~120-N)로부터 요청된 클라우드 스트리밍 서비스를 처리하기 위한 비디오 클라우드 스트리밍 엔진을 포함할 수 있다. The cloud streaming server (110) may include a video cloud streaming engine for processing a cloud streaming service requested from a user terminal (120-1 to 120-N).

이 때, 클라우드 스트리밍 서버(110)에서는 클라우드 스트리밍 엔진이 실행되는 시점에 기 정의된 수만큼 브라우저를 생성할 수 있는데, 브라우저는 HTML, CSS 및 JavaScript등을 다운로드하고 실행하여 화면에 렌더링해줄 수 있다. At this time, the cloud streaming server (110) can create a predefined number of browsers at the time the cloud streaming engine is executed, and the browser can download and execute HTML, CSS, and JavaScript, etc., and render them on the screen.

이 때, HTML(Hyper Text Markup Language)는 웹 페이지의 큰 뼈대를 제공하고, CSS(Cascading Style Sheets)는 색깔이나 글씨체와 같은 디자인 요소를 관리하며, 자바스크립트(Javascritp)는 크로스 플랫폼, 객체지향 스크립트 언어로 웹페이지의 동작을 담당할 수 있다.At this time, HTML (Hyper Text Markup Language) provides the large framework of a web page, CSS (Cascading Style Sheets) manages design elements such as color and font, and JavaScript (JavaScript) is a cross-platform, object-oriented scripting language that can be responsible for the operation of a web page.

클라우드 스트리밍 서버(110)는 렌더러 프로세스를 통해 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이한다. The cloud streaming server (110) displays the current frame on the GPU memory using the alpha data obtained through the renderer process.

이 때, 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser of the cloud streaming server can be operated in NATIVE WINDOWS mode.

또한, 클라우드 스트리밍 서버(110)는 GPU 메모리 상에서 알파 데이터의 프레임간 변화 여부를 판단한다.Additionally, the cloud streaming server (110) determines whether there is a change between frames in alpha data on the GPU memory.

이 때, GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사할 수 있다. At this time, the frame buffer in GPU memory can be copied to the GPU memory control framework.

이 때, GPU 메모리 컨트롤 프레임워크의 커널에서 알파 데이터의 프레임간 변화 여부를 판단할 수 있다. At this time, the kernel of the GPU memory control framework can determine whether alpha data changes between frames.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

또한, 클라우드 스트리밍 서버(110)는 알파 데이터가 변화한 경우, 알파 데이터를 CPU 메모리로 전달하여 인코딩한다.Additionally, the cloud streaming server (110) transmits alpha data to CPU memory and encodes it when alpha data changes.

이 때, CPU 메모리는 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the alpha data and encode the alpha data change area.

또한, 클라우드 스트리밍 서버(110)는 CPU 메모리에서 인코딩된 알파 데이터와 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말(120-1~120-N)로 스트리밍한다. Additionally, the cloud streaming server (110) streams alpha data encoded in CPU memory and RGB data encoded in GPU memory to user terminals (120-1 to 120-N).

이 때, 인코딩된 RGB 데이터는 인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to encoded VIDEO ELEMENT STREAM data.

이 때, 사용자 단말(120-1~120-N)은 코딩된 알파 데이터와 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이할 수 있다.At this time, the user terminal (120-1 to 120-N) can decode the coded alpha data and the encoded RGB data, respectively, and apply the decoded alpha data to the decoded RGB data to display a screen with transparency applied to the user.

사용자 단말(120-1~120-N)은 클라우드 스트리밍 서버(110)에게 클라우드 스트리밍 서비스를 요청하고, 클라우드 스트리밍 서버(110)로부터 요청에 따른 실행화면을 수신하여 사용자에게 제공해줄 수 있다. 따라서, 사용자는 마치 요청된 서비스에 해당하는 동영상이나 어플리케이션이 사용자 단말(120-1~120-N)에서 실행되는 것처럼 느낄 수 있다.The user terminal (120-1 to 120-N) can request a cloud streaming service from the cloud streaming server (110) and receive an execution screen according to the request from the cloud streaming server (110) and provide it to the user. Accordingly, the user can feel as if a video or application corresponding to the requested service is running on the user terminal (120-1 to 120-N).

이 때, 사용자 단말(120-1~120-N)은 각각 통신망에 연결되어 클라우드 스트리밍 서버(110)와 통신 가능한 장치에 해당할 수 있다. 예를 들어, 사용자 단말(120-1~120-N)은 모든 정보통신기기, 멀티미디어 단말, 유선 단말, 고정형 단말, 이동통신단말기 및 IP(Internet Protocol) 단말 등의 다양한 단말에 해당할 수 있다. 또한, 사용자 단말(120-1~120-N)은 휴대폰, 휴대폰, PMP(Portable Multimedia Played), MID(Mobile Internet Device), 스마트폰(Smart Phone), 데스크톱(Desktop), 태블릿컴퓨터(Tablet PC), 노트북(Note book), 넷북(Net Book), 개인휴대용 정보단말(Personal Digital Assistant; PDA), 스마트 TV 및 정보통신 기기 등과 같은 다양한 이동통신 사양을 갖는 모바일(Mobile) 단말일 수도 있다.At this time, the user terminals (120-1 to 120-N) may correspond to devices that are each connected to a communication network and can communicate with the cloud streaming server (110). For example, the user terminals (120-1 to 120-N) may correspond to various terminals such as all information and communication devices, multimedia terminals, wired terminals, fixed terminals, mobile communication terminals, and IP (Internet Protocol) terminals. In addition, the user terminals (120-1 to 120-N) may be mobile terminals having various mobile communication specifications such as a mobile phone, a mobile phone, a PMP (Portable Multimedia Played), a MID (Mobile Internet Device), a smart phone, a desktop, a tablet computer (Tablet PC), a notebook, a net book, a personal digital assistant (PDA), a smart TV, and an information and communication device.

또한, 사용자 단말(120-1~120-N)은 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 사용자 단말(120-1~120-N)의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 제어부로 전달할 수 있다. 또한, 사용자 단말(120-1~120-N)의 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 사용자 단말(120-1~120-N)의 입력부는 사용자 단말(120-1~120-N)의 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 사용자 단말(120-1~120-N)의 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다. In addition, the user terminals (120-1 to 120-N) can input various information such as number and character information, set various functions, and transmit signals input in relation to the control of the functions of the user terminals (120-1 to 120-N) to the control unit through the input unit. In addition, the input unit of the user terminals (120-1 to 120-N) can be configured to include at least one of a keypad and a touchpad that generate an input signal according to the user's touch or manipulation. In this case, the input unit of the user terminals (120-1 to 120-N) is configured in the form of a single touch panel (or touch screen) together with the display unit of the user terminals (120-1 to 120-N) so as to perform input and display functions simultaneously. In addition to input devices such as a keyboard, keypad, mouse, joystick, etc., the input unit of the user terminals (120-1 to 120-N) can use any form of input means that may be developed in the future.

또한, 사용자 단말(120-1~120-N)의 표시부는 사용자 단말(120-1~120-N)의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 사용자 단말(120-1~120-N)의 표시부는 사용자 단말(120-1~120-N)의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 사용자 단말(120-1~120-N)의 표시부는 액정표시장치(LCD, Liquid Crystal Display), 초박막 액정표시장치(TFT-LCD, Thin Film Transistor LCD), 발광다이오드(LED, Light Emitting Diode), 유기 발광다이오드(OLED, Organic LED), 능동형 유기발광다이오드(AMOLED, Active Matrix OLED), 레티나 디스플레이(Retina Display), 플렉시블 디스플레이(Flexible display) 및 3차원(3 Dimension) 디스플레이 등으로 구성될 수 있다. 이 때, 사용자 단말(120-1~120-N)의 표시부가 터치스크린 형태로 구성된 경우, 사용자 단말(120-1~120-N)의 표시부는 사용자 단말(120-1~120-N)의 입력부의 기능 중 일부 또는 전부를 수행할 수 있다. In addition, the display unit of the user terminal (120-1 to 120-N) can display information about a series of operation states and operation results that occur during the performance of a function of the user terminal (120-1 to 120-N). In addition, the display unit of the user terminal (120-1 to 120-N) can display menus of the user terminal (120-1 to 120-N) and user data input by the user. Here, the display unit of the user terminal (120-1 to 120-N) can be composed of a liquid crystal display (LCD), a thin film transistor LCD (TFT-LCD), a light emitting diode (LED), an organic light emitting diode (OLED), an active matrix OLED (AMOLED), a retina display, a flexible display, a three-dimensional (3 Dimension) display, etc. At this time, if the display unit of the user terminal (120-1 to 120-N) is configured in the form of a touch screen, the display unit of the user terminal (120-1 to 120-N) can perform some or all of the functions of the input unit of the user terminal (120-1 to 120-N).

또한, 사용자 단말(120-1~120-N)의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 사용자 단말(120-1~120-N)의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 사용자 단말(120-1~120-N)의 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 사용자 단말(120-1~120-N)은 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 제어부의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다. In addition, the storage unit of the user terminal (120-1 to 120-N) is a device for storing data, and includes a main memory device and an auxiliary memory device, and can store application programs required for the functional operation of the user terminal (120-1 to 120-N). The storage unit of the user terminal (120-1 to 120-N) can largely include a program area and a data area. Here, when the user terminal (120-1 to 120-N) activates each function in response to a user's request, it executes the corresponding application programs under the control of the control unit to provide each function.

또한, 사용자 단말(120-1~120-N)의 통신부는 클라우드 스트리밍 서버(110)와 네트워크를 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 사용자 단말(120-1~120-N)의 통신부는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 사용자 단말(120-1~120-N)의 통신부는 무선통신 모듈을 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 사용자 단말(120-1~120-N)이 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 클라우드 스트리밍 서버(110)로 송수신할 수 있다. 즉 사용자 단말(120-1~120-N)은 무선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크를 통해 클라우드 스트리밍 서버(110)와 데이터를 송수신할 수 있다. In addition, the communication unit of the user terminal (120-1 to 120-N) may perform a function for transmitting and receiving data through a network with the cloud streaming server (110). Here, the communication unit of the user terminal (120-1 to 120-N) may include an RF transmitting means for up-converting and amplifying the frequency of a transmitted signal, an RF receiving means for low-noise amplifying a received signal and down-converting the frequency, etc. The communication unit of the user terminal (120-1 to 120-N) may include a wireless communication module. In addition, the wireless communication module is a configuration for transmitting and receiving data according to a wireless communication method, and when the user terminal (120-1 to 120-N) uses wireless communication, any one of a wireless network communication module, a wireless LAN communication module, and a wireless fan communication module may be used to transmit and receive data to and from the cloud streaming server (110). That is, user terminals (120-1 to 120-N) connect to a network using a wireless communication module and can transmit and receive data with a cloud streaming server (110) through the network.

또한, 사용자 단말(120-1~120-N)의 제어부는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다. 예를 들어, 제어부는 클라우드 스트리밍 서버(110)에 접속하는 과정 전반을 제어할 수 있다. 이 때, 사용자 단말(120-1~120-N)이 클라우드 스트리밍 서버(110)에 접속하는 경우, 사용자의 요청에 따라 동영상과 같은 컨텐츠나 어플리케이션이 실행되는 과정 전반을 제어할 수 있으며, 실행과 동시에 클라우드 스트리밍 서버(110)로 서비스 이용 요청이 전송되도록 제어할 수 있다. 이 때 사용자 인증에 필요한 사용자 단말(120-1~120-N)의 정보가 함께 전송되도록 제어할 수도 있다.In addition, the control unit of the user terminal (120-1 to 120-N) may be a process device that drives an operating system (OS) and each configuration. For example, the control unit may control the entire process of connecting to the cloud streaming server (110). At this time, when the user terminal (120-1 to 120-N) connects to the cloud streaming server (110), the entire process of executing content such as a video or an application according to the user's request may be controlled, and a service use request may be transmitted to the cloud streaming server (110) simultaneously with the execution. At this time, information of the user terminal (120-1 to 120-N) required for user authentication may also be controlled to be transmitted together.

네트워크(130)는 클라우드 스트리밍 서버(110) 및 사용자 단말(120-1~120-N) 사이에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다. 예를 들어, 네트워크(130)는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신 망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.The network (130) provides a path for transmitting data between the cloud streaming server (110) and the user terminals (120-1 to 120-N), and is a concept that encompasses both existing networks and networks that can be developed in the future. For example, the network (130) may be a wired or wireless local area network that provides communication between various information devices within a limited area, a mobile communication network that provides communication between mobiles and between mobiles and the outside of mobiles, a satellite communication network that provides communication between earth stations using satellites, or a wired or wireless communication network, or a combination of two or more of them. Meanwhile, the transmission method standard of the network is not limited to the existing transmission method standard, and may include all transmission method standards that will be developed in the future.

이와 같은 시스템을 통해 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.Such a system would allow us to address synchronization issues between the renderer process and the GPU process in the browser for video cloud streaming, while allowing transparency information to be processed on the GPU process to match the final screen composition.

또한, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, it is possible to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.Additionally, by minimizing the amount of data transferred between GPU memory and GPU memory for transparency processing, performance degradation due to data transfer between memories can be minimized.

도 2는 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법을 나타낸 동작 흐름도이다.FIG. 2 is a flowchart illustrating a method for providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법은, 클라우드 스트리밍 서버가, 렌더러 프로세스를 통해 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이한다(S210).Referring to FIG. 2, a method for providing a video cloud streaming service based on efficient transparency processing according to one embodiment of the present invention causes a cloud streaming server to display a current frame on a GPU memory using alpha data obtained through a renderer process (S210).

예를 들어, 비디오 클라우드 스트리밍 서버의 브라우저에서 렌더러 프로세스를 통해 획득되는 현재 프레임의 알파 데이터를 GPU 프로세스와 공유할 수 있다.For example, the alpha data of the current frame obtained through the renderer process in the browser of the video cloud streaming server can be shared with the GPU process.

이 때, 렌더러 프로세스는 브라우저에 출력될 화면을 구성하기 위한 렌더링 과정에 해당할 수 있다. 예를 들어, 웹 어플리케이션을 실행하는 웹 어플리케이션 서버로부터 어플리케이션 실행화면이 수신되면, 렌더러 프로세서가 수신된 어플리케이션 실행화면을 비디오 클라우드 스트리밍 서버의 브라우저에서 출력될 수 있도록 연산하여 화면을 구성할 수 있다.At this time, the renderer process may correspond to a rendering process for configuring a screen to be output to a browser. For example, when an application execution screen is received from a web application server that runs a web application, the renderer processor may compute the received application execution screen so that it can be output to a browser of a video cloud streaming server and configure the screen.

이 때, GPU 프로세스는, 그래픽 처리 유닛(Graphics Processing Unit; GPU)을 이용하여 사용자에게 보여지는 화면을 처리하기 위한 처리 과정에 상응하는 것으로, H.264/265와 같은 비디오 엘리먼트 스트림을 생성할 수 있다.At this time, the GPU process corresponds to a processing process for processing a screen shown to a user using a graphics processing unit (GPU), and can generate a video element stream such as H.264/265.

이 때, 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser of the cloud streaming server can be operated in NATIVE WINDOWS mode.

일반적으로 비디오 클라우드 스트리밍 서버에서 투명도 데이터를 알파 값을 획득하기 위해서는 브라우저를 OSR(Off Screen Rendering) 방식으로 구동해야 한다. 그러나, OSR 방식은 Native Windows 방식보다 성능이 낮기 때문에 비디오 클라우드 스트리밍 서비스를 원활하게 제공하기 위한 방식으로는 적합하지 않을 수 있다. Normally, in order to obtain alpha values for transparency data from a video cloud streaming server, the browser must be driven in the OSR (Off Screen Rendering) mode. However, the OSR mode has lower performance than the Native Windows mode, so it may not be suitable as a method for providing a smooth video cloud streaming service.

그러나, OSR 방식보다 고성능인 Native Windows 방식을 이용하는 경우, Windows/Linux 등의 각 운영체제에서 GPU 가속을 받기 위한 API들이 투명도를 지원하지 않으므로, 최종 화면을 구성할 때 투명도 데이터를 제공할 방법이 존재하지 않게 된다. 또한, 투명도 정보를 렌더러 프로세스 과정에서 획득하더라도 최종적으로 사용자에게 보여지는 화면은 GPU 프로세스를 통해 처리되므로 동기화 및 해상도 조절을 위해 추가 비용이 발생하는 등의 관련된 추가적인 문제들이 발생할 수 있다. However, when using the Native Windows method, which is higher performing than the OSR method, the APIs for receiving GPU acceleration in each operating system such as Windows/Linux do not support transparency, so there is no way to provide transparency data when composing the final screen. In addition, even if transparency information is acquired during the renderer process, the screen that is ultimately shown to the user is processed through the GPU process, so additional related problems such as additional costs for synchronization and resolution adjustment may occur.

이러한 문제점을 해결하기 위해, 본 발명에서는 비디오 클라우드 스트리밍 서비스 제공 시 브라우저를 Native Windows 방식으로 구동하면서도 GPU 프로세스 상에서 투명도 정보를 효율적으로 처리할 수 있는 방안을 제안하도록 한다.To solve these problems, the present invention proposes a method for efficiently processing transparency information on a GPU process while operating a browser in a native Windows manner when providing a video cloud streaming service.

이 때, GPU 메모리에서 프레임 버퍼(Frame Buffer)에 알파 데이터를 포함하는 현재 프레임의 RGBA 값을 쓸 수 있다.At this time, the RGBA values of the current frame including alpha data can be written to the Frame Buffer in GPU memory.

또한, 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법은, 클라우드 스트리밍 서버가, GPU 메모리 상에서 알파 데이터의 프레임간 변화 여부를 판단한다(S220).In addition, in a method for providing a video cloud streaming service based on efficient transparency processing according to one embodiment of the present invention, a cloud streaming server determines whether there is a change between frames of alpha data on the GPU memory (S220).

이 때, 사용자 단말을 통해 어플리케이션 실행화면을 보는 실제 사용자에게는 알파 데이터가 적용된 화면이 보이지 않지만, 알파 데이터를 사용자 단말로 전달할 수는 있다. 알파 데이터를 압축하여 사용자 단말로 전달하기 위해서는 GPU 메모리의 프레임 버퍼를 CPU 메모리로 가져와야 하는데, GPU 메모리에서 CPU 메모리로 데이터를 전달하는 비용이 비싸기 때문에 최소한의 데이터를 전달해야 할 필요가 있다.At this time, the screen with alpha data applied is not visible to the actual user who sees the application execution screen through the user terminal, but the alpha data can be transmitted to the user terminal. In order to compress alpha data and transmit it to the user terminal, the frame buffer of the GPU memory must be brought to the CPU memory, but since the cost of transmitting data from the GPU memory to the CPU memory is expensive, it is necessary to transmit the minimum amount of data.

따라서, 본 발명에서는 알파 데이터에 대한 프레임간 변화 여부를 판단하고, 변화가 발생하는 경우에만 알파 데이터를 전송함으로써 메모리 간 데이터 전송량을 최소화할 수 있다. Therefore, the present invention can minimize the amount of data transferred between memories by determining whether there is a change between frames for alpha data and transmitting alpha data only when a change occurs.

이 때, GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사할 수 있다. At this time, the frame buffer in GPU memory can be copied to the GPU memory control framework.

이 때, GPU 메모리 컨트롤 프레임워크의 커널에서 알파 데이터의 프레임간 변화 여부를 판단할 수 있다. At this time, the kernel of the GPU memory control framework can determine whether alpha data changes between frames.

예를 들어, 본 발명에서는 CUDA와 같은 GPU 메모리 컨트롤 프레임워크를 사용하여 변화가 있는 알파 데이터를 판단함으로써 CPU 메모리로 전달할 데이터를 선별할 수 있다.For example, in the present invention, data to be transmitted to CPU memory can be selected by determining alpha data with changes using a GPU memory control framework such as CUDA.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

즉, 이전 프레임을 처리하면서 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터 간 비교를 GPU 메모리 컨트롤 프레임워크 상에서 수행할 수 있다.That is, while processing the previous frame, a comparison between the alpha data of the previous frame stored in the GPU memory and the alpha data of the current frame copied from the frame buffer can be performed on the GPU memory control framework.

또한, 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법은, 클라우드 스트리밍 서버가, 알파 데이터가 변화한 경우에 알파 데이터를 CPU 메모리로 전달하여 인코딩한다(S230).In addition, in a method for providing a video cloud streaming service based on efficient transparency processing according to one embodiment of the present invention, a cloud streaming server transmits alpha data to CPU memory and encodes it when alpha data has changed (S230).

이 때, CPU 메모리는 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the alpha data and encode the alpha data change area.

즉, CPU 메모리에서도 알파 데이터를 인코딩하기 위해서 변화한 알파 영역을 연산할 수 있는데, 본 발명에 따르면 GPU 메모리로부터 전달된 알파 데이터를 대상으로 연산을 수행하여 알파 데이터 변화 영역을 빠르게 획득할 수 있다.That is, the changed alpha area can be calculated to encode alpha data even in CPU memory, and according to the present invention, the alpha data change area can be quickly obtained by performing a calculation on alpha data transferred from GPU memory.

또한, 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법은, 클라우드 스트리밍 서버가, CPU 메모리에서 인코딩된 알파 데이터와 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍한다(S240).In addition, in a method for providing a video cloud streaming service based on efficient transparency processing according to one embodiment of the present invention, a cloud streaming server streams alpha data encoded in CPU memory and RGB data encoded in GPU memory to a user terminal (S240).

이 때, 인코딩된 RGB 데이터는 인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to encoded VIDEO ELEMENT STREAM data.

예를 들어, 비디오 클라우드 스트리밍 서버는 GPU 프로세스를 통해 화면 변화 감지에 상응하게 전달된 텍스처(TEXTURE) 값을 기반으로 캡처 및 인코딩을 수행하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다. 즉, 사용자에게 보여지는 화면을 처리하는 GPU 프로세스에서는 웹 어플리케이션 서버를 통해 수신되는 어플리케이션 실행화면의 변화를 감지할 수 있다. 따라서, 화면 변화가 감지되는 경우, 변화된 화면에 해당하는 텍스처 값을 캡처 및 인코딩하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다.For example, a video cloud streaming server can generate video element stream data by performing capture and encoding based on a texture value transmitted corresponding to a screen change detection through a GPU process. That is, a GPU process that processes a screen shown to a user can detect a change in an application execution screen received through a web application server. Accordingly, when a screen change is detected, a texture value corresponding to the changed screen can be captured and encoded to generate video element stream data.

이 때, 사용자 단말은 인코딩된 알파 데이터와 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이할 수 있다.At this time, the user terminal can decode the encoded alpha data and the encoded RGB data respectively, and apply the decoded alpha data to the decoded RGB data to display a screen with transparency applied to the user.

예를 들어, 사용자 단말은, 인코딩된 알파 데이터와 인코딩된 비디오 엘리먼트 스트림 데이터를 수신한 뒤 각각의 데이터를 디코딩할 수 있다. 이 후, 디코딩된 비디오 엘리먼트 스트림 데이터와 알파 데이터를 조합하여 투명도 변화가 적용된 비디오 화면을 사용자에게 디스플레이할 수 있다.For example, the user terminal can receive encoded alpha data and encoded video element stream data, and then decode each data. Thereafter, the decoded video element stream data and alpha data can be combined to display a video screen with transparency changes applied to the user.

이 때, 사용자 단말은 클라우드 스트리밍 서버에게 클라우드 스트리밍 서비스를 요청하고, 클라우드 스트리밍 서버로부터 요청에 따른 실행화면을 수신하여 사용자에게 제공해줄 수 있다. 따라서, 사용자는 마치 요청된 서비스에 해당하는 동영상이나 어플리케이션이 사용자 단말에서 실행되는 것처럼 느낄 수 있다.At this time, the user terminal can request a cloud streaming service from the cloud streaming server, and receive an execution screen according to the request from the cloud streaming server and provide it to the user. Accordingly, the user can feel as if the video or application corresponding to the requested service is running on the user terminal.

이 때, 사용자 단말은 각각 통신망에 연결되어 클라우드 스트리밍 서버와 통신 가능한 장치에 해당할 수 있다. 예를 들어, 사용자 단말은 모든 정보통신기기, 멀티미디어 단말, 유선 단말, 고정형 단말, 이동통신단말기 및 IP(Internet Protocol) 단말 등의 다양한 단말에 해당할 수 있다. 또한, 사용자 단말은 휴대폰, 휴대폰, PMP(Portable Multimedia Played), MID(Mobile Internet Device), 스마트폰(Smart Phone), 데스크톱(Desktop), 태블릿컴퓨터(Tablet PC), 노트북(Note book), 넷북(Net Book), 개인휴대용 정보단말(Personal Digital Assistant; PDA), 스마트 TV 및 정보통신 기기 등과 같은 다양한 이동통신 사양을 갖는 모바일(Mobile) 단말일 수도 있다.At this time, the user terminal may correspond to a device that is connected to a communication network and can communicate with a cloud streaming server. For example, the user terminal may correspond to various terminals such as all information and communication devices, multimedia terminals, wired terminals, fixed terminals, mobile communication terminals, and IP (Internet Protocol) terminals. In addition, the user terminal may be a mobile terminal having various mobile communication specifications such as a mobile phone, a mobile phone, a PMP (Portable Multimedia Played), a MID (Mobile Internet Device), a smart phone, a desktop, a tablet computer (Tablet PC), a notebook, a netbook, a personal digital assistant (PDA), a smart TV, and an information and communication device.

또한, 사용자 단말은 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 사용자 단말의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 제어부로 전달할 수 있다. 또한, 사용자 단말의 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 사용자 단말의 입력부는 사용자 단말의 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 사용자 단말의 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다. In addition, the user terminal can input various information such as number and character information, and transmit signals input in relation to setting various functions and controlling the functions of the user terminal to the control unit through the input unit. In addition, the input unit of the user terminal can be configured to include at least one of a keypad and a touchpad that generate an input signal according to a user's touch or operation. In this case, the input unit of the user terminal is configured in the form of a single touch panel (or touch screen) together with the display unit of the user terminal so as to perform input and display functions simultaneously. In addition to input devices such as a keyboard, keypad, mouse, joystick, etc., the input unit of the user terminal can use any form of input means that may be developed in the future.

또한, 사용자 단말의 표시부는 사용자 단말의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 사용자 단말의 표시부는 사용자 단말의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 사용자 단말의 표시부는 액정표시장치(LCD, Liquid Crystal Display), 초박막 액정표시장치(TFT-LCD, Thin Film Transistor LCD), 발광다이오드(LED, Light Emitting Diode), 유기 발광다이오드(OLED, Organic LED), 능동형 유기발광다이오드(AMOLED, Active Matrix OLED), 레티나 디스플레이(Retina Display), 플렉시블 디스플레이(Flexible display) 및 3차원(3 Dimension) 디스플레이 등으로 구성될 수 있다. 이 때, 사용자 단말의 표시부가 터치스크린 형태로 구성된 경우, 사용자 단말(의 표시부는 사용자 단말의 입력부의 기능 중 일부 또는 전부를 수행할 수 있다. In addition, the display unit of the user terminal can display information about a series of operation states and operation results that occur during the performance of a function of the user terminal. In addition, the display unit of the user terminal can display a menu of the user terminal and user data input by the user. Here, the display unit of the user terminal can be composed of a liquid crystal display (LCD), a thin film transistor LCD (TFT-LCD), a light emitting diode (LED), an organic light emitting diode (OLED), an active matrix OLED (AMOLED), a retina display, a flexible display, a three-dimensional (3 Dimension) display, etc. In this case, when the display unit of the user terminal is configured in the form of a touch screen, the display unit of the user terminal can perform some or all of the functions of the input unit of the user terminal.

또한, 사용자 단말의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 사용자 단말의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 사용자 단말의 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 사용자 단말은 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 제어부의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다. In addition, the storage unit of the user terminal is a device for storing data, including a main memory device and an auxiliary memory device, and can store application programs required for the functional operation of the user terminal. The storage unit of the user terminal can largely include a program area and a data area. Here, when the user terminal activates each function in response to a user's request, it executes the corresponding application programs under the control of the control unit to provide each function.

또한, 사용자 단말의 통신부는 클라우드 스트리밍 서버와 네트워크를 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 사용자 단말의 통신부는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 사용자 단말의 통신부는 무선통신 모듈을 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 사용자 단말이 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 클라우드 스트리밍 서버로 송수신할 수 있다. 즉 사용자 단말은 무선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크를 통해 클라우드 스트리밍 서버와 데이터를 송수신할 수 있다. In addition, the communication unit of the user terminal may perform a function for transmitting and receiving data through the cloud streaming server and the network. Here, the communication unit of the user terminal may include an RF transmitting means for up-converting and amplifying the frequency of a transmitted signal, an RF receiving means for low-noise amplifying a received signal and down-converting the frequency, etc. The communication unit of the user terminal may include a wireless communication module. In addition, the wireless communication module is a configuration for transmitting and receiving data according to a wireless communication method, and when the user terminal uses wireless communication, data may be transmitted and received to and from the cloud streaming server using any one of a wireless network communication module, a wireless LAN communication module, and a wireless fan communication module. That is, the user terminal connects to the network using the wireless communication module, and can transmit and receive data with the cloud streaming server through the network.

또한, 사용자 단말의 제어부는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다. 예를 들어, 제어부는 클라우드 스트리밍 서버에 접속하는 과정 전반을 제어할 수 있다. 이 때, 사용자 단말이 클라우드 스트리밍 서버에 접속하는 경우, 사용자의 요청에 따라 동영상과 같은 컨텐츠나 어플리케이션이 실행되는 과정 전반을 제어할 수 있으며, 실행과 동시에 클라우드 스트리밍 서버로 서비스 이용 요청이 전송되도록 제어할 수 있다. 이 때 사용자 인증에 필요한 사용자 단말의 정보가 함께 전송되도록 제어할 수도 있다.In addition, the control unit of the user terminal may be a process device that operates an operating system (OS) and each configuration. For example, the control unit may control the entire process of connecting to a cloud streaming server. At this time, when the user terminal connects to the cloud streaming server, the entire process of executing content such as a video or an application according to the user's request may be controlled, and a service use request may be transmitted to the cloud streaming server at the same time as the execution. At this time, control may also be provided so that information of the user terminal required for user authentication is transmitted together.

이와 같은 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법을 통해 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.This method of providing a video cloud streaming service based on efficient transparency processing can solve the synchronization problem between the renderer process and the GPU process in the browser of video cloud streaming, while processing transparency information to match the final screen composition on the GPU process.

또한, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, it is possible to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.Additionally, by minimizing the amount of data transferred between GPU memory and GPU memory for transparency processing, performance degradation due to data transfer between memories can be minimized.

도 3은 본 발명에 따라 알파 데이터를 전송하는 과정의 일 예를 나타낸 도면이다. FIG. 3 is a diagram showing an example of a process for transmitting alpha data according to the present invention.

도 3을 참조하면, 클라우드 스트리밍 서버의 브라우저(300) 내 GPU 메모리(321)에서 프레임 버퍼로부터 복사된 현재 프레임 알파 데이터와 이전 프레임 알파 데이터를 비교하고, 알파 데이터가 변화된 경우에 프레임 전체 알파 데이터를 CPU 메모리(330)로 전달하는 과정을 나타내고 있다. Referring to FIG. 3, the process of comparing the current frame alpha data and the previous frame alpha data copied from the frame buffer in the GPU memory (321) of the browser (300) of the cloud streaming server and transferring the entire frame alpha data to the CPU memory (330) when the alpha data has changed is illustrated.

보다 상세하게 설명하면, 비디오 클라우드 스트리밍 서버의 브라우저(300)에서 렌더러 프로세스(310)를 통해 획득되는 현재 프레임의 알파 데이터를 GPU 프로세스(320)와 공유할 수 있다.To explain in more detail, alpha data of the current frame obtained through the renderer process (310) in the browser (300) of the video cloud streaming server can be shared with the GPU process (320).

이 때, 렌더러 프로세스(310)는 브라우저에 출력될 화면을 구성하기 위한 렌더링 과정에 해당할 수 있다. 예를 들어, 웹 어플리케이션을 실행하는 웹 어플리케이션 서버로부터 어플리케이션 실행화면이 수신되면, 렌더러 프로세서(310)가 수신된 어플리케이션 실행화면을 비디오 클라우드 스트리밍 서버의 브라우저에서 출력될 수 있도록 연산하여 화면을 구성할 수 있다.At this time, the renderer process (310) may correspond to a rendering process for configuring a screen to be output to a browser. For example, when an application execution screen is received from a web application server that executes a web application, the renderer processor (310) may compute the received application execution screen so that it can be output to a browser of a video cloud streaming server and configure the screen.

이 때, GPU 프로세스(320)는, 그래픽 처리 유닛(Graphics Processing Unit; GPU)을 이용하여 사용자에게 보여지는 화면을 처리하기 위한 처리 과정에 상응하는 것으로, H.264/265와 같은 비디오 엘리먼트 스트림을 생성할 수 있다.At this time, the GPU process (320) corresponds to a processing process for processing a screen shown to a user using a graphics processing unit (GPU), and can generate a video element stream such as H.264/265.

이 때, 브라우저(300)는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser (300) can be operated in a native window mode.

일반적으로 비디오 클라우드 스트리밍 서버에서 투명도 데이터를 알파 값을 획득하기 위해서는 브라우저를 OSR(Off Screen Rendering) 방식으로 구동해야 한다. 그러나, OSR 방식은 Native Windows 방식보다 성능이 낮기 때문에 비디오 클라우드 스트리밍 서비스를 원활하게 제공하기 위한 방식으로는 적합하지 않을 수 있다. Normally, in order to obtain alpha values for transparency data from a video cloud streaming server, the browser must be driven in the OSR (Off Screen Rendering) mode. However, the OSR mode has lower performance than the Native Windows mode, so it may not be suitable as a method for providing a smooth video cloud streaming service.

그러나, OSR 방식보다 고성능인 Native Windows 방식을 이용하는 경우, Windows/Linux 등의 각 운영체제에서 GPU 가속을 받기 위한 API들이 투명도를 지원하지 않으므로, 최종 화면을 구성할 때 투명도 데이터를 제공할 방법이 존재하지 않게 된다. 또한, 투명도 정보를 렌더러 프로세스 과정에서 획득하더라도 최종적으로 사용자에게 보여지는 화면은 GPU 프로세스를 통해 처리되므로 동기화 및 해상도 조절을 위해 추가 비용이 발생하는 등의 관련된 추가적인 문제들이 발생할 수 있다. However, when using the Native Windows method, which is higher performing than the OSR method, the APIs for receiving GPU acceleration in each operating system such as Windows/Linux do not support transparency, so there is no way to provide transparency data when composing the final screen. In addition, even if transparency information is acquired during the renderer process, the screen that is ultimately shown to the user is processed through the GPU process, so additional related problems such as additional costs for synchronization and resolution adjustment may occur.

이러한 문제점을 해결하기 위해, 본 발명에서는 비디오 클라우드 스트리밍 서비스 제공 시 브라우저를 Native Windows 방식으로 구동하면서도 GPU 프로세스 상에서 투명도 정보를 효율적으로 처리할 수 있는 방안을 제안하도록 한다.To solve these problems, the present invention proposes a method for efficiently processing transparency information on a GPU process while operating a browser in a native Windows manner when providing a video cloud streaming service.

다시 도 3을 참조하면, 렌더러 프로세스(310)로부터 현재 프레임의 알파 데이터를 공유받은 GPU 프로세스(320)는, GPU 메모리(321) 상에서 알파 데이터의 프레임간 변화 여부를 판단한다.Referring again to FIG. 3, the GPU process (320), which has received alpha data of the current frame from the renderer process (310), determines whether there is a change in the alpha data between frames on the GPU memory (321).

이 때, GPU 메모리(321) 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하고, GPU 메모리 컨트롤 프레임워크의 커널에서 알파 데이터의 프레임간 변화 여부를 판단할 수 있다.At this time, the frame buffer (FRAME BUFFER) in the GPU memory (321) can be copied to the GPU memory control framework, and the kernel of the GPU memory control framework can determine whether there is a change in alpha data between frames.

예를 들어, 도 3에 도시된 것처럼, CUDA와 같은 GPU 메모리 컨트롤 프레임워크를 사용하여 변화가 있는 알파 데이터를 판단함으로써 CPU 메모리로 전달할 데이터를 선별할 수 있다.For example, as illustrated in Fig. 3, a GPU memory control framework such as CUDA can be used to select data to be transmitted to CPU memory by determining alpha data that has changed.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

즉, 이전 프레임을 처리하면서 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터 간 비교를 GPU 메모리 컨트롤 프레임워크 상에서 수행할 수 있다.That is, while processing the previous frame, a comparison between the alpha data of the previous frame stored in the GPU memory and the alpha data of the current frame copied from the frame buffer can be performed on the GPU memory control framework.

이 후, 알파 데이터가 변화한 경우에 알파 데이터를 CPU 메모리(330)로 전달하여 인코딩한다After this, if the alpha data changes, the alpha data is transmitted to the CPU memory (330) and encoded.

즉, 프레임간 알파 데이터 변화가 발생하는 경우에만 GPU 메모리(321)에서 CPU 메모리(330)로 데이터를 전달하므로, 메모리 간 데이터 전송량을 감소시킬 수 있다. That is, data is transferred from the GPU memory (321) to the CPU memory (330) only when a change in alpha data occurs between frames, thereby reducing the amount of data transferred between memories.

이 후, CPU 메모리(330)로 전달되어 인코딩된 알파 데이터는 GPU 메모리(321)에서 인코딩된 RGB 데이터와 함께 사용자 단말로 스트리밍 될 수 있다. After this, the encoded alpha data is transmitted to the CPU memory (330) and can be streamed to the user terminal together with the encoded RGB data in the GPU memory (321).

도 4는 도 3에서 알파 데이터를 전송하는 과정을 보다 상세하게 나타낸 도면이다.Figure 4 is a drawing showing in more detail the process of transmitting alpha data in Figure 3.

도 4를 참조하면, 렌더러 프로세스로부터 현재 프레임의 알파 데이터를 공유받은 GPU 프로세스는, GPU 메모리(410) 상에서 알파 데이터의 프레임간 변화 여부를 판단한다.Referring to FIG. 4, the GPU process that has received alpha data of the current frame from the renderer process determines whether there is a change in alpha data between frames on the GPU memory (410).

이 때, GPU 메모리(410) 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하고, GPU 메모리 컨트롤 프레임워크의 커널에서 알파 데이터의 프레임간 변화 여부를 판단할 수 있다.At this time, the frame buffer (FRAME BUFFER) in the GPU memory (410) can be copied to the GPU memory control framework, and the kernel of the GPU memory control framework can determine whether there is a change in alpha data between frames.

예를 들어, 도 4에 도시된 것처럼, CUDA와 같은 GPU 메모리 컨트롤 프레임워크를 사용하여 변화가 있는 알파 데이터를 판단함으로써 CPU 메모리(420)로 전달할 데이터를 선별할 수 있다.For example, as illustrated in FIG. 4, data to be transmitted to CPU memory (420) can be selected by determining alpha data with changes using a GPU memory control framework such as CUDA.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리(410)에 저장된 이전 프레임의 알파 데이터(412)와 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터(411)를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data (412) of the previous frame stored in the GPU memory (410) with the alpha data (411) of the current frame copied from the frame buffer.

즉, 이전 프레임을 처리하면서 GPU 메모리에 저장된 이전 프레임의 알파 데이터(412)와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터(411) 간 비교를 GPU 메모리 컨트롤 프레임워크 상에서 수행할 수 있다.That is, while processing the previous frame, a comparison between the alpha data (412) of the previous frame stored in the GPU memory and the alpha data (411) of the current frame copied from the frame buffer can be performed on the GPU memory control framework.

이 후, 알파 데이터가 변화한 경우에 알파 데이터(430)를 CPU 메모리(420)로 전달하여 인코딩한다After this, if the alpha data has changed, the alpha data (430) is transmitted to the CPU memory (420) and encoded.

즉, 프레임간 알파 데이터 변화가 발생하는 경우에만 GPU 메모리(410)에서 CPU 메모리(420)로 데이터를 전달하므로, 메모리 간 데이터 전송량을 감소시킬 수 있다. That is, data is transferred from the GPU memory (410) to the CPU memory (420) only when a change in alpha data occurs between frames, thereby reducing the amount of data transferred between memories.

이 때, CPU 메모리(420)에서는 별도의 알파 압축 모듈(421)을 기반으로 알파 데이터를 조사하여(FIND CHANGE ALPHA) 알파 데이터 변화 영역을 인코딩(COMPRESS CHANGE ALPHA)할 수 있다. At this time, the CPU memory (420) can search for alpha data (FIND CHANGE ALPHA) based on a separate alpha compression module (421) and encode the alpha data change area (COMPRESS CHANGE ALPHA).

즉, CPU 메모리에서도 알파 데이터를 인코딩하기 위해서 변화한 알파 영역을 연산할 수 있는데, 본 발명에 따르면 GPU 메모리로부터 전달된 알파 데이터를 대상으로 연산을 수행하여 알파 데이터 변화 영역을 빠르게 획득할 수 있다.That is, the changed alpha area can be calculated to encode alpha data even in CPU memory, and according to the present invention, the alpha data change area can be quickly obtained by performing a calculation on alpha data transferred from GPU memory.

이와 같이 GPU 메모리(410)에서 CPU 메모리(420)로의 데이터 전송량을 현저히 감소시킴으로써 데이터 전송에 의해 성능 저하가 발생하는 것을 방지할 수 있다.In this way, by significantly reducing the amount of data transferred from the GPU memory (410) to the CPU memory (420), performance degradation due to data transfer can be prevented.

이 후, CPU 메모리(420)로 전달되어 인코딩된 알파 데이터는 GPU 메모리(410)에서 인코딩된 RGB 데이터와 함께 사용자 단말로 스트리밍 될 수 있다.After this, the encoded alpha data is transmitted to the CPU memory (420) and can be streamed to the user terminal together with the encoded RGB data in the GPU memory (410).

이와 같은 프로세스를 통해 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.This process allows us to address synchronization issues between the renderer process and the GPU process in the browser for video cloud streaming, while allowing transparency information to be processed on the GPU process to match the final screen composition.

또한, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, it is possible to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.Additionally, by minimizing the amount of data transferred between GPU memory and GPU memory for transparency processing, performance degradation due to data transfer between memories can be minimized.

도 5는 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법을 상세하게 나타낸 동작 흐름도이다.FIG. 5 is a detailed flowchart illustrating a method for providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention.

도 5를 참조하면, 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법은, 먼저 렌더러 프로세스를 통해 획득되는 현재 프레임의 알파 데이터를 사용하여 GPU 메모리 내 프레임 버퍼에 현재 프레임에 상응하는 RGBA 화면을 출력할 수 있다(S510).Referring to FIG. 5, a method for providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention can first output an RGBA screen corresponding to the current frame to a frame buffer in GPU memory using alpha data of the current frame obtained through a renderer process (S510).

예를 들어, 비디오 클라우드 스트리밍 서버의 브라우저에서 렌더러 프로세스를 통해 획득되는 현재 프레임의 알파 데이터를 GPU 프로세스와 공유할 수 있다.For example, the alpha data of the current frame obtained through the renderer process in the browser of the video cloud streaming server can be shared with the GPU process.

이 때, 렌더러 프로세스는 브라우저에 출력될 화면을 구성하기 위한 렌더링 과정에 해당할 수 있다. 예를 들어, 웹 어플리케이션을 실행하는 웹 어플리케이션 서버로부터 어플리케이션 실행화면이 수신되면, 렌더러 프로세서가 수신된 어플리케이션 실행화면을 비디오 클라우드 스트리밍 서버의 브라우저에서 출력될 수 있도록 연산하여 화면을 구성할 수 있다.At this time, the renderer process may correspond to a rendering process for configuring a screen to be output to a browser. For example, when an application execution screen is received from a web application server that runs a web application, the renderer processor may compute the received application execution screen so that it can be output to a browser of a video cloud streaming server and configure the screen.

이 때, GPU 프로세스는, 그래픽 처리 유닛(Graphics Processing Unit; GPU)을 이용하여 사용자에게 보여지는 화면을 처리하기 위한 처리 과정에 상응하는 것으로, H.264/265와 같은 비디오 엘리먼트 스트림을 생성할 수 있다. At this time, the GPU process corresponds to a processing process for processing a screen shown to a user using a graphics processing unit (GPU), and can generate a video element stream such as H.264/265.

이 때, 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser can be run in NATIVE WINDOWS mode.

이 때, GPU 메모리에서 프레임 버퍼(Frame Buffer)에 알파 데이터를 포함하는 현재 프레임의 RGBA 값을 쓸 수 있다.At this time, the RGBA values of the current frame including alpha data can be written to the Frame Buffer in GPU memory.

이 후, GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크(CUDA)로 복사할 수 있다(S520).After this, the frame buffer in the GPU memory can be copied to the GPU memory control framework (CUDA) (S520).

이 후, CUDA 커널에서 이전 프레임과 현재 프레임을 비교하여 알파 데이터의 변화 여부를 탐지할 수 있다(S530).After this, the CUDA kernel can detect whether there is a change in alpha data by comparing the previous frame with the current frame (S530).

이 때, 사용자 단말을 통해 어플리케이션 실행화면을 보는 실제 사용자에게는 알파 데이터가 적용된 화면이 보이지 않지만, 알파 데이터를 사용자 단말로 전달할 수는 있다. 알파 데이터를 압축하여 사용자 단말로 전달하기 위해서는 GPU 메모리의 프레임 버퍼를 CPU 메모리로 가져와야 하는데, GPU 메모리에서 CPU 메모리로 데이터를 전달하는 비용이 비싸기 때문에 최소한의 데이터를 전달해야 할 필요가 있다.At this time, the screen with alpha data applied is not visible to the actual user who sees the application execution screen through the user terminal, but the alpha data can be transmitted to the user terminal. In order to compress alpha data and transmit it to the user terminal, the frame buffer of the GPU memory must be brought to the CPU memory, but since the cost of transmitting data from the GPU memory to the CPU memory is expensive, it is necessary to transmit the minimum amount of data.

따라서, 본 발명에서는 알파 데이터에 대한 프레임간 변화 여부를 판단하고, 변화가 발생하는 경우에만 알파 데이터를 전송함으로써 메모리 간 데이터 전송량을 최소화할 수 있다.Therefore, the present invention can minimize the amount of data transferred between memories by determining whether there is a change between frames for alpha data and transmitting alpha data only when a change occurs.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터를 비교할 수 있다. At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in GPU memory with the alpha data of the current frame copied from the frame buffer.

즉, 이전 프레임을 처리하면서 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터 간 비교를 GPU 메모리 컨트롤 프레임워크 상에서 수행할 수 있다.That is, while processing the previous frame, a comparison between the alpha data of the previous frame stored in the GPU memory and the alpha data of the current frame copied from the frame buffer can be performed on the GPU memory control framework.

이 후, 알파 데이터의 변화가 탐지되었는지 판단하고(S535), 알파 데이터의 변화가 탐지되었으면, 변화가 탐지된 알파 데이터를 CPU 메모리로 전달하여 인코딩할 수 있다(S540).After this, it is determined whether a change in alpha data has been detected (S535), and if a change in alpha data has been detected, the alpha data in which the change has been detected can be transmitted to the CPU memory and encoded (S540).

이 때, CPU 메모리는 변화한 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the changed alpha data and encode the alpha data change area.

즉, CPU 메모리에서도 알파 데이터를 인코딩하기 위해서 변화한 알파 영역을 연산할 수 있는데, 본 발명에 따르면 GPU 메모리로부터 전달된 알파 데이터를 대상으로 연산을 수행하여 알파 데이터 변화 영역을 빠르게 획득할 수 있다.That is, the changed alpha area can be calculated to encode alpha data even in CPU memory, and according to the present invention, the alpha data change area can be quickly obtained by performing a calculation on alpha data transferred from GPU memory.

이 후, GPU 메모리에서는 RGB 데이터 인코딩을 수행할 수 있다(S550).After this, RGB data encoding can be performed in GPU memory (S550).

이 때, 인코딩된 RGB 데이터는 비디오 엘리먼트 스트림(Video Element Stream) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to video element stream data.

예를 들어, 비디오 클라우드 스트리밍 서버는 GPU 프로세스를 통해 화면 변화 감지에 상응하게 전달된 텍스처(TEXTURE) 값을 기반으로 캡처 및 인코딩을 수행하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다. 즉, 사용자에게 보여지는 화면을 처리하는 GPU 프로세스에서는 웹 어플리케이션 서버를 통해 수신되는 어플리케이션 실행화면의 변화를 감지할 수 있다. 따라서, 화면 변화가 감지되는 경우, 변화된 화면에 해당하는 텍스처 값을 캡처 및 인코딩하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다.For example, a video cloud streaming server can generate video element stream data by performing capture and encoding based on a texture value transmitted corresponding to a screen change detection through a GPU process. That is, a GPU process that processes a screen shown to a user can detect a change in an application execution screen received through a web application server. Accordingly, when a screen change is detected, a texture value corresponding to the changed screen can be captured and encoded to generate video element stream data.

이 후, 인코딩된 데이터를 사용자 단말로 스트리밍할 수 있다(S560).After this, the encoded data can be streamed to the user terminal (S560).

이 때, 사용자 단말은 인코딩된 알파 데이터와 인코딩된 RGB 데이터를 조합하여 투명도 변화가 적용된 화면을 디스플레이할 수 있다.At this time, the user terminal can display a screen with transparency changes applied by combining encoded alpha data and encoded RGB data.

예를 들어, 사용자 단말은, 인코딩된 알파 데이터와 인코딩된 비디오 엘리먼트 스트림 데이터를 수신한 뒤 각각의 데이터를 디코딩할 수 있다. 이 후, 디코딩된 비디오 엘리먼트 스트림 데이터와 알파 데이터를 조합하여 투명도 변화가 적용된 비디오 화면을 사용자에게 디스플레이할 수 있다.For example, the user terminal can receive encoded alpha data and encoded video element stream data, and then decode each data. Thereafter, the decoded video element stream data and alpha data can be combined to display a video screen with transparency changes applied to the user.

또한, 단계(S535)의 판단결과 알파 데이터의 변화가 탐지되지 않았으면, 알파 데이터에 대한 인코딩 과정은 생략하고, 단계(S550)을 통해 RGB 데이터 인코딩을 수행한 뒤(S550) 사용자 단말로 인코딩된 RGB 데이터만을 스트리밍할 수도 있다(S560).In addition, if no change in alpha data is detected as a result of the judgment in step (S535), the encoding process for alpha data may be omitted, and RGB data encoding may be performed through step (S550) (S550), and only the encoded RGB data may be streamed to the user terminal (S560).

이와 같은 방법을 통해 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.This method allows us to address synchronization issues between the renderer process and the GPU process in the browser for video cloud streaming, while allowing transparency information to be processed on the GPU process to match the final screen composition.

또한, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, it is possible to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.Additionally, by minimizing the amount of data transferred between GPU memory and GPU memory for transparency processing, performance degradation due to data transfer between memories can be minimized.

도 6은 본 발명의 일실시예에 따른 클라우드 스트리밍 서버를 나타낸 블록도이다.FIG. 6 is a block diagram illustrating a cloud streaming server according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일실시예에 따른 클라우드 스트리밍 서버는 통신부(610), 프로세서(620) 및 메모리(630)를 포함한다. Referring to FIG. 6, a cloud streaming server according to one embodiment of the present invention includes a communication unit (610), a processor (620), and a memory (630).

통신부(610)는 도 1에 도시된 네트워크와 같은 통신망을 통해 다수의 사용자 단말들과 관련된 정보를 송수신하는 역할을 한다. 특히, 본 발명의 일실시예에 따른 통신부(610)는 클라우드 스트리밍 서비스에 대한 요청을 사용자 단말로부터 수신하고, 사용자 단말이 요청한 클라우드 스트리밍 서비스에 상응하는 데이터 패킷을 사용자 단말로 제공할 수 있다.The communication unit (610) serves to transmit and receive information related to a plurality of user terminals through a communication network such as the network illustrated in Fig. 1. In particular, the communication unit (610) according to one embodiment of the present invention can receive a request for a cloud streaming service from a user terminal and provide a data packet corresponding to the cloud streaming service requested by the user terminal to the user terminal.

이 때, 네트워크는 클라우드 스트리밍 서버 및 사용자 단말 사이에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다. 예를 들어, 네트워크는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신 망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.At this time, the network provides a path for transmitting data between the cloud streaming server and the user terminal, and is a concept that encompasses both existing networks and networks that can be developed in the future. For example, the network may be a wired or wireless local area network that provides communication between various information devices within a limited area, a mobile communication network that provides communication between mobiles and between mobiles and the outside of mobiles, a satellite communication network that provides communication between earth stations using satellites, or a wired or wireless communication network, or a combination of two or more of them. Meanwhile, the transmission method standard of the network is not limited to the existing transmission method standard, and may include all transmission method standards to be developed in the future.

프로세서(620)는 렌더러 프로세스를 통해 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이한다.The processor (620) displays the current frame on the GPU memory using the alpha data obtained through the renderer process.

예를 들어, 비디오 클라우드 스트리밍 서버의 브라우저에서 렌더러 프로세스를 통해 획득되는 현재 프레임의 알파 데이터를 GPU 프로세스와 공유할 수 있다.For example, the alpha data of the current frame obtained through the renderer process in the browser of the video cloud streaming server can be shared with the GPU process.

이 때, 렌더러 프로세스는 브라우저에 출력될 화면을 구성하기 위한 렌더링 과정에 해당할 수 있다. 예를 들어, 웹 어플리케이션을 실행하는 웹 어플리케이션 서버로부터 어플리케이션 실행화면이 수신되면, 렌더러 프로세서가 수신된 어플리케이션 실행화면을 비디오 클라우드 스트리밍 서버의 브라우저에서 출력될 수 있도록 연산하여 화면을 구성할 수 있다.At this time, the renderer process may correspond to a rendering process for configuring a screen to be output to a browser. For example, when an application execution screen is received from a web application server that runs a web application, the renderer processor may compute the received application execution screen so that it can be output to a browser of a video cloud streaming server and configure the screen.

이 때, GPU 프로세스는, 그래픽 처리 유닛(Graphics Processing Unit; GPU)을 이용하여 사용자에게 보여지는 화면을 처리하기 위한 처리 과정에 상응하는 것으로, H.264/265와 같은 비디오 엘리먼트 스트림을 생성할 수 있다.At this time, the GPU process corresponds to a processing process for processing a screen shown to a user using a graphics processing unit (GPU), and can generate a video element stream such as H.264/265.

이 때, 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동될 수 있다.At this time, the browser of the cloud streaming server can be operated in NATIVE WINDOWS mode.

일반적으로 비디오 클라우드 스트리밍 서버에서 투명도 데이터를 알파 값을 획득하기 위해서는 브라우저를 OSR(Off Screen Rendering) 방식으로 구동해야 한다. 그러나, OSR 방식은 Native Windows 방식보다 성능이 낮기 때문에 비디오 클라우드 스트리밍 서비스를 원활하게 제공하기 위한 방식으로는 적합하지 않을 수 있다. Normally, in order to obtain alpha values for transparency data from a video cloud streaming server, the browser must be driven in the OSR (Off Screen Rendering) mode. However, the OSR mode has lower performance than the Native Windows mode, so it may not be suitable as a method for providing a smooth video cloud streaming service.

그러나, OSR 방식보다 고성능인 Native Windows 방식을 이용하는 경우, Windows/Linux 등의 각 운영체제에서 GPU 가속을 받기 위한 API들이 투명도를 지원하지 않으므로, 최종 화면을 구성할 때 투명도 데이터를 제공할 방법이 존재하지 않게 된다. 또한, 투명도 정보를 렌더러 프로세스 과정에서 획득하더라도 최종적으로 사용자에게 보여지는 화면은 GPU 프로세스를 통해 처리되므로 동기화 및 해상도 조절을 위해 추가 비용이 발생하는 등의 관련된 추가적인 문제들이 발생할 수 있다. However, when using the Native Windows method, which is higher performing than the OSR method, the APIs for receiving GPU acceleration in each operating system such as Windows/Linux do not support transparency, so there is no way to provide transparency data when composing the final screen. In addition, even if transparency information is acquired during the renderer process, the screen that is ultimately shown to the user is processed through the GPU process, so additional related problems such as additional costs for synchronization and resolution adjustment may occur.

이러한 문제점을 해결하기 위해, 본 발명에서는 비디오 클라우드 스트리밍 서비스 제공 시 브라우저를 Native Windows 방식으로 구동하면서도 GPU 프로세스 상에서 투명도 정보를 효율적으로 처리할 수 있는 방안을 제안하도록 한다.To solve these problems, the present invention proposes a method for efficiently processing transparency information on a GPU process while operating a browser in a native Windows manner when providing a video cloud streaming service.

이 때, GPU 메모리에서 프레임 버퍼(Frame Buffer)에 알파 데이터를 포함하는 현재 프레임의 RGBA 값을 쓸 수 있다.At this time, the RGBA values of the current frame including alpha data can be written to the Frame Buffer in GPU memory.

또한, 프로세서(620)는 GPU 메모리 상에서 알파 데이터의 프레임간 변화 여부를 판단한다.Additionally, the processor (620) determines whether there is a change in alpha data between frames on the GPU memory.

이 때, 사용자 단말을 통해 어플리케이션 실행화면을 보는 실제 사용자에게는 알파 데이터가 적용된 화면이 보이지 않지만, 알파 데이터를 사용자 단말로 전달할 수는 있다. 알파 데이터를 압축하여 사용자 단말로 전달하기 위해서는 GPU 메모리의 프레임 버퍼를 CPU 메모리로 가져와야 하는데, GPU 메모리에서 CPU 메모리로 데이터를 전달하는 비용이 비싸기 때문에 최소한의 데이터를 전달해야 할 필요가 있다.At this time, the screen with alpha data applied is not visible to the actual user who sees the application execution screen through the user terminal, but the alpha data can be transmitted to the user terminal. In order to compress alpha data and transmit it to the user terminal, the frame buffer of the GPU memory must be brought to the CPU memory, but since the cost of transmitting data from the GPU memory to the CPU memory is expensive, it is necessary to transmit the minimum amount of data.

따라서, 본 발명에서는 알파 데이터에 대한 프레임간 변화 여부를 판단하고, 변화가 발생하는 경우에만 알파 데이터를 전송함으로써 메모리 간 데이터 전송량을 최소화할 수 있다. Therefore, the present invention can minimize the amount of data transferred between memories by determining whether there is a change between frames for alpha data and transmitting alpha data only when a change occurs.

이 때, GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사할 수 있다. At this time, the frame buffer in GPU memory can be copied to the GPU memory control framework.

이 때, GPU 메모리 컨트롤 프레임워크의 커널에서 알파 데이터의 프레임간 변화 여부를 판단할 수 있다. At this time, the kernel of the GPU memory control framework can determine whether alpha data changes between frames.

예를 들어, 본 발명에서는 CUDA와 같은 GPU 메모리 컨트롤 프레임워크를 사용하여 변화가 있는 알파 데이터를 판단함으로써 CPU 메모리로 전달할 데이터를 선별할 수 있다.For example, in the present invention, a GPU memory control framework such as CUDA can be used to select data to be transmitted to CPU memory by determining alpha data that has changed.

이 때, GPU 메모리 컨트롤 프레임워크는 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교할 수 있다.At this time, the GPU memory control framework can compare the alpha data of the previous frame stored in the GPU memory with the alpha data of the current frame copied from the frame buffer.

즉, 이전 프레임을 처리하면서 GPU 메모리에 저장된 이전 프레임의 알파 데이터와 프레임 버퍼로부터 복사된 현재 프레임의 알파 데이터 간 비교를 GPU 메모리 컨트롤 프레임워크 상에서 수행할 수 있다.That is, while processing the previous frame, a comparison between the alpha data of the previous frame stored in the GPU memory and the alpha data of the current frame copied from the frame buffer can be performed on the GPU memory control framework.

또한, 프로세서(620)는 알파 데이터가 변화한 경우에 알파 데이터를 CPU 메모리로 전달하여 인코딩한다.Additionally, the processor (620) encodes the alpha data by transmitting it to the CPU memory when the alpha data has changed.

이 때, CPU 메모리는 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩할 수 있다.At this time, the CPU memory can examine the alpha data and encode the alpha data change area.

즉, CPU 메모리에서도 알파 데이터를 인코딩하기 위해서 변화한 알파 영역을 연산할 수 있는데, 본 발명에 따르면 GPU 메모리로부터 전달된 알파 데이터를 대상으로 연산을 수행하여 알파 데이터 변화 영역을 빠르게 획득할 수 있다.That is, the changed alpha area can be calculated to encode alpha data even in CPU memory, and according to the present invention, the alpha data change area can be quickly obtained by performing a calculation on alpha data transferred from GPU memory.

또한, 프로세서(620)는 CPU 메모리에서 인코딩된 알파 데이터와 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍한다.Additionally, the processor (620) streams alpha data encoded in CPU memory and RGB data encoded in GPU memory to the user terminal.

이 때, 인코딩된 RGB 데이터는 인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응할 수 있다.At this time, the encoded RGB data can correspond to encoded VIDEO ELEMENT STREAM data.

예를 들어, 비디오 클라우드 스트리밍 서버는 GPU 프로세스를 통해 화면 변화 감지에 상응하게 전달된 텍스처(TEXTURE) 값을 기반으로 캡처 및 인코딩을 수행하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다. 즉, 사용자에게 보여지는 화면을 처리하는 GPU 프로세스에서는 웹 어플리케이션 서버를 통해 수신되는 어플리케이션 실행화면의 변화를 감지할 수 있다. 따라서, 화면 변화가 감지되는 경우, 변화된 화면에 해당하는 텍스처 값을 캡처 및 인코딩하여 비디오 엘리먼트 스트림 데이터를 생성할 수 있다.For example, a video cloud streaming server can generate video element stream data by performing capture and encoding based on a texture value transmitted corresponding to a screen change detection through a GPU process. That is, a GPU process that processes a screen shown to a user can detect a change in an application execution screen received through a web application server. Accordingly, when a screen change is detected, a texture value corresponding to the changed screen can be captured and encoded to generate video element stream data.

이 때, 사용자 단말은 인코딩된 알파 데이터와 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이할 수 있다. At this time, the user terminal can decode the encoded alpha data and the encoded RGB data respectively, and apply the decoded alpha data to the decoded RGB data to display a screen with transparency applied to the user.

이 때, 사용자 단말은 클라우드 스트리밍 서버에게 클라우드 스트리밍 서비스를 요청하고, 클라우드 스트리밍 서버로부터 요청에 따른 실행화면을 수신하여 사용자에게 제공해줄 수 있다. 따라서, 사용자는 마치 요청된 서비스에 해당하는 동영상이나 어플리케이션이 사용자 단말에서 실행되는 것처럼 느낄 수 있다.At this time, the user terminal can request a cloud streaming service from the cloud streaming server, and receive an execution screen according to the request from the cloud streaming server and provide it to the user. Accordingly, the user can feel as if the video or application corresponding to the requested service is running on the user terminal.

이 때, 사용자 단말은 각각 통신망에 연결되어 클라우드 스트리밍 서버와 통신 가능한 장치에 해당할 수 있다. 예를 들어, 사용자 단말은 모든 정보통신기기, 멀티미디어 단말, 유선 단말, 고정형 단말, 이동통신단말기 및 IP(Internet Protocol) 단말 등의 다양한 단말에 해당할 수 있다. 또한, 사용자 단말은 휴대폰, 휴대폰, PMP(Portable Multimedia Played), MID(Mobile Internet Device), 스마트폰(Smart Phone), 데스크톱(Desktop), 태블릿컴퓨터(Tablet PC), 노트북(Note book), 넷북(Net Book), 개인휴대용 정보단말(Personal Digital Assistant; PDA), 스마트 TV 및 정보통신 기기 등과 같은 다양한 이동통신 사양을 갖는 모바일(Mobile) 단말일 수도 있다.At this time, the user terminal may correspond to a device that is connected to a communication network and can communicate with a cloud streaming server. For example, the user terminal may correspond to various terminals such as all information and communication devices, multimedia terminals, wired terminals, fixed terminals, mobile communication terminals, and IP (Internet Protocol) terminals. In addition, the user terminal may be a mobile terminal having various mobile communication specifications such as a mobile phone, a mobile phone, a PMP (Portable Multimedia Played), a MID (Mobile Internet Device), a smart phone, a desktop, a tablet computer (Tablet PC), a notebook, a netbook, a personal digital assistant (PDA), a smart TV, and an information and communication device.

또한, 사용자 단말은 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 사용자 단말의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 제어부로 전달할 수 있다. 또한, 사용자 단말의 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 사용자 단말의 입력부는 사용자 단말의 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 사용자 단말의 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다. In addition, the user terminal can input various information such as number and character information, and transmit signals input in relation to setting various functions and controlling the functions of the user terminal to the control unit through the input unit. In addition, the input unit of the user terminal can be configured to include at least one of a keypad and a touchpad that generate an input signal according to a user's touch or operation. In this case, the input unit of the user terminal is configured in the form of a single touch panel (or touch screen) together with the display unit of the user terminal so as to perform input and display functions simultaneously. In addition to input devices such as a keyboard, keypad, mouse, joystick, etc., the input unit of the user terminal can use any form of input means that may be developed in the future.

또한, 사용자 단말의 표시부는 사용자 단말의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 사용자 단말의 표시부는 사용자 단말의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 사용자 단말의 표시부는 액정표시장치(LCD, Liquid Crystal Display), 초박막 액정표시장치(TFT-LCD, Thin Film Transistor LCD), 발광다이오드(LED, Light Emitting Diode), 유기 발광다이오드(OLED, Organic LED), 능동형 유기발광다이오드(AMOLED, Active Matrix OLED), 레티나 디스플레이(Retina Display), 플렉시블 디스플레이(Flexible display) 및 3차원(3 Dimension) 디스플레이 등으로 구성될 수 있다. 이 때, 사용자 단말의 표시부가 터치스크린 형태로 구성된 경우, 사용자 단말(의 표시부는 사용자 단말의 입력부의 기능 중 일부 또는 전부를 수행할 수 있다. In addition, the display unit of the user terminal can display information about a series of operation states and operation results that occur during the performance of a function of the user terminal. In addition, the display unit of the user terminal can display a menu of the user terminal and user data input by the user. Here, the display unit of the user terminal can be composed of a liquid crystal display (LCD), a thin film transistor LCD (TFT-LCD), a light emitting diode (LED), an organic light emitting diode (OLED), an active matrix OLED (AMOLED), a retina display, a flexible display, a three-dimensional (3 Dimension) display, etc. In this case, when the display unit of the user terminal is configured in the form of a touch screen, the display unit of the user terminal can perform some or all of the functions of the input unit of the user terminal.

또한, 사용자 단말의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 사용자 단말의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 사용자 단말의 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 사용자 단말은 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 제어부의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다. In addition, the storage unit of the user terminal is a device for storing data, including a main memory device and an auxiliary memory device, and can store application programs required for the functional operation of the user terminal. The storage unit of the user terminal can largely include a program area and a data area. Here, when the user terminal activates each function in response to a user's request, it executes the corresponding application programs under the control of the control unit to provide each function.

또한, 사용자 단말의 통신부는 클라우드 스트리밍 서버와 네트워크를 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 사용자 단말의 통신부는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 사용자 단말의 통신부는 무선통신 모듈을 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 사용자 단말이 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 클라우드 스트리밍 서버로 송수신할 수 있다. 즉 사용자 단말은 무선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크를 통해 클라우드 스트리밍 서버와 데이터를 송수신할 수 있다. In addition, the communication unit of the user terminal may perform a function for transmitting and receiving data through the cloud streaming server and the network. Here, the communication unit of the user terminal may include an RF transmitting means for up-converting and amplifying the frequency of a transmitted signal, an RF receiving means for low-noise amplifying a received signal and down-converting the frequency, etc. The communication unit of the user terminal may include a wireless communication module. In addition, the wireless communication module is a configuration for transmitting and receiving data according to a wireless communication method, and when the user terminal uses wireless communication, data may be transmitted and received to and from the cloud streaming server using any one of a wireless network communication module, a wireless LAN communication module, and a wireless fan communication module. That is, the user terminal connects to the network using the wireless communication module, and can transmit and receive data with the cloud streaming server through the network.

또한, 사용자 단말의 제어부는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다. 예를 들어, 제어부는 클라우드 스트리밍 서버에 접속하는 과정 전반을 제어할 수 있다. 이 때, 사용자 단말이 클라우드 스트리밍 서버에 접속하는 경우, 사용자의 요청에 따라 동영상과 같은 컨텐츠나 어플리케이션이 실행되는 과정 전반을 제어할 수 있으며, 실행과 동시에 클라우드 스트리밍 서버로 서비스 이용 요청이 전송되도록 제어할 수 있다. 이 때 사용자 인증에 필요한 사용자 단말의 정보가 함께 전송되도록 제어할 수도 있다.In addition, the control unit of the user terminal may be a process device that operates an operating system (OS) and each configuration. For example, the control unit may control the entire process of connecting to a cloud streaming server. At this time, when the user terminal connects to the cloud streaming server, the entire process of executing content such as a video or an application according to the user's request may be controlled, and a service use request may be transmitted to the cloud streaming server at the same time as the execution. At this time, the user terminal information required for user authentication may also be controlled to be transmitted together.

메모리(630)는 알파 데이터를 저장한다. Memory (630) stores alpha data.

또한, 메모리(630)는 상술한 바와 같이 본 발명의 일실시예에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 과정에서 발생하는 다양한 정보를 저장한다. In addition, the memory (630) stores various information generated in the process of providing a video cloud streaming service based on efficient transparency processing according to an embodiment of the present invention as described above.

실시예에 따라, 메모리(630)는 클라우드 스트리밍 서버와 독립적으로 구성되어 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공을 위한 기능을 지원할 수 있다. 이 때, 메모리(630)는 별도의 대용량 스토리지로 동작할 수 있고, 동작 수행을 위한 제어 기능을 포함할 수 있다.According to an embodiment, the memory (630) may be configured independently from the cloud streaming server to support a function for providing a video cloud streaming service based on efficient transparency processing. In this case, the memory (630) may operate as a separate large-capacity storage and may include a control function for performing the operation.

또한, 상술한 바와 같이 구성되는 클라우드 스트리밍 서버는 하나 이상의 서버로 구현될 수 있다. Additionally, the cloud streaming server configured as described above can be implemented with one or more servers.

한편, 클라우드 스트리밍 서버는 메모리가 탑재되어 그 장치 내에서 정보를 저장할 수 있다. 일 구현예의 경우, 메모리는 컴퓨터로 판독 가능한 매체이다. 일 구현 예에서, 메모리는 휘발성 메모리 유닛일 수 있으며, 다른 구현예의 경우, 메모리는 비휘발성 메모리 유닛을 수도 있다. 일 구현예의 경우, 저장장치는 컴퓨터로 판독 가능한 매체이다. 다양한 서로 다른 구현 예에서, 저장장치는 예컨대 하드디스크 장치, 광학디스크 장치, 혹은 어떤 다른 대용량 저장장치를 포함할 수도 있다.Meanwhile, the cloud streaming server is equipped with a memory to store information within the device. In one implementation, the memory is a computer-readable medium. In one implementation, the memory may be a volatile memory unit, and in another implementation, the memory may be a non-volatile memory unit. In one implementation, the storage device is a computer-readable medium. In various different implementations, the storage device may include, for example, a hard disk device, an optical disk device, or any other mass storage device.

이와 같은 클라우드 스트리밍 서버를 통해 비디오 클라우드 스트리밍의 브라우저에서 랜더러 프로세스와 GPU 프로세스 간의 동기화 문제를 해결하면서 GPU 프로세스 상에서 최종 화면 구성에 맞도록 투명도 정보를 처리할 수 있다.Such cloud streaming servers can solve the synchronization issue between the renderer process and the GPU process in the browser of video cloud streaming, while processing transparency information on the GPU process to match the final screen composition.

또한, 비디오 클라우드 스트리밍 시 고성능 방식인 Native Windows 방식을 사용하면서 동시에 투명도 정보인 알파 값을 효율적으로 획득할 수 있다.In addition, it is possible to efficiently obtain alpha values, which are transparency information, while using the Native Windows method, which is a high-performance method for video cloud streaming.

또한, 투명도 처리를 위한 GPU 메모리와 GPU 메모리 간 데이터 전송량을 최소화함으로써 메모리 간 데이터 전송에 의한 성능 저하를 최소화할 수 있다.Additionally, by minimizing the amount of data transferred between GPU memory and GPU memory for transparency processing, performance degradation due to data transfer between memories can be minimized.

본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 처리 시스템의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다.The functional operations and subject matter described in this specification may be implemented as digital electronic circuits, or may be implemented as computer software, firmware, or hardware including the structures disclosed herein and their structural equivalents, or a combination of one or more of these. The subject matter described in this specification may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible program storage medium for execution by or to control the operation of a processing system.

컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter affecting a machine-readable radio signal, or a combination of one or more of these.

본 명세서에서 '시스템'이나 '장치'라 함은 예컨대 프로그래머블 프로세서, 컴퓨터 혹은 다중 프로세서나 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 기구, 장치 및 기계를 포괄한다. 처리 시스템은, 하드웨어에 부가하여, 예컨대 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 혹은 이들 중 하나 이상의 조합 등 요청 시 컴퓨터 프로그램에 대한 실행 환경을 형성하는 코드를 포함할 수 있다.In this specification, the term "system" or "device" encompasses all mechanisms, devices and machines for processing data, including, for example, a programmable processor, a computer or a multiprocessor or a computer. In addition to hardware, a processing system may include code that forms an execution environment for a computer program upon request, such as code constituting processor firmware, a protocol stack, a database management system, an operating system or a combination of one or more of these.

컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.A computer program (also known as a program, software, software application, script, or code) may be written in any form of a programming language, including compiled or interpreted languages, a priori or procedural languages, and may be deployed in any form, including as a standalone program, a module, a component, a subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in a single file provided to a requested program, in multiple interacting files (e.g., a file storing one or more modules, subprograms, or portions of code), or in part of a file containing other programs or data (e.g., one or more scripts stored in a markup language document). A computer program may be deployed to be executed on a single computer or on multiple computers located at a single site or distributed across multiple sites and interconnected by a communications network.

한편, 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체는, 예컨대 EPROM, EEPROM 및 플래시메모리 장치와 같은 반도체 메모리 장치, 예컨대 내부 하드디스크나 외장형 디스크와 같은 자기 디스크, 자기광학 디스크 및 CD-ROM과 DVD-ROM 디스크를 포함하여 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치를 포함할 수 있다. 프로세서와 메모리는 특수 목적의 논리 회로에 의해 보충되거나, 그것에 통합될 수 있다.Meanwhile, a computer-readable medium suitable for storing computer program instructions and data may include all forms of non-volatile memory, media and memory devices, including semiconductor memory devices such as EPROM, EEPROM and flash memory devices, magnetic disks such as internal hard disks or external disks, magneto-optical disks and CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, special purpose logic circuitry.

본 명세서에서 설명한 주제의 구현물은 예컨대 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 예컨대 어플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 예컨대 사용자가 본 명세서에서 설명한 주제의 구현물과 상호 작용할 수 있는 웹 브라우저나 그래픽 유저 인터페이스를 갖는 사용자 컴퓨터와 같은 프론트엔드 컴포넌트 혹은 그러한 백엔드, 미들웨어 혹은 프론트엔드 컴포넌트의 하나 이상의 모든 조합을 포함하는 연산 시스템에서 구현될 수도 있다. 시스템의 컴포넌트는 예컨대 통신 네트워크와 같은 디지털 데이터 통신의 어떠한 형태나 매체에 의해서도 상호 접속 가능하다.Implementations of the subject matter described herein may be implemented in a computing system that includes a back-end component, such as a data server, a middleware component, such as an application server, a front-end component, such as a user computer having a web browser or a graphical user interface via which a user can interact with implementations of the subject matter described herein, or any combination of one or more of such back-end, middleware or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, such as a communications network.

본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 마찬가지로, 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.While this specification contains details of a number of specific implementations, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features that may be unique to particular embodiments of a particular invention. Likewise, particular features described herein in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments, either individually or in any suitable subcombination. Furthermore, although features may operate in a particular combination and may initially be described as being claimed as such, one or more features from a claimed combination may in some cases be excluded from that combination, and the claimed combination may be modified into a subcombination or variation of a subcombination.

또한, 본 명세서에서는 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다Also, although this specification depicts operations in the drawings in a particular order, this should not be understood to imply that such operations must be performed in the particular order depicted or in any sequential order to achieve desirable results, or that all depicted operations must be performed. In certain instances, multitasking and parallel processing may be advantageous. Also, the separation of the various system components of the embodiments described above should not be understood to require such separation in all embodiments, and it should be understood that the program components and systems described may generally be integrated together in a single software product or packaged into multiple software products.

이와 같이, 본 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하려는 의도가 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.As such, this specification is not intended to limit the invention to the specific terms presented. Accordingly, although the invention has been described in detail with reference to the above-described examples, those skilled in the art can make modifications, changes, and variations to the examples without departing from the scope of the invention. The scope of the invention is indicated by the claims described below rather than the above-described detailed description, and all changes or modifications derived from the meaning and scope of the claims and their equivalents should be interpreted as being included in the scope of the invention.

이상에서와 같이 본 발명에 따른 효율적 투명도 처리 기반의 비디오 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.As described above, the method for providing a video cloud streaming service based on efficient transparency processing according to the present invention and the device therefor are not limited to the configurations and methods of the embodiments described above, but the embodiments may be configured by selectively combining all or part of the embodiments so that various modifications can be made.

본 발명에 의하면 클라우드 스트리밍 서버가, 렌더러 프로세스에서 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하고, GPU 메모리 상에서 알파 데이터의 프레임간 변화 여부를 판단하고, 알파 데이터가 변화한 경우에 알파 데이터를 CPU 메모리로 전달하여 인코딩하고, CPU 메모리에서 인코딩된 알파 데이터와 상기 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍할 수 있다. 이에 따라, 메모리 간 데이터 전송량을 최소화하여 데이터 전송에 의한 서비스 성능 저하를 방지할 수 있다.According to the present invention, a cloud streaming server can display a current frame on a GPU memory using alpha data acquired from a renderer process, determine whether there is a change in alpha data between frames on the GPU memory, encode the alpha data by transferring it to a CPU memory if the alpha data has changed, and stream the alpha data encoded in the CPU memory and the RGB data encoded in the GPU memory to a user terminal. Accordingly, the amount of data transferred between memories can be minimized, thereby preventing degradation of service performance due to data transfer.

110: 클라우드 스트리밍 서버
120-1~120-N: 사용자 단말
130: 네트워크
300: 브라우저
310: 렌더러 프로세스
320: GPU 프로세스
321, 410: GPU 메모리
330, 420: CPU 메모리
411: 현재 프레임 알파 데이터
412: 이전 프레임 알파 데이터
430: 프레임 전체 알파 데이터
610: 통신부
620: 프로세서
630: 메모리
110: Cloud Streaming Server
120-1~120-N: User terminal
130: Network
300: Browser
310: Renderer Process
320: GPU Process
321, 410: GPU Memory
330, 420: CPU Memory
411: Current frame alpha data
412: Previous frame alpha data
430: Full frame alpha data
610: Communications Department
620: Processor
630: Memory

Claims (10)

클라우드 스트리밍 서버가,
렌더러 프로세스를 통해 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하는 단계;
상기 GPU 메모리 상에서 상기 알파 데이터의 프레임간 변화 여부를 판단하는 단계;
상기 알파 데이터가 변화한 경우, 상기 알파 데이터를 CPU 메모리로 전달하여 인코딩하는 단계; 및
상기 CPU 메모리에서 인코딩된 알파 데이터와 상기 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍하는 단계
를 포함하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
Cloud streaming server,
A step of displaying the current frame on the GPU memory using the alpha data acquired through the renderer process;
A step of determining whether there is a change between frames in the alpha data on the GPU memory;
When the above alpha data has changed, a step of transmitting the alpha data to the CPU memory and encoding it; and
A step of streaming alpha data encoded in the CPU memory and RGB data encoded in the GPU memory to a user terminal.
A method for providing a video cloud streaming service, characterized by including:
청구항 1에 있어서,
상기 판단하는 단계는
상기 GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하는 단계를 더 포함하고,
상기 GPU 메모리 컨트롤 프레임워크의 커널에서 상기 알파 데이터의 프레임간 변화 여부를 판단하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 1,
The above judging steps are
Further comprising a step of copying the frame buffer (FRAME BUFFER) in the GPU memory to the GPU memory control framework,
A method for providing a video cloud streaming service, characterized in that the kernel of the GPU memory control framework determines whether there is a change between frames in the alpha data.
청구항 2에 있어서,
상기 GPU 메모리 컨트롤 프레임워크는
GPU 메모리에 저장된 이전 프레임의 알파 데이터와 상기 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 2,
The above GPU memory control framework
A method for providing a video cloud streaming service, characterized by comparing alpha data of a previous frame stored in GPU memory with alpha data of a current frame copied from the frame buffer.
청구항 3에 있어서,
상기 CPU 메모리는
상기 알파 데이터를 조사하여 알파 데이터 변화 영역을 인코딩하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 3,
The above CPU memory is
A method for providing a video cloud streaming service, characterized by encoding an alpha data change area by examining the above alpha data.
청구항 1에 있어서,
상기 인코딩된 RGB 데이터는
인코딩된 비디오 엘리먼트 스트림(VIDEO ELEMENT STREAM) 데이터에 상응하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 1,
The above encoded RGB data is
A method for providing a video cloud streaming service, characterized by corresponding encoded video element stream data.
청구항 1에 있어서,
상기 클라우드 스트리밍 서버의 브라우저는 네이티브 윈도우(NATIVE WINDOWS) 방식으로 구동되는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 1,
A method for providing a video cloud streaming service, characterized in that the browser of the above cloud streaming server is operated in a native Windows manner.
청구항 1에 있어서,
상기 사용자 단말은
상기 인코딩된 알파 데이터와 상기 인코딩된 RGB 데이터를 각각 디코딩하고, 디코딩된 RGB 데이터에 디코딩된 알파 데이터를 적용하여 사용자에게 투명도가 적용된 화면을 디스플레이하는 것을 특징으로 하는 비디오 클라우드 스트리밍 서비스 제공 방법.
In claim 1,
The above user terminal
A method for providing a video cloud streaming service, characterized in that the encoded alpha data and the encoded RGB data are each decoded, and the decoded alpha data is applied to the decoded RGB data to display a screen with transparency applied to the user.
렌더러 프로세스에서 획득된 알파(ALPHA) 데이터를 사용하여 GPU 메모리 상에 현재 프레임을 디스플레이하고, 상기 GPU 메모리 상에서 상기 알파 데이터의 프레임간 변화 여부를 판단하고, 상기 알파 데이터가 변화한 경우, 상기 알파 데이터를 CPU 메모리로 전달하여 인코딩하고, 상기 CPU 메모리에서 인코딩된 알파 데이터와 상기 GPU 메모리에서 인코딩된 RGB 데이터를 사용자 단말로 스트리밍하는 프로세서; 및
상기 알파 데이터를 저장하는 메모리
를 포함하는 것을 특징으로 하는 클라우드 스트리밍 서버.
A processor that displays a current frame on a GPU memory using alpha data acquired from a renderer process, determines whether there is a change in the alpha data between frames on the GPU memory, and if the alpha data has changed, transmits the alpha data to a CPU memory to encode it, and streams the alpha data encoded in the CPU memory and the RGB data encoded in the GPU memory to a user terminal; and
Memory for storing the above alpha data
A cloud streaming server comprising:
청구항 8에 있어서,
상기 프로세서는
상기 GPU 메모리 내 프레임 버퍼(FRAME BUFFER)를 GPU 메모리 컨트롤 프레임워크로 복사하고, 상기 GPU 메모리 컨트롤 프레임워크의 커널에서 상기 알파 데이터의 프레임간 변화 여부를 판단하는 것을 특징으로 하는 클라우드 스트리밍 서버.
In claim 8,
The above processor
A cloud streaming server characterized in that the frame buffer in the GPU memory is copied to the GPU memory control framework, and the kernel of the GPU memory control framework determines whether there is a change in the alpha data between frames.
청구항 9에 있어서,
상기 GPU 메모리 컨트롤 프레임워크는
GPU 메모리에 저장된 상기 이전 프레임의 알파 데이터와 상기 프레임 버퍼로부터 복사된 상기 현재 프레임의 알파 데이터를 비교하는 것을 특징으로 하는 클라우드 스트리밍 서버.
In claim 9,
The above GPU memory control framework
A cloud streaming server characterized by comparing alpha data of the previous frame stored in GPU memory with alpha data of the current frame copied from the frame buffer.
KR1020230093561A 2023-07-19 2023-07-19 Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor Pending KR20250014115A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020230093561A KR20250014115A (en) 2023-07-19 2023-07-19 Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor
PCT/KR2024/009299 WO2025018651A1 (en) 2023-07-19 2024-07-02 Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230093561A KR20250014115A (en) 2023-07-19 2023-07-19 Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor

Publications (1)

Publication Number Publication Date
KR20250014115A true KR20250014115A (en) 2025-02-03

Family

ID=94613284

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230093561A Pending KR20250014115A (en) 2023-07-19 2023-07-19 Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor

Country Status (1)

Country Link
KR (1) KR20250014115A (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160131829A (en) 2015-05-07 2016-11-16 엔트릭스 주식회사 System for cloud streaming service, method of image cloud streaming service using alpha value of image type and apparatus for the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160131829A (en) 2015-05-07 2016-11-16 엔트릭스 주식회사 System for cloud streaming service, method of image cloud streaming service using alpha value of image type and apparatus for the same

Similar Documents

Publication Publication Date Title
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
WO2021218751A1 (en) Cloud phone-based media data processing method and terminal device
US9542501B2 (en) System and method for presenting content in a client/server environment
CN110795195A (en) Web page rendering method, device, electronic device and storage medium
KR102407477B1 (en) System for cloud streaming service, method of image cloud streaming service using alpha value of image type and apparatus for the same
KR102078576B1 (en) Method for cloud streaming service using compression of alpha data and apparatus for the same
US11799970B1 (en) Technologies for cloud-hybrid remote browser isolation
CN102270152A (en) Handheld-mobile-equipment-oriented remote application program system
CN106462911A (en) Method for providing cloud streaming service, device and system for same, and computer-readable recording medium having, recorded thereon, cloud streaming script code for same
KR20190138121A (en) Method for cloud streaming service using efficient cache based on partial masking and apparatus thereof
CN113672293B (en) A media data processing method and terminal device based on cloud phone
KR102307539B1 (en) System for cloud streaming service, method of image cloud streaming service using process shortering and apparatus for the same
KR102508293B1 (en) System for cloud streaming service, method of image cloud streaming service based on quality information of application file and apparatus for the same
US10042521B1 (en) Emulation of control resources for use with converted content pages
KR20250014115A (en) Method for providing video cloud streaming service based on efficient transparency processing and apparatus therefor
US11758016B2 (en) Hosted application as web widget toolkit
KR20160131827A (en) System for cloud streaming service, method of image cloud streaming service using alpha level of color bit and apparatus for the same
KR20250014116A (en) Method for providing video cloud streaming service based on efficient segmentation transparency processing and apparatus therefor
KR20250014112A (en) Method for providing video cloud streaming service providing transparency information using renderer process and apparatus therefor
KR102313531B1 (en) System for cloud streaming service, method of cloud streaming service using single session multi-access and apparatus for the same
KR20250030250A (en) Method for providing image cloud streaming service based on efficient segmentation screen processing and apparatus therefor
KR20250122130A (en) Method for providing video cloud streaming service based on efficient transparency processing using tile based screen change information and apparatus therefor
KR20250014114A (en) Method for providing image cloud streaming service based on efficient image encoding and apparatus therefor
KR20250019860A (en) Method for synchronizing alpha and video in cloud streaming and apparatus therefor
KR20250125058A (en) Method for providing cloud streaming service that minimizes image quality defradation and apparatus therefor

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20230719

N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20250115

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

PG1501 Laying open of application