KR20160143778A - 비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩 - Google Patents

비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩 Download PDF

Info

Publication number
KR20160143778A
KR20160143778A KR1020167031202A KR20167031202A KR20160143778A KR 20160143778 A KR20160143778 A KR 20160143778A KR 1020167031202 A KR1020167031202 A KR 1020167031202A KR 20167031202 A KR20167031202 A KR 20167031202A KR 20160143778 A KR20160143778 A KR 20160143778A
Authority
KR
South Korea
Prior art keywords
frame
computer
encoding
interest
information
Prior art date
Application number
KR1020167031202A
Other languages
English (en)
Inventor
션 캘러핸
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160143778A publication Critical patent/KR20160143778A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Processing Or Creating Images (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

여기에 설명하는 실시형태들은, 보충 인코딩 명령어에 응답하여 프레임을 인코딩하고, 프레임에 대한 인코딩 정보를 제공하며, 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 것에 관한 것이다. 일 실시형태에 있어서, 프레임과 연관된 프레임 정보에 액세스함으로써, 컴퓨터 시스템은 그 프레임 정보를, 프레임의 지정된 부분을 인코딩하는 보충 인코딩 명령어로서 해석한다. 그런 다음 컴퓨터 시스템은 보충 인코딩 명령어에 따라 프레임의 지정 부분이 인코딩되도록 프레임을 인코딩한다.

Description

비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩{REGION-OF-INTEREST BASED VIDEO CODING USING HINTS, IN PARTICULAR FOR VIDEO GAMES}
인터넷 등의 네트워크를 통해 전세계 소비자에게 비디오 데이터가 일상적으로 전송된다. 비디오 데이터는 일부 유형의 소프트웨어 애플리케이션에 의해 생성된다. 그런 다음 비디오 데이터는 인코더에 의해 인코딩된 후에 수신측 시스템(즉, 클라이언트)에 전송된다. 그리고 수신측 시스템은 인코딩된 프레임을 디코딩하여 사용자에게 표시한다. 통상 비디오 인코더는 소프트웨어 애플리케이션으로부터 수신된 순서대로 프레임을 인코딩한다. 인코더는 프레임의 실제 컨텐츠에 대한 어떤 지식 없이 또는 프레임에서 실제로 무슨 일이 일어나는지에 대한 어떤 아이디어 없이 프레임을 인코딩한다. 인코딩 프로세스는 통상 프레임의 시각적 품질을 열화시킨다.
여기에 설명하는 실시형태들은, 보충 인코딩 명령어(supplemental encoding instruction)에 응답하여 프레임을 인코딩하고, 프레임에 대한 인코딩 정보를 제공하며, 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 것에 관한 것이다. 일 실시형태에 있어서, 프레임과 연관된 프레임 정보에 액세스함으로써, 컴퓨터 시스템은 그 프레임 정보를, 프레임의 지정된 부분을 인코딩하는 보충 인코딩 명령어로서 해석한다. 그런 다음 컴퓨터 시스템은 보충 인코딩 명령어에 따라 프레임의 지정 부분이 인코딩되도록 프레임을 인코딩한다.
다른 실시형태에 있어서, 컴퓨터 시스템은 프레임에 대응하는 프레임 정보에 액세스한다. 컴퓨터 시스템은 액세스된 프레임 정보로부터, 프레임의 적어도 한 부분이 지정된 방식으로 인코딩되어야 하는 것을 결정한다. 그리고 컴퓨터 시스템은, 지정된 방식으로 인코딩되어야 하는 프레임의 부분을 식별하는 보충 인코딩 명령어를 생성하여 그 보충 인코딩 명령어가 인코더에 제공되게 한다.
또 다른 실시형태에 있어서, 컴퓨터 시스템은 애플리케이션 컨텐츠의 지정된 부분이 지정된 방식으로 인코딩되어야 한다는 표시를 수신한다. 컴퓨터 시스템은 애플리케이션 컨텐츠의 지정 부분이 어떻게 렌더링되고 인코딩되어야 하는지를 표시하는 애플리케이션 코드를 애플리케이션에 추가한다. 그런 다음 컴퓨터 시스템은 애플리케이션을 컴파일링하여, 실행시에, 컴파일링된 애플리케이션이 애플리케이션 컨텐츠의 지정 부분이 어떻게 인코딩되어야 하는지를 표시하는 정보를, 프로세서에 또는 애플리케이션 컨텐츠를 인코딩하도록 구성되는 제2 애플리케이션에 제공하게 한다.
본 개요는 상세한 설명에서 또한 후술하는 개념들의 선택을 간략화한 형태로 소개하기 위해 제공된다. 본 개요는 청구범위의 발명의 대상이 되는 주요 특징 또는 본질적 특징을 확인하기 위한 것이 아니며, 청구범위의 발명의 대상의 범주를 결정하는데 도움을 주는 것으로 이용되어서도 안 된다.
추가 특징 및 장점은 이하에 개시될 것이며, 부분적으로 본 명세서로부터 당업자에게 분명해질 것이며, 또는 본 명세서의 지침을 실시함으로써 습득될 수 있다. 여기에 설명하는 실시형태들의 특징 및 장점은 첨부하는 청구범위에서 구체적으로 나타내는 수단 및 조합을 통해 실현 및 취득될 수 있다. 여기에 설명하는 실시형태들의 특징은 이어지는 설명 및 첨부하는 청구범위에서 보다 충분히 명백해질 것이다.
여기에 설명하는 실시형태에 대한 상기한 특징 및 기타 특징을 더욱 명확하게 하기 위해, 첨부 도면을 참조하여 보다 구체적인 설명이 이루어질 것이다. 이들 도면은 여기에 설명하는 실시형태들의 예만 도시하며, 그렇기 때문에 그 범주의 제한으로 간주되어서는 안 되는 것이 이해될 것이다. 실시형태들은 첨부 도면을 이용하여 추가의 특이성 및 상세내용으로 개시되어 설명될 것이다.
도 1은 여기에 설명하는 실시형태들이 보충 인코딩 명령어에 응답하여 프레임 인코딩을 비롯한 동작을 할 수 있는 컴퓨터 아키텍처를 도시하고 있다.
도 2는 보충 인코딩 명령어에 응답하여 프레임을 인코딩하는 예시적인 방법의 흐름도를 도시하고 있다.
도 3은 프레임에 대한 인코딩 정보를 제공하는 예시적인 방법의 흐름도를 도시하고 있다.
도 4는 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 예시적인 방법의 흐름도를 도시하고 있다.
도 5는 프레임 정보에 따라 프레임이 인코딩되는 컴퓨팅 아키텍처를 도시하고 있다.
도 6a와 도 6b는 상이한 프레임에 대해 관심 영역을 표시하는 실시형태를 도시하고 있다.
도 7은 관심 영역이 헤드업 디스플레이(heads-up display)에 표시되는 실시형태를 도시하고 있다.
여기에 설명하는 실시형태들은, 보충 인코딩 명령어에 응답하여 프레임을 인코딩하고, 프레임에 대한 인코딩 정보를 제공하며, 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 것에 관한 것이다. 일 실시형태에 있어서, 프레임과 연관된 프레임 정보에 액세스함으로써, 컴퓨터 시스템은 그 프레임 정보를, 프레임의 지정된 부분을 인코딩하는 보충 인코딩 명령어로서 해석한다. 그런 다음 컴퓨터 시스템은 보충 인코딩 명령어에 따라 프레임의 지정 부분이 인코딩되도록 프레임을 인코딩한다.
다른 실시형태에 있어서, 컴퓨터 시스템은 프레임에 대응하는 프레임 정보에 액세스한다. 컴퓨터 시스템은 액세스된 프레임 정보로부터, 프레임의 적어도 한 부분이 지정된 방식으로 인코딩되어야 하는 것을 결정한다. 그리고 컴퓨터 시스템은, 지정된 방식으로 인코딩되어야 하는 프레임의 부분을 식별하는 보충 인코딩 명령어를 생성하여 그 보충 인코딩 명령어가 인코더에 제공되게 한다.
또 다른 실시형태에 있어서, 컴퓨터 시스템은 애플리케이션 컨텐츠의 지정된 부분이 지정된 방식으로 인코딩되어야 한다는 표시를 수신한다. 컴퓨터 시스템은 애플리케이션 컨텐츠의 지정 부분이 어떻게 인코딩되어야 하는지를 표시하는 애플리케이션 코드를 애플리케이션에 추가한다. 그런 다음 컴퓨터 시스템은 애플리케이션을 컴파일링하여, 실행시에, 컴파일링된 애플리케이션이 애플리케이션 컨텐츠의 지정 부분이 어떻게 인코딩되어야 하는지를 표시하는 정보를, 프로세서에 또는 애플리케이션 컨텐츠를 인코딩하도록 구성되는 제2 애플리케이션에 제공하게 한다.
이어지는 설명에서는 수행될 수 있는 다수의 방법 및 방법의 단계들에 주목한다. 방법의 단계들이 어떤 순서로 설명될 수도 또는 특정 순서로 발생하는 것으로 흐름도에 도시될 수도 있지만, 특정 순서는, 구체적으로 언급하지 않는다면 반드시 필요하지 않거나, 또는 어느 한 단계가 그 단계가 수행되기 전에 완료되어야 하는 다른 단계에 종속된다면 필요하다.
여기에 설명하는 실시형태들은 각종 유형의 컴퓨팅 시스템을 구현할 수 있다. 이들 컴퓨팅 시스템은 이제 점점 더 다양한 형태를 취하고 있다. 컴퓨팅 시스템은 예를 들어, 핸드헬드 디바이스, 가전제품(appliances), 랩탑 컴퓨터, 데스크탑 컴퓨터, 메인프레임, 분산형 컴퓨팅 시스템, 또는 심지어, 통상적으로 컴퓨팅 시스템이라고 간주되지 않았던 디바이스일 수도 있다. 본 상세한 설명 및 청구범위에서는 "컴퓨팅 시스템(computing system)"을, 적어도 하나의 물리적 및 유형적(tangible) 프로세서와, 그 프로세서에 의해 실행될 수 있는 컴퓨터 실행 가능한 명령어를 가질 수 있는 물리적 및 유형적 메모리를 포함하는 임의의 디바이스나 시스템을 포함하는 것으로 넓게 정의한다. 컴퓨팅 시스템은 네트워크 환경에 걸쳐 분산될 수 있으며, 다중 구성요소로 이루어진 컴퓨팅 시스템을 포함할 수도 있다.
도 1에 도시하는 바와 같이, 컴퓨팅 시스템(101)은 통상 적어도 하나의 프로세싱 유닛(102A)과 메모리(103A)를 포함한다. 메모리(103A)는 휘발성, 비휘발성, 또는 이 둘의 일부 조합일 수 있는 물리적 시스템 메모리일 수 있다. 또한 용어 "메모리"는 본 명세세에서 물리적 저장 매체 등의 비휘발성 대용량 스토리지를 칭하는데 이용될 수 있다. 컴퓨팅 시스템이 분산형이면, 프로세싱, 메모리 및/또는 저장 능력 역시 분산될 수 있다.
본 명세서에서 이용될 때에, 용어 "실행 가능한 모듈(executable module)" 또는 "실행 가능한 컴포넌트(executable component)"는 컴퓨팅 시스템 상에서 실행될 수 있는 소프트웨어 객체, 라우팅, 또는 메소드를 지칭할 수 있다. 본 명세서에서 설명하는 상이한 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템 상에서 실행되는 객체 또는 프로세스로서(예컨대, 개별 스레드로서) 구현될 수 있다.
이하에서는, 하나 이상의 컴퓨팅 시스템에 의해 수행되는 단계(act)를 참조하여 실시형태들을 설명한다. 이러한 단계들이 소프트웨어로 구현되면, 그 단계를 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세스는 컴퓨터 실행 가능한 명령어의 실행에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 예를 들어, 이러한 컴퓨터 실행 가능한 명령어는 컴퓨터 프로그램 제품을 형성하는 하나 이상의 컴퓨터 판독 가능한 매체 상에 포함될 수 있다. 이러한 동작의 일례는 데이터의 처리(manipulation)를 수반한다. 컴퓨터 실행 가능한 명령어 및 (처리된 데이터)는 컴퓨팅 시스템(101)의 메모리(103A)에 저장될 수 있다. 컴퓨팅 시스템(101)은 유선 또는 무선 네트워크를 통해 다른 메시지 프로세서와 통신할 수 있게 하는 통신 채널도 포함할 수 있다.
여기에 설명하는 실시형태들은, 이하에서 더 상세하게 설명하겠지만, 예컨대 하나 이상의 프로세서 및 시스템 메모리 등의 컴퓨터 하드웨어를 포함하는 전문용 또는 범용 컴퓨터를 포함하거나 이용할 수 있다. 시스템 메모리는 전체 메모리(103A) 내에 포함될 수 있다. 시스템 메모리도 "메인 메모리"로서 지칭될 수 있고, 메모리 버스를 통해 적어도 하나의 프로세싱 유닛(102A)에 의해 어드레싱 가능한 메모리 로케이션을 포함하는데, 이 경우 어드레스 로케이션은 메모리 버스 상에 스스로 어서트된다(asserted). 시스템 메모리는 전통적으로 휘발성이였지만, 여기에 설명하는 원리는, 시스템 메모리가 부분적으로 또는 심지어 전체적으로 비휘발성인 상황에도 적용된다.
본 발명의 범주 내의 실시형태들은 또한 컴퓨터 실행 가능한 명령어 및/또는 데이터 구조를 전달 또는 저장하는 물리적 매체 및 기타 컴퓨터 판독 가능한 매체를 포함한다. 이러한 컴퓨터 판독 가능한 매체는 범용 또는 전문용 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다. 컴퓨터 실행 가능한 명령어 및/또는 데이터 구조를 저장하는 컴퓨터 판독 가능한 매체는 컴퓨터 저장 매체이다. 컴퓨터 실행 가능한 명령어 및/또는 데이터 구조를 전달하는 컴퓨터 판독 가능한 매체는 전송 매체이다. 따라서, 예시적으로 그리고 비제한적으로, 본 발명의 실시형태들은 적어도 2개의 명백하게 상이한 종류의 컴퓨터 판독 가능한 매체, 즉 컴퓨터 저장 매체와 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 실행 가능한 명령어 및/또는 데이터 구조를 저장하는 물리적 하드웨어 저장 매체이다. 물리적 하드웨어 저장 매체는 RAM, ROM, EEPROM, SSD(solid state drive), 플래시 메모리, PCM(phase-change memory), 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 또는 컴퓨터 실행 가능한 명령어나 데이터 구조의 형태로 프로그램 코드를 저장하는데 이용될 수 있는 기타 하드웨어 저장 디바이스 등의 컴퓨터 하드웨어를 포함하여, 본 발명의 개시된 기능을 구현하도록 범용 또는 전문용 컴퓨터 시스템에 의해 액세스 및 실행될 수 있다.
전송 매체는 컴퓨터 실행 가능한 명령어 또는 데이터 구조의 형태로 프로그램 코드를 전달하는데 이용될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있으며, 범용 또는 전문용 컴퓨터 시스템에 의해 액세스될 수 있다. "네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 기타 전자 디바이스 간의 전자 데이터의 전송(transport)을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 접속(배선(hardwired), 무선, 또는 배선이나 무선의 조합)을 통해 컴퓨터 시스템에 전달 또는 제공될 경우에, 컴퓨터 시스템은 그 접속을 전송 매체로서 간주할 수 있다. 전술한 것들의 조합도 컴퓨터 판독 가능한 매체의 범주 내에 포함된다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달할 때에, 컴퓨터 실행 가능한 명령어 또는 데이터 구조의 형태로 된 프로그램 코드는 전송 매체로부터 컴퓨터 저장 매체로 (또는 그 반대로) 자동으로 전달될 수 있다. 예를 들어, 네트워크나 데이터 링크를 통해 수신된 컴퓨터 실행 가능한 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예컨대, "NIC") 내의 RAM에 버퍼링된 다음에, 결국에는 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에서의 덜 휘발적인 컴퓨터 저장 매체에 전달될 수 있다. 이에, 컴퓨터 저장 매체는, 전송 매체도 (심지어 주로) 사용하는 컴퓨터 시스템 컴포넌트에 포함될 수 있는 것은 물론이다.
컴퓨터 실행 가능한 명령어는, 하나 이상의 프로세서에서 실행될 때에, 범용 컴퓨터 시스템, 전문용 컴퓨터 시스템, 또는 전문용 멀티프로세서 디바이스로 하여금 어떤 함수 또는 함수의 그룹을 수행하게 하는, 예컨대 명령어 및 데이터를 포함한다. 컴퓨터 실행 가능한 명령어는 예컨대, 바이너리, 어셈블리 언어 등의 중간 포맷 명령어, 또는 심지어 소스 코드일 수도 있다.
당업자라면 여기에 설명하는 원리가, 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래머블 가전(consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화기, PDA, 태블릿, 페이저, 라우터, 스위치 등등을 비롯한 다수 유형의 컴퓨터 시스템 구성으로 네트워크 컴퓨팅 환경에서 실시될 수 있음을 이해할 것이다. 또한 본 발명은 네트워크를 통해 (배선 데이터 링크, 무선 데이터 링크, 또는 배선 및 무선 데이터 링크의 조합으로) 연결되어 있는 국소 및 원격 컴퓨터 시스템 양쪽이 태스크를 수행하는 분산형 시스템에서 실시될 수도 있다. 이 경우에도 분산형 시스템 환경에서는 컴퓨터 시스템이 복수의 구성요소 컴퓨터 시스템을 포함할 수 있다. 분산형 컴퓨팅 환경에서는, 프로그램 모듈이 국소 및 원격 저장 디바이스 둘다에 위치할 수 있다.
당업자라면 본 발명이 클라우드 컴퓨팅 환경에서도 실시될 수 있음을 이해할 것이다. 클라우드 컴퓨팅 환경은 분산형일 수 있는데, 이것은 필수적이지는 않다. 분산형이라면, 클라우드 컴퓨팅 환경은 어느 한 조직(organization) 내에서 국제적으로 분산될 수도 그리고/또는 다수의 조직에 걸쳐 소유된 컴포넌트들을 구비할 수도 있다. 본 설명 및 이어지는 청구범위에서는, "클라우드 컴퓨팅(cloud computing)을, 구성 가능한 컴퓨팅 리소스(예컨대, 네트워크, 서버, 스토리지, 애플리케이션, 및 서버)의 공유 풀(shared pool)에의 온디맨드(on-demand) 네트워크 액세스를 가능하게 하는 모델로서 정의한다. "클라우드 컴퓨팅"의 정의는 적절하게 디플로이(deploy)될 때에 이러한 모델로부터 획득될 수 있는 다른 다수의 장점들 중 임의의 것에 한정되지 않는다.
또한, 여기에 설명하는 시스템 아키텍처는 전체 시스템의 기능에 각각 기여하는 복수의 독립적 컴포넌트를 포함할 수 있다. 이 모듈성(modularity)은 플랫폼 확장성 문제에 접근할 때에 유통성을 증대시키고, 궁극적으로 다양한 장점을 제공할 수 있다. 시스템 복잡성 및 증대는 제한된 기능적 범주에서 더 작은 스케일의 부품을 이용하여 보다 용이하게 관리될 수 있다. 플랫폼 내고장성(fault tolerance)은 이 느슨하게 결합된 모듈들을 이용하여 강화된다. 개별 컴포넌트는 비지니스 요구에 따라 점진적으로 증대할 수 있다. 모듈 개발은 또한 새로운 기능의 수요에 대해 시간 절감으로 환언된다. 코어 시스템에 영향을 미치는 일 없이 새로운 기능이 추가 또는 차감될 수 있다.
도 1은 적어도 일 실시형태가 채택될 수 있는 컴퓨터 아키텍처(100)를 도시하고 있다. 컴퓨터 아키텍처(100)는 컴퓨터 시스템(101)을 포함한다. 컴퓨터 시스템(101, 113)은 클라우드 컴퓨팅 시스템을 비롯한 임의 유형의 국소형 또는 분산형 컴퓨터 시스템일 수 있다. 각 컴퓨터 시스템은 적어도 하나의 프로세서(102A/102B), 메모리(103A/103B), 및 통신 모듈(104A/104B)을 포함한다. 통신 모듈은 유선 또는 무선 네트워크 카드, 블루투스 와이어리스 무선부, WiFi 무선부 또는 디지털 데이터를 송신 및/또는 수신하도록 구성된 기타 하드웨어를 비롯한 유선 또는 무선 통신 수단을 포함할 수 있다. 통신 모듈(104A)은 예컨대 컴퓨터 시스템(113)의 통신 모듈(104B)로부터의 인코딩된 프레임(112)을 수신할 수 있다.
일부 실시형태에 있어서, 컴퓨터 시스템(113)은 서버일 수도 있다. 서버는 단일 컴퓨터 시스템일 수도 또는 분산형일 수도 있다. 서버는 컴퓨터 시스템(101) 등의 클라이언트에 데이터를 제공하도록 구성될 수 있다. 서버는 입력에 대한 응답으로 또는 데이터에 대한 다른 요청으로(예컨대, 사용자(105)로부터의 입력에 대한 응답으로) 클라이언트에 애플리케이션 데이터를 제공할 수 있다. 일부 경우에, 컴퓨터 시스템(113)은 비디오 게임 서버일 수도 있다. 이러한 경우에, 비디오 게임 서버는 비디오 게임 컨텐츠를 가진 프레임(예컨대, 인코딩된 프레임(112))을 제공하도록 구성될 수도 있다. 이들 프레임은 통상 일부 방식으로 인코딩되어 데이터 패킷으로 전달된다. 프레임은 인접한 일련의 프레임을 형성하여 동영상(motion picture)을 형성하기 위해 연속 스트리밍 방식으로 전송될 수 있다. 게이밍 시나리오에서는 이 프레임의 스트림이 비디오 게임 출력을 형성하게 된다. 본 명세서에서 자주 언급하는 비디오 게임 실시형태는 비디오 컨텐츠가 한 컴퓨터 시스템으로부터 다른 것으로 전송되는(즉, 스트리밍되는) 다수의 가능한 실시형태들 중 일례일 뿐임이 이해될 것이다.
다수의 비디오 게임에서는, 비디오 게임의 컨텐츠가 끊임없이 변한다. 예를 들어, 어드벤처 게임에서는, 사용자가, 각각이 상이한 룩앤필(look and feel)을 가지며 각 레벨이 상이한 적들, 장면 등을 갖는 다양한 세계를 여행할 수 있다. 같은 것이, 1인칭 슈팅 게임(first-person shooter game), 레이싱 게임, 롤 플레잉 게임 및 기타 게임에도 유효할 수 있다. 각 레벨은 상이한 레벨의 디테일을 갖고, 변하는 레벨의 디테일을 가질 수 있다. 일부 레벨은 예컨대 저 레벨의 상호작용성(interactivity)을 가질 수 있고 그렇기 때문에 고 레벨의 시각적 품질을 제공할 수 있다. 한편, 레벨 또는 레벨의 일부는 매우 높은 레벨의 상호작용성을 가질 수 있고 그렇기 때문에 고 품질 그래픽보다는 낮은 레이턴시를 우선할 수 있다. 일부 상황에서는, 게임 플레이어나 다른 뷰어가 특별한 관심을 가질 수 있는 화면 또는 프레임의 어떤 영역이 있을 수도 있다. 예를 들면, 1인칭 슈팅 게임 사용자가 멀리 떨어져 있는 선택된 타겟을 겨냥하고 그 타겟에 발사한다면, 그 사용자는 탄알이 맞힌 곳의 주변 영역에 있는 추가 디테일을 가지기를 원할 수도 있다. 사용자는 화면의 나머지 부분에 덜 집중할 수도 있고 그 영역에 더 집중할 수도 있다. 이러한 영역을 여기서는 "집중 영역" 또는 "관심 영역"이라고 칭할 것이다.
비디오 게임(또는 기타 애플리케이션) 프로그래머는 이들 관심 영역이 소정의 게임에 대해 소정의 시간에 있게 될 곳에 관한 힌트를 제공할 수 있다. 예를 들면, 관심 영역(그리고 아마도 관심 영역 주변의 지정 영역)에 더 높은 레벨의 시각적 충실도(visual fidelity)를 제공하기 위해 그 영역에 추가 인코딩 비트가 할당될 수도 있다. 따라서 프로그래머는 이들 힌트를 게임 자체에 제공할 수도 있다. 그리고 힌트는 최종적으로 게임에 대한 비디오 프레임을 인코딩하는 인코더에 제공될 수 있다. 이런 식으로, 비디오 게임 자체는 인코딩된 비디오의 추가 비트가 할당되어야 하는 곳을 인코더에 알리는 게임 고유의 관심 영역을 제공할 수 있다. 프로그래머/비디오 게임은 예컨대 헤드업 디스플레이(heads-up display, HUD) 정보를 항상 판독할 수 있어야 하는 화면의 부분을 표시할 수 있다. 이에 비디오 게임 힌트는 화면 상에서 플레이어가 보고 있을 가능성이 있는 곳을 표시할 수 있다.
힌트는 화면 상에서(즉, 비디오 컨텐츠 내에서) 현재 일어나는 일의 표시(indication)도 제공할 수 있다. 예를 들면, 디스플레이가 현재 블랙/화이트로/로부터 페이딩되고 있을 수 있다. 추가적으로 또는 대안적으로, 화면은 현재 다수의 로컬 플레이어들을 지원하기 위해 다수의 영역으로 분할될 수도 있고, 이들 영역은 별개로 또는 상이한 인코딩 파라미터 또는 세팅으로 인코딩될 수도 있다. 또한, 힌트는 3D 카메라가 소정의 레이트로 어떤 방향으로 이동하고 있음도 표시할 수 있다. 이것들은 힌트 정보가 현재 사용자의 화면 상에 일어나고 있는 일을 어떻게 제공할 수 있는지에 관한 다수의 상이한 예들 중 일부일 뿐이다.
게임 힌트는 게임의 현재 상호작용성 상태의 표시도 제공할 수 있다. 예를 들면, 게임은 현재 상호작용성 없음 또는 저 상호작용성 취지(예컨대, 사전 렌더링된 비디오)를 표시하고 있을 수도 있다. 이러한 시나리오에서는 비디오 품질이 레이턴시보다 더 중요할 수 있다. 고 상호작용성 모드에서는, 저 레이턴시가 고 비디오 품질보다 중요할 수 있다. 다른 시나리오에 있어서, 메뉴 화면을 표시할 때와 같은 경우에는 게임이 적당한 쌍방성 모드에 있을 수 있다. 이러한 경우에, 프로그래머는 비디오 품질, 레이턴시 또는 기타 인자가 인코딩 우선순위를 받아야 하는지, 또는 이들이 균등한 인코딩 우선순위를 받아야 하는지에 관해 힌트를 제공할 수 있다.
이런 식으로, 게임 제공(game-provided) 관심 영역은 인코더에 전달되어 인코더는 그 영역을 인코딩된 프레임의 나머지보다도 더 높은 품질로(더 많은 비트로) 인코딩할 수 있다. 우선순위화는 가장 중요한 영역에 더 많은 비트가 지정되고 나머지 영역에 잔여 비트가 지정되는 식으로 적용될 수 있다.
페이딩 힌트(fading hint)도, 페이딩 비디오를 보상하고 더 좋게 인코딩하기 위해 가중 예측(weighted prediction)이 이용되어야 한다는 것을 인코더에 표시하는데 이용될 수 있다. 분할 화면 정보는 분할된 경계를 넘어 모션 검색을 시도하지 않을 것과, 통상의 블록과는 상이한 세팅을 가진 그 경계들에 걸쳐 있는 블록을 인코딩하는 것을 인코더에 알리는데 이용될 수 있다. 모션 검색 매칭을 찾아낼 가능성이 가장 높은 방향에 관해 인코더에 알려서 인코더가 보다 신속하게 우수한 매칭을 찾아내게 하기 위해 카메라 모션 정보가 이용될 수 있다.
상호작용성 상태 힌트도, 비디오 인코드 품질을 바이어싱하여 이용되는 버퍼링 양을 지정하는 데에 이용될 수 있다. 저 상호작용성 상태는 더 높은 품질의 인코딩(예컨대, 양방향으로 예측된 프레임을 가능하게 함)과 더 많은 버퍼링을 허용하여, 사용자가 이제 방금 보고 있고 게임과 상호작용하고 있지 않을 경우에 더 원활하고 더 높은 품질의 비디오를 제공할 수 있다. 게임이 고 상호작용성 상태(게임플레이중)에 있을 때에는, 인코딩은 가능한 최저 레이턴시에 대해, 가능하다면 버퍼링이 덜한 더 낮은 품질로 바이어싱될 수 있다. 이들 개념은 도 2, 도 3, 및 도 4의 방법(200, 300, 400) 각각과 관련하여 후술될 것이다.
전술한 시스템 및 아키텍처의 견지에서, 개시하는 주제에 따라 구현될 수 있는 방법론은 도 2, 도 3, 및 도 4의 흐름도를 참조하여 더 잘 이해될 것이다. 설명의 간편성을 위해, 이들 방법론은 일련의 블록으로서 도시되어 설명된다. 그러나, 일부 블록들이 여기에 도시하고 설명하는 것과는 상이한 순서로 그리고/또는 다른 블록과 동시에 발생할 수도 있기 때문에, 청구하는 발명의 대상이 블록의 순서에 의해 한정되지 않음은 물론이다. 또한, 도시하는 모든 블록이 이하에 설명하는 방법론을 구현하는데 필요하지 않을 수도 있다.
도 2는 보충 인코딩 명령어에 응답하여 프레임을 인코딩하는 방법(200)의 흐름도를 도시하고 있다. 이하, 환경(100)의 컴포넌트 및 데이터를 자주 참조하여 방법(200)에 대해 설명한다.
방법(200)은 적어도 하나의 프레임과 연관된 프레임 정보의 하나 이상의 부분에 액세스하는 단계를 포함한다(단계 210). 이 단계는 프로세서에 의해 수행될 수도 있고, 또는 이 액세스를 수행하는 컴퓨터 실행 가능한 명령어를 저장한 컴퓨터 판독 가능한 매체와 함께, 컴퓨팅 시스템에 의해 수행될 수도 있다. 프레임 정보는 한 프레임의 어떤 부분 또는 프레임의 시퀀스가 어떻게 인코딩되어야 하는지에 관한 힌트를 포함할 수 있다. 이를테면, 전술한 바와 같이, 개발자는 프레임의 어떤 영역을 관심 영역으로서 표시할 수도 있다. 이러한 경우에, 이들 관심 영역은 고 시각적 품질, 저 레이턴시, 또는 둘다를 갖기 위해 추가 인코딩 비트를 받을 수 있다. 또한 관심 영역은 개발자가 지정하는 대로 다른 유형의 프로세싱도 받을 수 있다. 컴퓨터 시스템(113)의 데이터 액세싱 모듈(115)이 프레임 정보(114)를 수신할 수도, 또는 그 정보가 다른 장소(예컨대, 아마도 데이터베이스나 다른 데이터 스토어)에 저장되어 있다면 그 정보에 액세스할 수도 있다.
다음으로 방법(200)은 프레임 정보의 하나 이상의 부분을, 그 프레임의 적어도 일 부분을 인코딩하는 보충 인코딩 명령어로서 해석하는 단계를 포함한다(단계 220). 프레임 정보(114)는 데이터 해석 모듈(116)에 의해 보충 인코딩 명령어(117)로서 해석되어 인코딩을 위해 인코딩 모듈(118)에 전송된다. 본 명세서에서 사용되는, "보충 인코딩 명령어(supplemental encoding instruction)"는 프레임 정보(114)가 추가된 인코딩 명령어를 칭한다. 통상 인코딩 모듈(118)은 비디오 게임 등의 소프트웨어 애플리케이션으로부터의 정보를 수신함으로써 프레임을 인코딩하도록 이제 구성될 것이다. 이 경우에, 비디오 게임 엔진은 인코딩 모듈(118)에 의해 인코딩된 다음에 디스플레이(106) 상에서 사용자(105)에게 보여지는 디코딩된 프레임(119)으로 디코딩되는 비디오 게임 컨텐츠를 제공하게 된다. 본 명세서 내의 실시형태에 있어서, 인코딩 모듈(118)은 프레임 정보(즉, 힌트)(114)를 통해 제공되는 보충 인코딩 명령어(117)를 고려할 수도 있다. 이런 식으로, 개발자 또는 다른 사용자가 애플리케이션에 의해 일반적으로 제공되는 그래픽 정보에 추가되는 인코딩 힌트를 제공할 수 있다. 그런 다음 인코딩 모듈(118)은 일부(즉, 관심 영역)가 보충 인코딩 명령어에 따라 인코딩되도록 프레임(112)을 인코딩한다.
일부 경우에 있어서, 프레임 정보(114)는 전체 프레임에 또는 프레임의 전체 시퀀스에 영향을 미칠 수 있다. 다른 경우에 있어서, 프레임 정보(114)는 프레임의 일부에만 또는 프레임의 시퀀스에만 영향을 미칠 수도 있다. 프레임의 이 부분(즉, 관심 영역)은 개발자에 의해 제공되는 프레임 정보(114)에 따라 각 프레임마다 동적으로 변할 수 있다. 예를 들어, 도 6a와 도 6b에 도시하는 바와 같이, 프레임(601A)은 프레임의 우측 상부 코너에 관심 영역(602A)를 가질 수 있고, 프레임(601B)은 중심부 근처에 관심 영역을 가질 수 있다. 영화의 경우에, 이 관심 영역은 어떤 객체가 화면 상에 새롭게 출연하는 곳에, 플롯 진행에 중요한 어떤 일이 발생하고 있는 곳, 또는 추가된 극적인 효과를 제공하는 어떤 일이 발생하고 있는 곳, 또는 감독이 관객의 주의를 집중시키려고 하는 곳에 있을 수 있다. 사실상, 감독, 애플리케이션 개발자 또는 다른 사용자는 관심 영역이 있어야 하는 각 프레임마다, 그 영역의 사이즈와 형상, 단일 프레임 내에 다수의 관심 영역이 존재하는지의 여부, 프레임 내의 각각의 관심 영역에서 무슨 유형의 프로세싱이 이루어져야 하는지, 관심 영역이 단일 프레임에 또는 일련의 프레임에 적용되어야 하는지의 여부 등을 표시할 수 있다. 당업자라면 이해하겠지만, 관심 영역을 프레임에 적용시키는 사람은 각 프레임에 대해 또는 일련의 프레임에 대해 프레임 정보를 커스텀마이징 및 맞춤화할 수 있는 능력이 있다.
일부 실시형태에 있어서, 도 5에 도시하는 바와 같이, 도 1의 프레임 정보(114)가 비디오 게임의 프레임에 대응할 수도 있다. 비디오 게임은 서버(506)(원격 서버일 수도 있음)로부터 스트리밍되는 스트리밍 비디오 게임일 수 있다. 서버(506)은 비디오 게임 코드를 프로세싱하여 비디오 게임 컨텐츠(508)를 생성하는 게임 엔진(507)을 구비할 수 있다. 이 비디오 게임 컨텐츠(508)는 비디오 게임 컨텐츠가 프레임의 스트림(505) 내의 단일 프레임(504)로서 인코딩되는 인코더(509)로(또는 다수의 인코더로) 전송된다. 이 프레임의 스트림(505)은 유선 또는 무선 네트워크를 통해(예컨대, WiFi 또는 인터넷을 통해) 클라이언트 컴퓨터 시스템(501)에 송신될 수 있다. 클라이언트 컴퓨터 시스템(501)은, 인코딩된 프레임을 수신하고, 그 프레임에 대해 아마도 일부 유형의 프로세싱(예컨대, 디코딩)을 수행하며, 디코딩된 프레임(511)을 뷰어/플레이어에게 표시하기 위해 디스플레이(503)에 전송하는 디스플레이 모듈(502)(도 1의 디스플레이 모듈(111)과 동일하거나 다를 수 있음)을 포함할 수 있다. 비디오 게임 개발자는 게임 애플리케이션 코드 내에 제공되는 추가 코드를 통해 프레임 정보(114)를 게임 엔진(507)에 제공할 수도 있다(이것에 대해서는 도 4의 방법(400)과 관련하여 추가로 후술함).
이에, 비디오 게임 컨텍스트에서는, 비디오 게임 개발자가 프레임의 일부가 추가의(또는 상이한 유형의) 인코딩 비트를 받아야 하는지에 관한 힌트(즉, 프레임 정보(114))를 제공할 수 있다. 이런 식으로, 게임 작가(game author)는 보다 정밀한 렌더링을 제공하기 위해 관심 영역을 식별할 수 있고, 게다가 동시에, 관심 영역을 찾는데 필요한 이미지 분석이 필요 없기 때문에 인코딩시에 시간을 절감할 수 있다. 프레임 정보는 또한 소정의 프레임에 대한 비디오 게임 컨텍스트의 보다 일반적인 표시(general indication)를 제공할 수도 있다. 예를 들면, 비디오 게임 작가는 게임에서 프레임의 어떤 시퀀스에 대해 또는 어떤 레벨에 대해 눈이 떨어지는 것을 표시할 수도 있다. 비디오 게임 작가는 프레임 정보(114)를 추가할 수 있고, 이 프레임 정보는 인코딩 모듈(118)에 의해, 눈송이가 떨어지는 것을 보여주기 위해 프레임의 다수의 부분이 랜덤한 패턴으로 변할 것임을 표시하는 보충 인코딩 명령어로서 해석된다. 대안적으로, 비디오 게임 작가는 프레임의 시퀀스가 프레임의 정규 컬러링으로부터 전체 화이트 또는 전체 블랙 화면으로 페이딩하는 것을 표시할 수도 있다. 이러한 경우, 비디오 게임 객체의 다수는 변하지 않는 상태이며, 컬러링만이 다색으로부터 화이트 또는 블랙으로 변한다. 이것은 인코더가 페이딩 시퀀스중에 저 레이턴시보다 고 품질을 우선하게 할 수 있다.
어떤 프레임 또는 프레임의 시퀀스를 인코딩할 때에 일반적으로 인코더를 보조하기 위해 다수의 다른 유형의 비디오 게임 컨텍스트가 제공될 수도 있다. 예를 들면, 프레임 정보(114)는 게임(또는 다른 애플리케이션) 내에서의 카메라 뷰가 어떤 방향 또는 패턴으로(예컨대, 우측에서 좌측으로, 좌측에서 우측으로, 상측에서 하측으로 또는 하측에서 상측으로, 대각선으로, 등등) 이동하는 것을 표시할 수 있다. 카메라 뷰 정보는 인코더가, 전체적으로 새로운 것과 대조적으로, 프레임의 어떤 부분에서 단지 한 방향이 또는 다르게 시프트되고 있는지 알게 할 수 있다. 일부 경우에, 카메라는 3D 카메라일 수 있으며, 이 경우에 프레임 정보(114)는 깊이 방향(z축)과 함께 x축 및 y축 정보도 포함할 수 있다. 이 비디오 컨텍스트 프레임 정보는 관심 영역을 지정하는 프레임 정보에 추가되거나 또는 그 정보의 대안일 수 있다.
관심 영역은 소정의 레벨에 대해, 소정의 장면에 대해, 소정의 게임내 비디오에 대해, 게임플레이의 어떤 시퀀스에 대해, 엘리먼트의 어떤 조합(예컨대, 어떤 배경 또는 적과의 어떤 무기 등)에 대해 동일할 수 있거나, 프레임 정보(114)의 제공자에 의해 지정되는 다른 엘리먼트에 고유할 수도 있다. 프레임 정보는 최초 관심 영역이 프레임(112/504)의 일부에 정의되어야 하는 것과 그 관심 영역이 시간에 따라 변하는 것임을 표시할 수도 있다. 예를 들면, 관심 영역은 비디오 게임 컨텐츠의 변화에 대응하여 시간에 따라 동적으로 변할 수 있다. 전술한 바와 같이, 게임 개발자는 어떤 비디오 게임 컨텐츠의 변화가 관심 영역의 변화를 트리거하는지를 표시할 수 있다. 예컨대 레이싱 게임은 화면 상에서, 사고가 발생하는 영역이나 타이어 소리가 나는 영역, 또는 외부 벽에 부딪히는 영역, 또는 개발자가 정의하는 기타 상황의 영역에 추가 인코딩 비트가 할당되어야 하는 것을 지정할 수 있다. 롤 플레잉 게임은 플레이어(예컨대, 히어로) 주변과 적(예컨대, 끝판왕) 주변 또는 기타 게임내 객체의 주변 영역에 추가 인코딩 비트가 이용되어야 하는 것을 지정할 수 있다. 이에, 관심 영역은 게임 개발자가 지정하는 대로 각 인코딩 프레임마다 변할 수 있다.
일부 게임은, 수평 분할의 경우 한 플레이어가 상측 화면에서 플레이하고 또 한 플레이어는 하측 화면에서 플레이하는 분할 화면 모드를 제공한다(또는 수직 분할이라면 좌측 화면과 우측 화면). 이러한 경우에, 프레임 정보(114)는 분할 화면의 각 레벨마다 제공될 수 있다. 즉, 각 분할 레벨은 관심 영역의 자체 포인트, 및 인코딩 비트가 프레임의 다양한 부분들 사이에 어떻게 분배되어야 하는지를 기술하는 그 자체의 프레임 정보(즉, 힌트)를 가질 수 있다. 예를 들어, 분할 화면 모드의 레이싱 게임에서, 상측 화면 상의 플레이어는 가스 부족 상태로 주행하고 있을 수 있고, 이 경우 게임에서는 연료 영역 주변이 반짝이거나 깜박일 수 있다. 개발자는 이것이 그 사용자에 대한 관심 영역일 가능성이 있음을 표시할 수 있고, 그래서 상측 화면 상의 사용자는 (어쩌면 화면 상의 다른 장소들 중에서) 가스 측정기 주변에 관심 영역을 갖게 된다. 하측 화면 상의 플레이어는 가스는 풍분하지만, 사고를 당했고, 그래서 그 사고를 묘사하는데 사용된 화면 변화를 인코딩하기 위해 더 많은 인코딩 비트를 필요로 할 수 있다. 추가 인코딩 비트는 상측 및 하측 분할 화면 사이에 균등하게 분배될 수도 또는 동적으로 할당될 수도 있다. 이에, 하나의 분할 화면에는 일어나는 것이 거의 없고 다른 화면에는 더 많은 것이 일어나면, 더 많은 비트가 후자의 분할 화면에 할당될 수 있다. 게임 또는 애플리케이션 컨텐츠가 변하여, 다른 분할 화면에 더 많은 액티비티가 있게 되면, 인코딩 비트의 할당은 각 분할 화면에 최적의 프레임 인코딩 품질을 제공하기 위해 그에 따라 변할 수 있다.
도 7에 도시하는 바와 같이, 도 1로부터의 프레임 정보(114)는 강화되어야 하는 헤드업 디스플레이(HUD) 정보의 부분을 지정하는데 이용될 수도 있다. 예를 들면, 프레임(701)에서, 헤드업 디스플레이(702)는 생명 미터(life meter)(703), 무기 인디케이터(704), 및 저장 아이템 인디케이터(705)를 포함할 수 있다. 게임 플레이어는 그 플레이어가 저장 아이템 인디케이터(705)에 저장된 객체를 취득하는 게임을 플레이하고 있을 수 있다. 그 객체는 깜박일 수도 있거나, 사이즈가 일시적으로 증대할 수도 있고, 또는 다른 방식으로 두드러질 수 있다. 게임 개발자는 관심 영역(706)이 저장 아이템 주변에 존재하는 것과, 그 저장된 영역이 추가 인코딩 비트를 받아야 하는 것을 표시할 수 있다. 전술한 바와 같이, 게임 개발자는 HUD 중 임의의 하나 이상의 영역을 관심 영역으로서 지정할 수 있고, HUD 상의 관심 영역은 시간에 따라 변할 수 있고/있거나 각 프레임마다 변할 수도 있다. 이에, 이런 식으로, 관심 영역이 HUD의 한 영역 상에 또는 프레임의 다른 부분 내에 있든지, 게임 개발자는 프레임 상에서 뷰어가 소정의 순간에 가장 볼 것 같은 곳을 표시하여 그 영역에 대해 추가 프로세싱이 수행되게 하기 위해 프레임 정보(114)를 제공할 수 있다.
이제 도 3을 참조하면, 프레임에 대한 인코딩 정보를 제공하는 방법(300)의 흐름도가 도시된다. 이하, 환경(100)의 컴포넌트 및 데이터를 자주 참조하여 방법(300)에 대해 설명한다.
방법(300)은 적어도 하나의 프레임에 대응하는 프레임 정보의 하나 이상의 부분에 액세스하는 단계를 포함한다(단계 310). 예를 들어, 도 1의 데이터 액세싱 모듈(115)은 애플리케이션 컨텐츠를 포함하는 하나 이상의 인코딩된 프레임(112)에 대응하는 프레임 정보(114)에 액세스할 수 있다. 데이터 해석 모듈(116)은, 액세스된 프레임 정보로부터, 프레임의 적어도 한 부분이 지정된 방식으로 인코딩되어야 하는 것을 결정할 수 있다(단계 320). 예를 들어, 전술한 바와 같이, 개발자 또는 다른 사용자는 프레임(또는 그 부분)이 어떻게 인코딩되어야 하는지를 지정할 수 있다. 개발자는 관심 영역을 지정할 수 있고, 그 관심 영역에 대한 어떤 인코딩 방법 또는 인코딩 우선순위화를 지정할 수 있다. 이런 식으로, 프레임은 개발자가 지정한 방식으로 인코딩된다. 컴퓨터 시스템(113) 내의 데이터 해석 모듈(116)(또는 다른 모듈)은, 지정된 방식으로 인코딩되어야 하는 프레임의 하나 이상의 부분을 식별하는 보충 인코딩 명령어를 생성할 수 있고(단계 330), 그 다음 그 보충 인코딩 명령어가 인코더에 제공되게 할 수 있다(단계 340). 이에, 보충 인코딩 명령어(117)는 프레임이 인코딩되어 컴퓨터 시스템(101)에 전달되는 인코딩 모듈(118)에 전송될 수 있다(이 인코딩 모듈은 그 자체가 인코더일 수도 있고 또는 그 모듈의 일부로서 인코더를 포함할 수도 있다). 그리고 나서 컴퓨터 시스템(101)의 디스플레이 모듈(111)은 디스플레이(106) 상에 표시하기 위해, 인코딩된 프레임(들)을 디코딩할 수 있다.
일부 경우에 있어서, 컴퓨터 시스템(113)은 프레임이 대응하는 애플리케이션에 대해 상호작용성 상태를 결정할 수도 있다. 예를 들어, 컴퓨터 시스템(113)은 현재 대량의 상호작용성(예컨대, 사용자(105)가 버튼을 누르고/누르거나 조이스틱을 조종하고 있는 상태 등)이 있는지, 또는 현재 소량의 상호작용성(예컨대, 영화 시청중)이 있는지의 여부를 결정할 수 있다. 소정의 프레임에 대해 상호작용성이 결정되었다면, 보충 인코딩 명령어가 변경될 수도 있다. 이를테면, 보충 인코딩 명령어는 프레임 상의 관심 영역(예컨대, 도 6a의 프레임(601) 내의 602A)을 나타낼 수 있다. 상호작용성 상태가 고도로 액티브한 것으로 결정될 수도 있고, 이 경우에는 관심 영역의 사이즈가 축소될 수 있거나. 결정된 고도의 상호작용성 상태를 조정하기 위해 추가의 인코딩 비트의 수가 증가할 수도 있다. 마찬가지로, 상호작용성 상태가 낮다고 결정되면, 관심 영역은 사이즈가 증가할 수 있거나, 결정된 저 상호작용성 상태에 맞추어 추가 인코딩 비트의 수가 감소할 수도 있다. 이 경우에도, 보충 인코딩 명령어는 결정된 현재의 상호작용성 상태에 따라 변경될 수 있다.
또한, 보충 인코딩 명령어 자체는 결정된 상호작용성 상태에 종속될 수 있다. 이러한 경우에, 개발자는 관심 영역의 수가 상호작용성에 따라 달라질 수 있거나 또는 그 사이즈가 상호작용성에 따라 달라질 수 있거나 등등을 표시할 수 있다. 일부 경우에 있어서, 애플리케이션(비디오 게임 등)이 현재 고 상호작용성 상태에 있다고 결정되면, 고 품질 인코딩보다 저 레이턴시 인코딩이 우선될 수 있다. 또한 애플리케이션이 저 쌍방성 상태에 있는 것으로 결정되면, 저 레이턴시 인코딩보다 고 품질 인코딩이 우선될 수 있다. 상이한 인코딩 기술 또는 상이한 애플리케이션의 인코딩 비트도 고 상호작용성 또는 저 상호작용성 시나리오에 이용될 수 있다. 이런 식으로, 개발자는 보충 인코딩 명령어(117)가 변할 수 있거나 애플리케이션과의 결정된 레벨의 상호작용에 종속될 수 있는 것을 지정할 수 있다. 개발자는 도 4에 대해 이하에서 보여주는 바와 같이 애플리케이션에 프레임 정보(114)(즉, 힌트)를 추가할 수 있다.
도 4는 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 예시적인 방법(400)의 흐름도를 도시하고 있다. 이하, 환경(100)의 컴포넌트 및 데이터를 자주 참조하여 방법(400)에 대해 설명한다.
방법(400)은 애플리케이션의 하나 이상의 부분이 지정된 방식으로 인코딩되어야 한다는 표시를 수신하는 단계를 포함한다(단계 410). 예를 들면, 개발자 또는 다른 사용자(105)는 프레임 상의 다양한 관심 영역이 사용자에 의해 지정된 방식으로 인코딩되어야 하는 것을 표시할 수 있다. 사용자는 그 사용자로부터의 입력을 통해 컴퓨터 시스템(101)에 이 표시를 제공할 수 있다. 그런 다음 컴퓨터 시스템은 애플리케이션 코드(108)에 애플리케이션(107)에 추가하는데, 추가된 애플리케이션 코드는 애플리케이션 컨텐츠의 지정된 부분이 어떻게 인코딩되어야 하는지를 표시하는 정보(109)를 포함한다(단계 420). 이 정보(109)는 최종적으로 데이터 액세싱 모듈(115)에 제공되는 프레임 정보(114)와 유사하거나 동일할 수 있다. 그런 다음 컴퓨터 시스템(101)의 컴파일링 모듈(110)은 애플리케이션을 컴파일링하여, 실행시에, 컴파일링된 애플리케이션이 애플리케이션 컨텐츠의 지정 부분이 어떻게 인코딩되어야 하는지를 표시하는 정보를, 프로세서에 또는 애플리케이션 컨텐츠를 인코딩하도록 구성되는 제2 애플리케이션에 제공하게 한다(단계 430).
사용자(105)에 의해 제공된 정보(109)는 프레임 컨텐츠의 어떤 부분이 어떻게 인코딩되어야 하는지를 표시하는 힌트일 수도 있다. 이 힌트 정보는, 다른 애플리케이션(예컨대, 게임 엔진(507))이나 다른 프로세서(예컨대, 컴퓨터 시스템(113)의 103B))가 게임 코드에 액세스할 때에, 그 힌트 정보(109)가 게임 코드의 이미 일부가 되도록 애플리케이션의 코드에(예컨대, 비디오 게임의 코드에) 통합될 수도 있다. 그런 다음, 게임 엔진은 프레임 정보에 액세스하고 비디오 게임(또는 다른 애플리케이션 컨텐츠)을 개발자가 지정한 방식으로 인코딩할 수 있다. 개발자는 애플리케이션 컨텐츠의 다양한 부분이, 비디오 게임 컨텐츠에 기초하여, 프레임 내에서 일어나고 있는 어떤 것(예컨대, 어떤 카메라 이동, 또는 어떤 캐릭터 또는 어떤 움직임 등)에 기초하여, 또는 다른 인자에 기초하여, 동적으로 변해야 하는 것을 지정할 수 있다. 개발자는 화면의 어떤 영역이 게임, 영화 또는 애플리케이션 내의 그 포인트에서 보여질 가능성이 가장 높은지를 지정하고, 추가의 그리고/또는 상이한 유형의 프로세싱을 받아야 하는지를 지정할 수 있다.
따라서, 보충 인코딩 명령어에 응답하여 프레임을 인코딩하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 또한, 프레임에 대한 인코딩 정보를 제공하고, 인코딩 힌트를 포함하는 소프트웨어 코드를 컴파일링하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다.
여기에 설명하는 개념 및 특징은 그 기술적 사상 또는 설명하는 특성으로부터 벗어나지 않고서 다른 특정 형태로 구체화될 수도 있다. 설명한 실시형태들은 모든 면에 있어서 예시적인 것이며, 제한적이 아닌 것으로서 간주되어야 한다. 이에, 개시내용의 범주는 전술한 설명에 의해서가 아니라 첨부하는 청구범위에 의해서 정해진다. 청구범위의 균등물의 위미 및 범위 내에 있는 모든 변경은 그 범주 내에 포함되어야 한다.

Claims (10)

  1. 컴퓨터 실행 가능한 명령어를 포함하는 메모리를 포함한 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 수행되는 컴퓨터 구현 방법에 있어서,
    상기 컴퓨터 실행 가능한 명령어는 실행시, 상기 하나 이상의 프로세서로 하여금 상기 컴퓨터 구현 방법을 수행하게 하고, 상기 컴퓨터 구현 방법은, 하나 이상의 프레임 내의 관심 영역이 보다 효과적으로 표시되도록 비디오 데이터의 프레임 인코딩을 제어하는데 이용되며,
    상기 컴퓨터 구현 방법은,
    상기 하나 이상의 프로세서가, 데이터 액세싱 모듈을 시동시켜, 비디오 데이터의 스트림으로부터의 적어도 하나의 프레임과 연관된 프레임 정보의 하나 이상의 부분에, 그리고 상기 프레임 정보 내의 관심 영역에 대한 보충 인코딩 명령어(supplemental encoding instruction)의 필요를 표시하는데 이용되는 힌트 정보를 포함하는 상기 프레임 정보의 하나 이상의 부분 중 적어도 하나에 액세스하는 단계와,
    상기 하나 이상의 프로세서가, 상기 힌트 정보를 해석하는 데이터 해석 모듈을 시동시키는 단계와,
    이어서 상기 하나 이상의 프로세서가, 보충 인코딩 명령어에 따라 상기 프레임 정보 내의 관심 영역이 인코딩되도록, 상기 해석된 힌트 정보에 대한 보충 인코딩 명령어를 생성하는 단계와,
    상기 하나 이상의 프로세서가, 상기 보충 인코딩 명령어에 따라 상기 관심 영역을 인코딩하는 인코딩 모듈을 시동시키는 단계와,
    상기 인코딩 모듈이, 인코딩된 대로 상기 프레임 정보를 출력을 위해 디스플레이 모듈에 전송하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 프레임 정보는 상기 비디오 데이터의 스트림 내의 적어도 하나 프레임과 제1 프레임에 후속하는 적어도 하나의 프레임에 관한 컨텍스트를 제공하는 것인 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 프레임 정보는 하나 이상의 관심 영역에 대한 힌트 정보를 포함하는 것인 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 관심 영역 중 적어도 하나는 시간에 따라 동적으로 변하는 것인 컴퓨터 구현 방법.
  5. 제3항에 있어서, 상기 힌트 정보에는, 현재의 프레임 상에서, 뷰어(viewer)가 보고 있을 가능성이 가장 높은 곳의 표시(indication)가 제공되는 것인 컴퓨터 구현 방법.
  6. 제3항에 있어서, 상기 힌트 정보에는, 비디오 게임의 비디오 게임 컨텐츠와 연관된 현재의 카메라 이동의 표시가 제공되는 것인 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 비디오 게임은 분할 화면 모드로 동작하고 있고, 프레임 정보는 상기 분할 화면의 각 레벨마다 제공되는 것인 컴퓨터 구현 방법.
  8. 제6항에 있어서, 상기 프레임 정보는 강화되어야 하는 헤드업 디스플레이(heads-up display, HUD) 정보의 하나 이상의 부분을 표시하는 것인 컴퓨터 구현 방법.
  9. 하나 이상의 프레임 내의 관심 영역이 보다 효과적으로 표시되도록 비디오 데이터의 프레임 인코딩을 제어하는데 이용되는 컴퓨터 아키텍처를 구비한 컴퓨터 시스템에 있어서,
    상기 컴퓨터 시스템은,
    하나 이상의 프로세서와,
    컴퓨터 실행 가능한 명령어를 포함하는 메모리
    를 포함하고,
    상기 컴퓨터 실행 가능한 명령어는, 실행시에, 상기 하나 이상의 프로세서로 하여금, 하나 이상의 프레임 내의 관심 영역이 보다 효과적으로 표시되도록 비디오 데이터의 프레임 인코딩을 제어하는데 이용되는 상기 컴퓨터 아키텍처를 구현하는 컴퓨터 구현 방법을 수행하게 하고,
    상기 아키텍처에 의해 제공되는 상기 컴퓨터 구현 방법은,
    상기 하나 이상의 프로세서가, 데이터 액세싱 모듈을 시동시켜, 비디오 데이터의 스트림으로부터의 적어도 하나의 프레임과 연관된 프레임 정보의 하나 이상의 부분에, 그리고 상기 프레임 정보 내의 관심 영역에 대한 보충 인코딩 명령어의 필요를 표시하는데 이용되는 힌트 정보를 포함하는 상기 프레임 정보의 하나 이상의 부분 중 적어도 하나에 액세스하는 단계와,
    상기 하나 이상의 프로세서가, 상기 힌트 정보를 해석하는 데이터 해석 모듈을 시동시키는 단계와,
    이어서 상기 하나 이상의 프로세서가, 보충 인코딩 명령어에 따라 상기 프레임 정보 내의 관심 영역이 인코딩되도록, 상기 해석된 힌트 정보에 대한 보충 인코딩 명령어를 생성하는 단계와,
    상기 하나 이상의 프로세서가, 상기 보충 인코딩 명령어에 따라 상기 관심 영역을 인코딩하는 인코딩 모듈을 시동시키는 단계와,
    상기 인코딩 모듈이, 인코딩된 대로 상기 프레임 정보를 출력을 위해 디스플레이 모듈에 전송하는 단계
    를 포함하는 것인 컴퓨터 시스템.
  10. 컴퓨터 실행 가능한 명령어를 포함한 컴퓨터 판독 가능한 매체가 포함되는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 실행 가능한 명령어는, 실행시에, 컴퓨팅 시스템의 하나 이상의 프로세서로 하여금 컴퓨터 구현 방법을 수행하게 하고, 상기 컴퓨터 구현 방법은, 하나 이상의 프레임 내의 관심 영역이 보다 효과적으로 표시되도록 비디오 데이터의 프레임 인코딩을 제어하는데 이용되며,
    상기 컴퓨터 구현 방법은,
    상기 하나 이상의 프로세서가, 애플리케이션의 일부로서 제공된 비디오 데이터의 스트림으로부터의 적어도 하나의 프레임과 연관된 프레임 정보의 하나 이상의 부분에, 그리고 상기 프레임 정보 내의 관심 영역에 대한 보충 인코딩 명령어의 필요를 표시하는데 이용되는 힌트 정보를 포함하는 상기 프레임 정보의 하나 이상의 부분 중 적어도 하나에 액세스하는 단계와,
    상기 하나 이상의 프로세서가, 상기 힌트 정보를 해석하는 데이터 해석 모듈을 시동시키는 단계와,
    이어서 상기 하나 이상의 프로세서가, 보충 인코딩 명령어에 따라 상기 프레임 정보 내의 관심 영역이 인코딩되도록, 상기 해석된 힌트 정보에 대한 보충 인코딩 명령어를 생성하는 단계와,
    상기 하나 이상의 프로세서가, 상기 보충 인코딩 명령어에 따라 상기 관심 영역을 인코딩하는 인코딩 모듈을 시동시키는 단계와,
    상기 인코딩 모듈이, 인코딩된 대로 상기 프레임 정보를 출력을 위해 디스플레이 모듈에 전송하는 단계
    를 포함하는 컴퓨터 프로그램 제품.
KR1020167031202A 2014-04-11 2015-04-06 비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩 KR20160143778A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/250,542 2014-04-11
US14/250,542 US20150296215A1 (en) 2014-04-11 2014-04-11 Frame encoding using hints
PCT/US2015/024411 WO2015157135A2 (en) 2014-04-11 2015-04-06 Frame encoding using hints

Publications (1)

Publication Number Publication Date
KR20160143778A true KR20160143778A (ko) 2016-12-14

Family

ID=52829494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031202A KR20160143778A (ko) 2014-04-11 2015-04-06 비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩

Country Status (10)

Country Link
US (1) US20150296215A1 (ko)
EP (1) EP3130146A2 (ko)
JP (1) JP2017517921A (ko)
KR (1) KR20160143778A (ko)
CN (1) CN106163624A (ko)
AU (1) AU2015244103A1 (ko)
CA (1) CA2943391A1 (ko)
MX (1) MX2016013371A (ko)
RU (1) RU2016139473A (ko)
WO (1) WO2015157135A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101322A1 (ko) * 2021-11-30 2023-06-08 삼성전자 주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치
US11997326B2 (en) 2021-11-30 2024-05-28 Samsung Electronics Co., Ltd. Method of streaming image content between server and electronic device, server for streaming image content, and electronic device for streaming image content

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3301915A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for omnidirectional video coding with adaptive intra most probable modes
RU2752723C2 (ru) * 2017-04-21 2021-07-30 Зенимакс Медиа Инк. Системы и способы для рендеринга и выдачи подсказок кодеру на основании оценки предварительно кодированной нагрузки
US10594901B2 (en) * 2017-11-17 2020-03-17 Ati Technologies Ulc Game engine application direct to video encoder rendering
US11290515B2 (en) 2017-12-07 2022-03-29 Advanced Micro Devices, Inc. Real-time and low latency packetization protocol for live compressed video data
CN109806596B (zh) * 2019-03-20 2023-04-07 网易(杭州)网络有限公司 游戏画面显示方法与装置、存储介质、电子设备
US11539960B2 (en) * 2019-10-01 2022-12-27 Sony Interactive Entertainment Inc. Game application providing scene change hint for encoding at a cloud gaming server
US11395963B2 (en) 2019-10-01 2022-07-26 Sony Interactive Entertainment Inc. High speed scan-out of server display buffer for cloud gaming applications
US11020661B2 (en) 2019-10-01 2021-06-01 Sony Interactive Entertainment Inc. Reducing latency in cloud gaming applications by overlapping reception and decoding of video frames and their display
US11344799B2 (en) 2019-10-01 2022-05-31 Sony Interactive Entertainment Inc. Scene change hint and client bandwidth used at encoder for handling video frames after a scene change in cloud gaming applications
US11865434B2 (en) 2019-10-01 2024-01-09 Sony Interactive Entertainment Inc. Reducing latency in cloud gaming applications by overlapping receive and decode of video frames and their display at the client
US11833419B2 (en) * 2020-03-16 2023-12-05 Tencent America LLC Method and apparatus for cloud gaming
US11652863B2 (en) 2020-03-16 2023-05-16 Tencent America LLC Method and apparatus for cloud gaming
CN114062988B (zh) * 2020-07-31 2023-09-22 上海联影医疗科技股份有限公司 磁共振波谱成像方法、装置、计算机设备和存储介质
EP4350683A1 (en) * 2021-10-20 2024-04-10 Samsung Electronics Co., Ltd. Display apparatus and controlling method thereof

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665872B1 (en) * 1999-01-06 2003-12-16 Sarnoff Corporation Latency-based statistical multiplexing
AU780811B2 (en) * 2000-03-13 2005-04-21 Sony Corporation Method and apparatus for generating compact transcoding hints metadata
US20050108026A1 (en) * 2003-11-14 2005-05-19 Arnaud Brierre Personalized subtitle system
US8705614B2 (en) * 2005-04-04 2014-04-22 Broadcom Corporation Motion estimation using camera tracking movements
US9063952B2 (en) * 2006-07-31 2015-06-23 Ricoh Co., Ltd. Mixed media reality recognition with image tracking
JP5157329B2 (ja) * 2007-08-31 2013-03-06 株式会社セガ ゲーム装置
US8151215B2 (en) * 2008-02-07 2012-04-03 Sony Corporation Favorite GUI for TV
US20100034466A1 (en) * 2008-08-11 2010-02-11 Google Inc. Object Identification in Images
US20110235706A1 (en) * 2010-03-25 2011-09-29 Texas Instruments Incorporated Region of interest (roi) video encoding
EP2645713A1 (en) * 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
US20140038141A1 (en) * 2012-07-31 2014-02-06 Wms Gaming, Inc. Using mobile devices in wagering game environments
US9070050B2 (en) * 2012-12-20 2015-06-30 Rovi Guides, Inc. Methods and systems for customizing a plenoptic media asset
US20150133214A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Video encoding based on areas of interest
US20150248722A1 (en) * 2014-03-03 2015-09-03 Swell, Inc. Web based interactive multimedia system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101322A1 (ko) * 2021-11-30 2023-06-08 삼성전자 주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치
US11997326B2 (en) 2021-11-30 2024-05-28 Samsung Electronics Co., Ltd. Method of streaming image content between server and electronic device, server for streaming image content, and electronic device for streaming image content

Also Published As

Publication number Publication date
RU2016139473A (ru) 2018-04-10
CA2943391A1 (en) 2015-10-15
CN106163624A (zh) 2016-11-23
WO2015157135A3 (en) 2015-12-03
JP2017517921A (ja) 2017-06-29
EP3130146A2 (en) 2017-02-15
AU2015244103A1 (en) 2016-10-06
MX2016013371A (es) 2017-01-26
US20150296215A1 (en) 2015-10-15
WO2015157135A2 (en) 2015-10-15

Similar Documents

Publication Publication Date Title
KR20160143778A (ko) 비디오 게임에 있어서 관심 영역에 따른 힌트를 이용한 비디오 코딩
US12011660B2 (en) Augmenting video games with add-ons
JP7273068B2 (ja) マルチサーバクラウド仮想現実(vr)ストリーミング
US10306180B2 (en) Predictive virtual reality content streaming techniques
CN112385241B (zh) 以基于景深的多层结构的vr媒体内容生成的装置及方法
US11565178B2 (en) User interface rendering and post processing during video game streaming
US20180199041A1 (en) Altering streaming video encoding based on user attention
JP6310073B2 (ja) 描画システム、制御方法、及び記憶媒体
US10537799B1 (en) User interface rendering and post processing during video game streaming
US8403757B2 (en) Method and apparatus for providing gaming services and for handling video content
US10792566B1 (en) System for streaming content within a game application environment
US8805773B2 (en) Minimizing latency in network program through transfer of authority over program assets
CN112054986A (zh) 动态分配计算资源以在云游戏系统中生成亮点
TWI750676B (zh) 用於圖形處理之資產感知計算架構
US9497238B1 (en) Application control translation
US11986731B2 (en) Dynamic adjustment of in-game theme presentation based on context of game activity
US20240207731A1 (en) Dynamic encoding parameters for low latency streaming
US20240115957A1 (en) Systems and methods for applying a modification microservice to a game instance
US20240033619A1 (en) Impaired player accessability with overlay logic providing haptic responses for in-game effects