KR20210126753A - 가변 엔드-포인트 사용자 인터페이스 렌더링 - Google Patents

가변 엔드-포인트 사용자 인터페이스 렌더링 Download PDF

Info

Publication number
KR20210126753A
KR20210126753A KR1020217030285A KR20217030285A KR20210126753A KR 20210126753 A KR20210126753 A KR 20210126753A KR 1020217030285 A KR1020217030285 A KR 1020217030285A KR 20217030285 A KR20217030285 A KR 20217030285A KR 20210126753 A KR20210126753 A KR 20210126753A
Authority
KR
South Korea
Prior art keywords
rendering
endpoint device
control components
resolution
components
Prior art date
Application number
KR1020217030285A
Other languages
English (en)
Other versions
KR102571776B1 (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 KR1020237028725A priority Critical patent/KR20230128408A/ko
Publication of KR20210126753A publication Critical patent/KR20210126753A/ko
Application granted granted Critical
Publication of KR102571776B1 publication Critical patent/KR102571776B1/ko

Links

Images

Classifications

    • 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/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • A63F13/537Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
    • 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/32Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
    • 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/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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
    • H04N21/234363Processing 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 by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • 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
    • H04N21/23439Processing 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 for generating different versions
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4318Generation of visual interfaces for content selection or interaction; Content or additional data rendering by altering the content in the rendering process, e.g. blanking, blurring or masking an image region
    • 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/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6547Transmission by server directed to the client comprising parameters, e.g. for client setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Physics & Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

결합형 사용자 인터페이스(UI)의 별개의 컴포넌트들을 렌더링하기 위한 방법들 및 시스템들이 본 명세서에 설명되어 있다. 프로세싱 디바이스는 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 UI 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신한다. 프로세싱 디바이스는 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하고, 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하며, 제1 스트림은 제1 해상도로 인코딩되고, 비디오 콘텐츠 컴포넌트들의 렌더링은 엔드포인트 디바이스에서 결합형 UI로 UI 제어 컴포넌트들의 렌더링과 병합되고, 결합형 UI는 제2 해상도를 갖는다.

Description

가변 엔드-포인트 사용자 인터페이스 렌더링
본 개시내용의 양태들은 일반적으로 사용자 인터페이스 렌더링에 관한 것으로, 더 구체적으로는, 결합형 사용자 인터페이스(combined user interface)의 별개의 컴포넌트들을 별도로 렌더링하는 것에 관한 것이다.
스트리밍된 콘텐츠는 사용자 인터페이스(user interface)(UI)를 통해 사용자 디바이스 상에 제시될 수 있다. UI는 비디오 콘텐츠 컴포넌트 및 UI 제어 컴포넌트를 포함할 수 있다. 예를 들어, 온라인 게임을 위한 UI는 게임의 라이브 콘텐츠를 제시하는 게임플레이 컴포넌트, 및 게임에 대한 정보를 제시하고 게임 시청자들 및/또는 참가자들이 게임과 상호 작용할 수 있게 하는 제어들을 제공하는 게임 제어 컴포넌트를 포함할 수 있다.
통상적으로, 스트리밍된 콘텐츠 UI의 비디오 콘텐츠 컴포넌트와 UI 제어 컴포넌트는 서버에서 함께 렌더링되어 하나의 비디오 스트림을 생성한 다음, 하나의 해상도로 인코딩되어 사용자 디바이스로 송신된다. 인코딩에 사용되는 해상도는 대개 사용자 디바이스에 의해 지원되는 최대 해상도(예를 들어, 4096x4096)이다.
아래의 요약은 본 개시내용의 일부 양태들에 대한 기본적인 이해를 제공하기 위한 본 개시내용의 단순화된 요약이다. 이 요약은 본 개시내용에 대한 광범위한 개요가 아니다. 이것은 본 개시내용의 핵심 또는 중요한 요소들을 식별하거나 본 개시내용의 특정 실시예들의 임의의 범위 또는 청구범위의 임의의 범위를 기술하는 것으로 의도되지 않는다. 이것의 유일한 목적은 나중에 제시되는 더 상세한 설명에 대한 서문으로서 단순화된 형태로 본 개시내용의 일부 개념들을 제시하는 것이다.
본 개시내용의 일부 양태들에 따르면, 서버에서, 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(user interface)(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하는 단계; 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하는 단계; 및 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하는 단계 - 제1 스트림은 제1 해상도로 인코딩되고, 비디오 콘텐츠 컴포넌트들의 렌더링은 엔드포인트 디바이스에서 결합형 UI로 UI 제어 컴포넌트들의 렌더링과 병합되고, 결합형 UI는 제2 해상도를 가짐 - 를 포함하는 방법이 제공된다.
본 개시내용의 다른 양태들에 따르면, 서버에서, 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하는 단계; 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하는 단계; 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하는 단계 - 제1 스트림은 제1 해상도로 인코딩됨 -; UI 제어 컴포넌트들의 렌더링을 서버에서 생성할지 또는 엔드포인트 디바이스에서 생성할지를 결정하는 단계; UI 제어 컴포넌트들의 렌더링을 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 엔드포인트 디바이스로 송신하는 단계 - UI 제어 컴포넌트들의 렌더링은 제1 해상도 또는 제2 해상도를 가짐 -; 및 UI 제어 컴포넌트들의 렌더링을 서버에서 생성하기로 결정하는 것에 응답하여, 서버에서, UI 제어 컴포넌트들의 렌더링을 생성하기 위해 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하는 단계; 및 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 엔드포인트 디바이스로 송신하는 단계를 포함하는 방법이 제공된다.
임의적으로, 방법은, 서버에서, UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들의 세트를 실행하는 단계; 및 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 엔드포인트 디바이스로 송신하는 단계 - 제2 스트림은 제2 해상도로 인코딩됨 - 를 포함할 수 있다. 방법은 제2 해상도로 엔드포인트 디바이스에서 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 엔드포인트 디바이스로 송신하는 단계를 포함할 수 있다. 방법은 UI 제어 컴포넌트들의 렌더링을 서버에서 생성할지 또는 엔드포인트 디바이스에서 생성할지를 결정하는 단계; UI 제어 컴포넌트들의 렌더링을 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 엔드포인트 디바이스로 송신하는 단계 - UI 제어 컴포넌트들의 렌더링은 제2 해상도를 가짐 -; 및 UI 제어 컴포넌트들의 렌더링을 서버에서 생성하기로 결정하는 것에 응답하여, 서버에서, UI 제어 컴포넌트들의 렌더링을 생성하기 위해 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하는 단계; 및 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 엔드포인트 디바이스로 송신하는 단계를 포함할 수 있다. 제2 해상도는 제1 해상도보다 더 높고, 비디오 콘텐츠 컴포넌트의 렌더링은 엔드포인트 디바이스에서 UI 제어 컴포넌트들의 제2 해상도와 매칭되도록 수정될 수 있다. 커맨드들의 세트를 서버에서 실행할지 또는 엔드포인트 디바이스에서 실행할지를 결정하는 것은 엔드포인트 디바이스의 하드웨어 능력, 엔드포인트 디바이스의 해상도, 결합형 UI의 타겟 해상도, 서버의 렌더링 능력, 또는 네트워크 상에서 이용 가능한 대역폭 중 적어도 하나에 기초할 수 있다. 결합형 UI는 비디오 콘텐츠 컴포넌트들을 통해 온라인 게임을 제시하고, UI 제어 컴포넌트들을 통해 게임에 대한 정보를 제시하고 게임에 관한 사용자 입력을 수신할 수 있다.
본 개시내용의 일부 양태들에 따르면, 메모리 및 메모리에 커플링되는 프로세싱 디바이스를 포함하는 시스템이 제공된다. 프로세싱 디바이스는 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하고, 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하고, 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하도록 - 제1 스트림은 제1 해상도로 인코딩되고, 비디오 콘텐츠 컴포넌트들의 렌더링은 엔드포인트 디바이스에서 결합형 UI로 UI 제어 컴포넌트들의 렌더링과 병합되고, 결합형 UI는 제2 해상도를 가짐 - 구성된다.
본 개시내용의 다른 양태들에 따르면, 메모리 및 메모리에 커플링되는 프로세싱 디바이스를 포함하는 시스템이 제공된다. 프로세싱 디바이스는 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하고, 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하고, 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하고 - 제1 스트림은 제1 해상도로 인코딩됨 -, UI 제어 컴포넌트들의 렌더링을 서버에서 생성할지 또는 엔드포인트 디바이스에서 생성할지를 결정하고, UI 제어 컴포넌트들의 렌더링을 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 엔드포인트 디바이스로 송신하고 - UI 제어 컴포넌트들의 렌더링은 제1 해상도 또는 제2 해상도를 가짐 -, UI 제어 컴포넌트들의 렌더링을 서버에서 생성하기로 결정하는 것에 응답하여, 서버에서, UI 제어 컴포넌트들의 렌더링을 생성하기 위해 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하고, UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 엔드포인트 디바이스로 송신하도록 구성된다.
본 개시내용의 일부 양태들에 따르면, 프로세싱 디바이스에 의해 실행될 때, 프로세싱 디바이스로 하여금, 위에서 설명된 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 판독 가능 매체가 제공된다.
본 개시내용의 임의의 양태에 따라 위에서 또는 임의의 특정 실시예들과 관련하여 아래에서 정의되는 개별 특징들 및/또는 특징들의 조합들은 임의의 다른 양태 또는 실시예에서 단독으로 또는 임의의 다른 정의되는 특징과 조합하여 별도로 및 개별적으로 활용될 수 있다. 또한, 본 개시내용은 방법과 관련하여 본 명세서에서 설명되는 임의의 특징을 수행하도록 구성되는 장치 및/또는 본 명세서에서 설명되는 임의의 장치 특징을 사용 또는 생성, 사용 또는 제조하는 방법을 포함하도록 의도된다.
본 개시내용은 유사한 참조들이 유사한 요소들을 나타내는 첨부 도면들의 도면에서 제한이 아니라 예로서 예시된다. 본 개시내용에서 "하나의"("an" 또는 "one") 실시예에 대한 상이한 참조들은 반드시 동일한 실시예를 가질 필요는 없으며, 이러한 참조들은 적어도 하나를 의미한다는 점에 유의해야 한다.
도 1은 본 개시내용의 일부 양태들에 따른, 별개의 컴포넌트들을 갖는 결합형 사용자 인터페이스를 제공하기 위한 시스템 아키텍처의 예를 예시한다.
도 2는 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 예시적인 방법의 흐름도를 예시한다.
도 3은 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 다른 예시적인 방법의 흐름도를 예시한다.
도 4는 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 또 다른 예시적인 방법의 흐름도를 예시한다.
도 5는 본 개시내용의 하나 이상의 양태에 따라 동작하는 컴퓨팅 디바이스의 예시적인 블록도를 예시한다.
다음 개시내용은 본 개시내용의 여러 실시예들의 양호한 이해를 제공하기 위해 특정 시스템들, 컴포넌트들, 방법들 등의 예들과 같은 다수의 특정 세부사항들을 제시한다. 그러나, 본 개시내용의 적어도 일부 실시예들은 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다. 다른 사례들에서, 널리 공지된 컴포넌트들 또는 방법들은 본 개시내용을 불필요하게 모호하게 하는 것을 피하기 위해 상세하게 설명되지 않거나 또는 간단한 블록도 포맷으로 제시된다. 따라서, 제시된 특정 세부사항들은 단지 예들에 불과하다. 특정 구현들은 이러한 예시적인 세부사항들과 다를 수 있으며, 여전히 본 개시내용의 범위 내에 있는 것으로 고려된다.
본 개시내용의 구현들에 의해 다루어지는 기술적인 문제는 콘텐츠를 엔드포인트 디바이스로 스트리밍하는 것은 많은 양의 네트워크 대역폭을 요구할 수 있다는 것이다. 예를 들어, 콘텐츠가 4K 해상도로 엔드포인트 디바이스로 스트리밍되고 있는 경우, 사용자에게 콘텐츠의 선명한 디스플레이를 보장할 수 있을 만큼 충분히 높은 해상도로 콘텐츠 스트림을 송신하는 데에는 많은 양의 네트워크 대역폭이 사용될 수 있다. 콘텐츠가 더 낮은 해상도로 엔드포인트 디바이스로 송신되고 있는 경우, 스트리밍된 콘텐츠의 일부는 선명하지 않을 수 있고, 사용자가 시청 경험을 완전히 즐기지 못할 수 있다. 따라서, 해상도와 네트워크에 대한 요구(예를 들어, 필요한 대역폭) 사이의 절충을 달성하는 것이 필요할 수 있다.
스트리밍된 콘텐츠는 다수의 컴포넌트들(상이한 타입들의 UI 컴포넌트들)을 포함할 수 있는 UI를 통해 제시될 수 있다. 해당 컴포넌트들에 대한 사용자의 인식이 상이할 수 있기 때문에, 사용자에게 전체 콘텐츠의 선명한 디스플레이를 보장하기 위해 다수의 컴포넌트들이 동일한 해상도로 스트리밍될 필요가 없을 수 있다. 예를 들어, 사용자는 엔드포인트 디바이스로 스트리밍되는 온라인 게임을 시청하고/하거나 이에 참여하기를 원할 수 있다. 온라인 게임은 비디오 콘텐츠 컴포넌트 및 UI 제어 컴포넌트를 포함할 수 있다. 사용자는 비디오 콘텐츠 컴포넌트들과 같은 특정 컴포넌트들이 더 낮은 해상도로 스트리밍되는 것은 인지하지 못할 수 있지만, UI 제어 컴포넌트들과 같은 다른 컴포넌트들이 더 낮은 해상도로 스트리밍되는 것은 인지할 수 있을 것이다. 그러나, 종래에는, 비디오 콘텐츠 컴포넌트들과 UI 제어 컴포넌트들이 함께 렌더링되어 하나의 비디오 스트림을 생성한 다음, 하나의 디스플레이 해상도로 인코딩되어 엔드포인트 디바이스로 송신된다. 이러한 제한으로 인해 사용자가 콘텐츠의 선명한 디스플레이를 즐기는 데 필요한 것보다 더 높은 해상도로 비디오 콘텐츠 컴포넌트들이 인코딩된다. 따라서, 많은 양의 네트워크 대역폭뿐만 아니라, 더 높은 해상도 콘텐츠를 프로세싱하는 데 사용되는 컴퓨팅 자원들 및 전력들도 낭비된다. 이 문제에 대한 한 가지 대안은 콘텐츠 스트림을 더 낮은 해상도로 인코딩하여 네트워크 대역폭, 컴퓨팅 자원들 및 전력 비용들을 절약하는 것이다. 그러나, 사용자가 UI 제어 컴포넌트들의 낮은 해상도를 인지할 수 있기 때문에, 사용자가 게임 경험을 완전히 즐기지 못할 수 있다.
추가적으로, UI 제어 컴포넌트들은 비디오 콘텐츠 컴포넌트들보다 덜 빈번하게 업데이트 및/또는 변경될 수 있다. 그러나, 종래에는 비디오 콘텐츠 컴포넌트들과 UI 제어 컴포넌트들이 함께 렌더링되기 때문에, UI 제어 컴포넌트들이 결합형 UI 비디오 스트림의 생성시 불필요하게 다시 렌더링될 수 있다. 이로 인해 또한 많은 양의 네트워크 대역폭 및/또는 컴퓨팅 자원이 낭비된다.
따라서, 본 개시내용의 구현들은 UI 제어 컴포넌트들과 별도로 비디오 콘텐츠 컴포넌트들을 스트리밍하고 비디오 콘텐츠 컴포넌트들 및 UI 제어 컴포넌트들을 렌더링할 위치 및/또는 방법을 결정하는 것을 제공한다. 서버는 엔드포인트 디바이스의 하드웨어 능력, 엔드포인트 디바이스의 최대 해상도, 결합형 UI의 타겟 해상도, 서버의 렌더링 능력, 및 네트워크 상에서 이용 가능한 대역폭 중 적어도 하나에 기초하여 이러한 결정을 내릴 수 있다. 이러한 팩터들에 기초하여, 서버는 비디오 콘텐츠 컴포넌트들 및 UI 제어 컴포넌트들을 (1) 서버에서 함께; (2) 서버에서 별도로 - UI 제어 컴포넌트들이 더 높은 디스플레이 해상도로 인코딩됨 -; 또는 (3) 별도로 - 비디오 콘텐츠 컴포넌트들은 서버에서 렌더링되고 UI 제어 컴포넌트들은 엔드포인트 디바이스에서 렌더링됨 - 렌더링하도록 결정할 수 있다.
따라서, 기술적 효과는 사용자가 콘텐츠 스트리밍 경험을 완전히 즐길 수 있도록 비디오 콘텐츠 컴포넌트들과 UI 제어 컴포넌트들을 별도로 스트리밍하고 적절한 해상도들을 사용하는 것을 포함할 수 있다. 예를 들어, 사용자가 온라인 게임 스트리밍을 요청하는 경우, UI 제어 컴포넌트는 더 높은 해상도를 사용하여 스트리밍되어 사용자에게 UI 제어 컴포넌트들의 선명한 디스플레이를 제공할 수 있는 반면, 비디오 콘텐츠 컴포넌트들은 더 낮은 해상도를 사용하여 스트리밍될 수 있으며, 사용자가 이를 인지할 가능성은 없거나 적어도 인지할 가능성이 더 낮을 것이다. 상이한 컴포넌트들을 적절한 해상도들로 스트리밍함으로써, 콘텐츠를 사용자에게 스트리밍하는 데 필요한 네트워크 대역폭이 줄어들고 렌더링된 콘텐츠를 프로세싱하는 데 필요한 컴퓨팅 자원들 및 전력도 줄어들게 된다. 따라서, 해상도와 네트워크에 대한 요구 사이의 절충이 완화될 수 있다.
엔드포인트 디바이스에서 UI 제어 커맨드들을 렌더링하기 위한 커맨드들의 스트림을 송신하는 것은 UI 제어 커맨드들의 렌더링을 송신하는 것보다 더 적은 대역폭을 필요로 하기 때문에, UI 제어 컴포넌트들이 엔드포인트 디바이스 상에서 렌더링되는 경우, 대역폭 사용이 추가로 감소된다. 또한, 현재 기술에 의해 일반적으로 요구되는 바와 같이, UI 제어 컴포넌트들에 대한 변경들이 서버에 왔다갔다 송신될 필요가 없을 것이기 때문에, 대역폭 사용 또한 감소된다. 엔드포인트 디바이스가 렌더링 커맨드들의 세트를 포함하는 경우, 엔드포인트 디바이스는 디바이스 상에서 사용자에 대한 UI 제어 컴포넌트들을 얼마나 종종 변경할 것인지에 대한 결정을 내릴 수 있다.
도 1은 본 개시내용의 구현들에 따른, 별개의 컴포넌트들을 갖는 결합형 사용자 인터페이스를 제공하기 위한 시스템 아키텍처(100)의 예를 예시한다. 시스템 아키텍처(100)는 엔드포인트 디바이스들(110A 내지 110Z), 하나 이상의 네트워크(105), 하나 이상의 서버(106), 하나 이상의 전자 디바이스(170), 및 하나 이상의 플랫폼(예를 들어, 콘텐츠 공유 플랫폼(120), 추천 플랫폼(157), 광고 플랫폼(165), 모바일 플랫폼(150), 소셜 네트워크 플랫폼(160), 검색 플랫폼(145), 콘텐츠 제공자 플랫폼(195), 및 협업 플랫폼(155))을 포함한다. 플랫폼들은 하나 이상의 컴퓨팅 디바이스(예컨대, 랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인용 컴퓨터, 메인프레임 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 데스크탑 컴퓨터 등) 및 하나 이상의 데이터 저장소(예를 들어, 하드 디스크들, 메모리들 및 데이터베이스들)를 포함할 수 있으며, 하나 이상의 네트워크(105)에 커플링될 수 있다.
하나 이상의 네트워크(105)는 하나 이상의 공용 네트워크(예를 들어, 인터넷), 하나 이상의 사설 네트워크(예를 들어, 근거리 네트워크(local area network)(LAN) 또는 하나 이상의 광역 네트워크(wide area network)(WAN)), 하나 이상의 유선 네트워크(예를 들어, 이더넷 네트워크), 하나 이상의 무선 네트워크(예를 들어, 802.11 네트워크 또는 Wi-Fi 네트워크), 하나 이상의 셀룰러 네트워크(예를 들어, 롱 텀 에볼루션(Long Term Evolution)(LTE) 네트워크), 라우터들, 허브들, 스위치들, 서버 컴퓨터들 및/또는 이들의 조합을 포함할 수 있다. 일 구현에서, 아키텍처(100)의 일부 컴포넌트들은 서로 직접 연결되지 않는다. 일 구현에서, 아키텍처(100)는 별도의 네트워크들(105)을 포함한다.
하나 이상의 데이터 저장소(도시 생략)는 메모리(예를 들어, 랜덤 액세스 메모리), 캐시, 드라이브들(예를 들어, 하드 드라이브), 플래시 드라이브들 등에 상주할 수 있으며, 하나 이상의 데이터베이스 시스템, 하나 이상의 파일 시스템 또는 데이터를 저장할 수 있는 다른 타입의 컴포넌트 또는 디바이스의 일부일 수 있다. 하나 이상의 데이터 저장소는 또한 다수의 컴퓨팅 디바이스들(예를 들어, 다수의 서버 컴퓨터들)에 걸쳐 있을 수 있는 다수의 스토리지 컴포넌트들(예를 들어, 다수의 드라이브들 또는 다수의 데이터베이스들)을 포함할 수 있다. 데이터 저장소는 데이터를 저장할 수 있는 영구 스토리지일 수 있다. 영구 스토리지는 로컬 스토리지 유닛 또는 원격 스토리지 유닛, 전자 스토리지 유닛들(메인 메모리) 또는 유사한 스토리지 유닛일 수 있다. 영구 스토리지는 모놀리식 디바이스 또는 분산형 디바이스 세트일 수 있다. 본 명세서에서 사용될 때, '세트'는 임의의 양의 정수개의 아이템들을 지칭한다.
콘텐츠 아이템들(121)(예를 들어, 미디어 콘텐츠 아이템들)은 하나 이상의 데이터 저장소 상에 저장될 수 있다. 데이터 저장소들은 하나 이상의 플랫폼의 일부일 수 있다. 콘텐츠 아이템(121)의 예들은 디지털 비디오, 디지털 영화들, 애니메이션 이미지들, 디지털 사진들, 디지털 음악, 디지털 오디오, 디지털 비디오 게임들, 협업 미디어 콘텐츠 프리젠테이션들, 웹사이트 콘텐츠, 소셜 미디어 업데이트들, 전자 책들(이북들), 전자 잡지들, 디지털 신문들, 디지털 오디오 북들, 전자 저널들, 웹 블로그들, RSS(real simple syndication) 피드들, 전자 만화책들, 소프트웨어 애플리케이션들 등을 포함할 수 있으며, 이에 제한되지 않는다. 콘텐츠(121)는 또한 미디어 아이템으로도 지칭된다. 콘텐츠 아이템들(121)은 사전-기록되거나 라이브-스트리밍될 수 있다. 간결함과 단순함을 위해, 온라인 비디오 게임(이하, 게임으로도 지칭됨)은 이 문서 전체에 걸쳐 콘텐츠 아이템(121)의 예로서 사용될 수 있다.
콘텐츠 아이템들(121)은 콘텐츠 제공자들에 의해 제공될 수 있다. 콘텐츠 제공자는 사용자, 회사, 조직 등이 될 수 있다. 콘텐츠 제공자는 비디오 게임들인 콘텐츠 아이템들(121)을 제공할 수 있다. 예를 들어, 콘텐츠 아이템(121)은 게임 퍼블리셔에 의해 제공되는 비디오 게임일 수 있다. 다른 예에서, 콘텐츠 아이템(121)은 미디어 콘텐츠 제공자에 의해 제공되는 협업 미디어 콘텐츠 프리젠테이션일 수 있다.
엔드포인트 디바이스들(110A-110Z)은 텔레비전들, 스마트폰들, 셀룰러 전화들, 개인 휴대 정보 단말기(personal digital assistant)(PDA)들, 휴대용 미디어 플레이어들, 넷북들, 랩탑 컴퓨터들, 전자 책 리더들, 태블릿 컴퓨터들, 데스크탑 컴퓨터들, 셋탑 박스들, 게임 콘솔들 등과 같은 디바이스들을 포함할 수 있다.
개별 엔드포인트 디바이스들(110A-110Z)은 통신 애플리케이션(115)을 포함할 수 있다. 콘텐츠 아이템(121)은 통신 애플리케이션(115), 인터넷 등을 통해 소비될 수 있다. 본 명세서에서 사용되는 바와 같이, "미디어", "미디어 아이템", "온라인 미디어 아이템", "디지털 미디어", "디지털 미디어 아이템", "콘텐츠", "미디어 콘텐츠 아이템" 및 "콘텐츠 아이템"은 콘텐츠 아이템을 제시하도록 구성되는 소프트웨어, 펌웨어 또는 하드웨어를 사용하여 실행되거나 로드될 수 있는 전자 파일을 포함할 수 있다. 일 구현에서, 통신 애플리케이션들(115)은 사용자들이 플랫폼(예를 들어, 콘텐츠 공유 플랫폼(120), 추천 플랫폼(157), 광고 플랫폼(165), 모바일 플랫폼(150), 소셜 네트워크 플랫폼(160), 검색 플랫폼(145), 협업 플랫폼(155), 및 콘텐츠 제공자 플랫폼(195)), 및/또는 플랫폼들 및/또는 네트워크들의 조합을 통해 콘텐츠 아이템들(121)(예를 들어, 게임들)을 작성, 전송 및 수신할 수 있게 하는 애플리케이션들일 수 있다.
예를 들어, 통신 애플리케이션(115)은 소셜 네트워킹 애플리케이션, 비디오 공유 애플리케이션, 비디오 스트리밍 애플리케이션, 비디오 게임 스트리밍 애플리케이션, 주문형 비디오(video on demand) 애플리케이션, 사진 공유 애플리케이션, 채팅 애플리케이션, 콘텐츠 제공자의 모바일 애플리케이션, 또는 이러한 애플리케이션들의 임의의 조합일 수 있다. 엔드포인트 디바이스(110A-110Z)의 통신 애플리케이션(115)은 하나 이상의 사용자에게 하나 이상의 콘텐츠 아이템(121)(예를 들어, 게임)을 렌더링, 디스플레이 및/또는 제시할 수 있다. 예를 들어, 통신 애플리케이션(115)은 비디오 콘텐츠를 수신 및/또는 재생하기 위해 엔드포인트 디바이스(110A-110Z) 상에 디스플레이될 하나 이상의 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 제공할 수 있다.
일 구현에서, 통신 애플리케이션(115)은 검색 컴포넌트(114) 및 콘텐츠 뷰어(113)를 포함할 수 있고, 가상 키보드를 통해 미디어 콘텐츠 아이템들을 검색하는 데 사용될 수 있고 사용자 인터페이스(116)의 콘텐츠 뷰어(113) 부분에 콘텐츠 아이템들(121)을 재생할 수 있는 사용자 인터페이스(116)를 제공할 수 있다. 콘텐츠 뷰어(113)는 콘텐츠 아이템들(121)(예를 들어, 비디오 게임들)을 하나 이상의 사용자에게 렌더링, 디스플레이 및/또는 제시할 수 있다. 일 구현에서, 콘텐츠 뷰어(113)는 애플리케이션(예를 들어, 통신 애플리케이션(115))에 임베딩된다. 다른 구현에서, 콘텐츠 뷰어(113)는 사용자들이 비디오들, 이미지들, 문서들(예를 들어, 웹 페이지들) 등과 같은 콘텐츠 아이템들(121)을 소비(예를 들어, 재생, 디스플레이)할 수 있게 하는 통신 애플리케이션(115)과 같은 독립형 애플리케이션(예를 들어, 모바일 애플리케이션, 데스크탑 애플리케이션, 게임 콘솔 애플리케이션, 텔레비전 애플리케이션 등)일 수 있다. 예를 들어, 콘텐츠 뷰어(113)는 플랫폼의 웹 서버에 의해 서빙되는 콘텐츠(예를 들어, 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language)(HTML) 페이지들과 같은 웹 페이지들, 디지털 미디어 아이템들 등)에 액세스하고/하거나, 이를 리트리브, 제시 및/또는 탐색할 수 있는 웹 브라우저일 수 있다. 다른 예에서, 콘텐츠 뷰어(113)는 문서(예를 들어, 사용자 인터페이스(116)(웹 페이지))에 임베딩되는 임베딩형 미디어 플레이어(예를 들어, Flash® 플레이어 또는 HTML5 플레이어)를 디스플레이할 수 있다.
콘텐츠 뷰어(113)는 서버 및/또는 플랫폼에 의해 엔드포인트 디바이스들(110A-110Z)에 제공될 수 있다. 예를 들어, 콘텐츠 뷰어들(113)은 콘텐츠 공유 플랫폼(120) 또는 콘텐츠 제공자 플랫폼(195)에 의해 제공되는 사용자 인터페이스들(116)(예를 들어, 문서들(웹 페이지들) 또는 독립형 애플리케이션의 스크린들)에 임베딩되는 임베딩형 미디어 플레이어들일 수 있다. 다른 예에서, 콘텐츠 뷰어들(113)은 플랫폼(예를 들어, 콘텐츠 공유 플랫폼(120), 추천 플랫폼(157), 광고 플랫폼(165), 모바일 플랫폼(150), 소셜 네트워크 플랫폼(160), 검색 플랫폼(145), 협업 플랫폼(155), 및 콘텐츠 제공자 플랫폼(195))으로부터 다운로드되는 애플리케이션들일 수 있다. 다른 예에서, 콘텐츠 뷰어들(113)은 엔드포인트 디바이스들(110A-110Z) 상에 사전-설치되는 독립형 애플리케이션들일 수 있다.
전자 디바이스(170)는 방향 키 입력들을 엔드포인트 디바이스(110A-110Z)에 전달할 수 있는 임의의 적절한 전자 디바이스일 수 있다. 예를 들어, 전자 디바이스(170)는 원격 제어기(remote controller), 게임 제어기, 스마트폰, 태블릿 등을 포함할 수 있다. 전자 디바이스(170)는 상, 하, 좌, 우 및 엔터(선택)에 대응하는 키들을 포함하는 물리적 또는 가상의 방향 패드("D-패드")(175)를 포함할 수 있다. 전자 디바이스(170)는 사용자가 키들 또는 방향 패드(175) 중 하나 이상을 누를 때 키 입력 선택들을 수신할 수 있다. 전자 디바이스(170)는 검색 컴포넌트(114)를 실행하는 하나 이상의 프로세서에 의한 프로세싱을 위해 키 입력들을 엔드포인트 디바이스(110A-110Z)로 송신할 수 있다.
일부 실시예들에서, 엔드포인트 디바이스(110A-110Z)는 하나 이상의 데이터 저장소를 포함할 수 있다. 이 예에서, 데이터 저장소(들)는 결합형 UI를 렌더링하기 위한 커맨드를 포함할 수 있다. 커맨드들은 비디오 콘텐츠 컴포넌트 및 UI 제어 컴포넌트를 렌더링하기 위한 명령어들을 포함할 수 있다. 일 구현에서, 커맨드들은 UI 제어 컴포넌트를 렌더링하기 위한 명령어들을 포함할 수 있고, 비디오 콘텐츠 컴포넌트는 다른 곳에서 (예를 들어, 제3자를 통해) 렌더링될 수 있다. UI 제어 컴포넌트를 렌더링하기 위한 커맨드들은 커맨드들이 UI 제어 컴포넌트를 렌더링하기 위한 것이라는 명시적 표시를 포함할 수 있다. 개발자 및/또는 퍼블리셔는 커맨드들을 생성할 때 커맨드들이 UI 제어 컴포넌트를 렌더링하기 위한 것임을 명시적으로 나타낼 수 있다.
하나 이상의 서버(106)는 랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인용 컴퓨터, 메인프레임 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 데스크탑 컴퓨터 등과 같은 컴퓨팅 디바이스들을 포함할 수 있으며, 하나 이상의 네트워크(105)에 커플링될 수 있다. 하나 이상의 서버(106)는 독립적인 디바이스들 또는 플랫폼들(예를 들어, 콘텐츠 공유 플랫폼(120), 추천 플랫폼(157), 광고 플랫폼(165), 모바일 플랫폼(150), 소셜 네트워크 플랫폼(160), 검색 플랫폼(145), 콘텐츠 제공자 플랫폼(195), 및 협업 플랫폼(155)) 중 임의의 것의 일부일 수 있다. 서버(들)(106)는 렌더링 컴포넌트(122)를 포함할 수 있다. 렌더링 컴포넌트(122)는 UI 제어 컴포넌트가 엔드포인트 디바이스(110A-110Z) 상의 사용자에게 프리젠테이션을 위해 렌더링될 위치를 결정할 수 있다. 엔드포인트 디바이스(110A-110Z) 상의 콘텐츠 아이템에 액세스하는 사용자는 콘텐츠 아이템에 액세스하기 위한 요청을 송신할 수 있다. 요청은 엔드포인트 디바이스의 능력들에 관한 정보를 포함할 수 있다. 예를 들어, 요청은 하나 이상의 비디오 스트림을 디스플레이하기 위한 엔드포인트 디바이스의 능력에 관한 정보, 및/또는 사용자에게 제시되는 콘텐츠 아이템이 인코딩될 수 있는 최대 해상도에 관한 정보를 포함할 수 있다. 렌더링 컴포넌트(122)는 요청에 포함된 정보를 분석하고, UI 제어 컴포넌트들의 렌더링을 서버(106)에서 생성할지 또는 엔드포인트 디바이스(110A-110Z)에서 생성할지를 결정할 수 있다. 렌더링 컴포넌트(122)가 UI 제어 컴포넌트들을 서버(106)에서 렌더링하기로 결정하는 경우, 렌더링 컴포넌트(122)는 UI 제어 컴포넌트들을 비디오 콘텐츠 컴포넌트의 렌더링과 함께 렌더링할지, 또는 비디오 콘텐츠 컴포넌트의 렌더링과 별도로 렌더링할지 추가로 결정할 수 있다.
콘텐츠 제공자 플랫폼(195)은 서비스 제공자의 서비스를 제공할 수 있다. 예를 들어, 콘텐츠 제공자는 사용자들이 콘텐츠 제공자 플랫폼(195)을 통해 엔드포인트 디바이스들(110A-110Z) 상에서 온라인 비디오 게임과 상호 작용하도록 통신 애플리케이션을 통해 온라인 비디오 게임을 생성하는 비디오 게임 스트리밍 서비스 제공자일 수 있다. 다른 예에서, 콘텐츠 제공자는 사용자들이 콘텐츠 제공자 플랫폼(195)을 통해 엔드포인트 디바이스들(110A-110Z) 상에서 비디오들, TV 쇼들, 비디오 클립들, 오디오, 오디오 클립들 및 영화들을 재생하도록 통신 애플리케이션(115)을 통해 미디어 스트리밍 서비스를 생성하는 비디오 스트리밍 서비스 제공자일 수 있다.
소셜 네트워크 플랫폼(160)은 온라인 소셜 네트워킹 서비스를 제공할 수 있다. 소셜 네트워킹 플랫폼(160)은 사용자들이 프로파일들을 생성하고 그들의 프로파일로 활동을 수행하기 위한 통신 애플리케이션(115)을 제공할 수 있다. 활동은 프로파일 업데이트, 다른 사용자들과 메시지들 교환, 상태 업데이트들, 사진들, 비디오들 등의 평가(예를 들어, 좋아요, 댓글, 공유, 추천), 및 다른 사용자들 활동에 대한 알림들 수신을 포함할 수 있다.
모바일 플랫폼(150)은 사용자들이 하나 이상의 모바일 디바이스(예를 들어, 전화, 태블릿 컴퓨터, 랩탑 컴퓨터, 웨어러블 컴퓨팅 디바이스 등) 및/또는 임의의 다른 적절한 디바이스를 사용하여 서로 연결하고/하거나, 정보를 공유하고/하거나, 상호 작용할 수 있게 하는 데 사용될 수 있다. 예를 들어, 모바일 플랫폼(150)은 전화 통신, SMS(Short Message Service) 메시징, MMS(Multimedia Message Service) 메시징, 텍스트 채팅, 및/또는 사용자들 사이의 임의의 다른 통신을 가능하게 할 수 있다. 모바일 플랫폼(150)은 비디오 메시징, 비디오 채팅, 및/또는 비디오 컨퍼런스들을 통해 사용자 통신을 지원할 수 있다.
협업 플랫폼(155)은, 예를 들어, 비디오 스트리밍 또는 VoIP(voice over IP) 기술들, 셀룰러 기술들, LAN 및/또는 WAN 기술들을 사용하여 (예를 들어, 디바이스들(110A-110Z)의 사용자 사이에서의) 비디오 채팅, 비디오 메시징, 및 오디오 및/또는 비디오 컨퍼런스들과 같은 협업 서비스들을 가능하게 할 수 있으며, 개인 엔터테인먼트, 비즈니스, 교육 또는 학문 지향 상호 작용들에 사용될 수 있다.
추천 플랫폼(157)은 콘텐츠 추천들(예를 들어, 기사들, 비디오들, 포스트들, 뉴스들, 게임들 등)을 생성하고 제공하는 데 사용될 수 있다.
검색 플랫폼(145)은 사용자들이 하나 이상의 데이터 저장소(106) 및/또는 하나 이상의 플랫폼에 쿼리하고 쿼리 결과들을 수신하게 하는 데 사용될 수 있다.
광고 플랫폼(165)은 비디오 광고들을 제공하는데 사용될 수 있다.
콘텐츠 공유 플랫폼(120)은 콘텐츠 아이템들(121)에 대한 액세스를 하나 이상의 사용에 제공하고/하거나, 콘텐츠 아이템들(121)을 하나 이상의 사용자에게 제공하는 데 사용될 수 있다. 예를 들어, 콘텐츠 공유 플랫폼(120)은 사용자들이 콘텐츠 아이템들(121)을 소비, 업로드, 다운로드, 및/또는 검색하도록 허용할 수 있다. 다른 예에서, 콘텐츠 공유 플랫폼(120)은 사용자들이 콘텐츠 아이템들(121)에 대한 승인("좋아요"), 비승인("싫어요"), 추천, 공유, 등급 지정, 및/또는 댓글과 같이 콘텐츠 아이템들(121)을 평가하도록 허용할 수 있다. 다른 예에서, 콘텐츠 공유 플랫폼(120)은 사용자들이 콘텐츠 아이템들(121)을 편집하도록 허용할 수 있다. 콘텐츠 공유 플랫폼은 또한 하나 이상의 사용자에게, 예를 들어, 엔드포인트 디바이스들(110A-110Z)을 통해 콘텐츠 아이템들(121)에 대한 액세스를 제공하는 데 사용될 수 있는 웹사이트(예를 들어, 하나 이상의 웹페이지) 및/또는 하나 이상의 애플리케이션(예를 들어, 통신 애플리케이션(115))을 포함할 수 있다. 콘텐츠 공유 플랫폼(120)은 콘텐츠 아이템들(121)에 대한 액세스를 제공하는 임의의 타입의 콘텐츠 전달 네트워크를 포함할 수 있다.
콘텐츠 공유 플랫폼(120)은 다수의 채널들(예를 들어, 채널 A(125) 내지 채널 Z(129))을 포함할 수 있다. 채널은 공통 소스로부터 이용 가능한 데이터 콘텐츠 또는 공통 주제 또는 테마를 갖는 데이터 콘텐츠일 수 있다. 데이터 콘텐츠는 사용자에 의해 선택된 디지털 콘텐츠, 사용자에 의해 이용 가능한 디지털 콘텐츠, 사용자에 의해 업로드된 디지털 콘텐츠, 콘텐츠 제공자에 의해 선택된 디지털 콘텐츠, 방송사에 의해 선택된 디지털 콘텐츠 등일 수 있다. 예를 들어, 채널 A(125)는 비디오들 Y 및 Z를 포함할 수 있다. 채널은 채널 상에서 액션들을 수행할 수 있는 사용자인 소유자와 연관될 수 있다. 데이터 콘텐츠는 하나 이상의 콘텐츠 아이템(121)일 수 있다. 채널들의 데이터 콘텐츠는 사전-기록되거나 또는 라이브-스트리밍될 수 있다. 채널들이 콘텐츠 공유 플랫폼의 일 구현으로서 설명되지만, 본 개시내용의 구현들은 채널 모델을 통해 콘텐츠 아이템들(121)을 제공하는 콘텐츠 공유 플랫폼으로 제한되지 않는다.
도 2 내지 도 4는 본 개시내용의 다양한 양태들에 따라 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하는 예시적인 방법들을 예시한다. 설명의 간편함을 위해, 방법들은 일련의 동작들로서 도시되고 설명된다. 그러나, 본 개시내용에 따른 동작들은 다양한 순서들로 및/또는 동시에, 그리고 본 명세서에서 제시 및 설명되지 않은 다른 동작들과 함께 발생할 수 있다. 또한, 모든 예시된 동작들이 개시된 대상에 따라 방법들을 구현하는 데 필요한 것은 아닐 수 있다. 또한, 본 기술분야의 통상의 기술자는 방법들이 상태 다이어그램 또는 이벤트들을 통해 일련의 상호 관련된 상태들로서 대안적으로 표현될 수 있다는 것을 이해하고 인식할 것이다. 또한, 본 명세서에서 개시되는 방법들은 이러한 방법들을 컴퓨팅 디바이스들로 전송하고 전달하는 것을 용이하게 하기 위해 제조물 상에 저장될 수 있다는 것이 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 제조물이라는 용어는 임의의 컴퓨터 판독 가능 디바이스 또는 저장 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하도록 의도된다.
더욱이, 다양한 동작들은 각각의 시스템 다이어그램들과 관련하여 위에서 상세하게 설명되었다. 이전 도면들에서의 이러한 동작들의 상세한 설명은 다음 방법들에 따라 구현 가능할 수 있고 구현 가능하도록 의도된다는 것이 이해되어야 한다.
방법들은 하드웨어(회로망, 전용 로직 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법들의 일부 또는 모든 동작들은 도 1의 서버(들)(106)에 의해 수행될 수 있다.
도 2를 참조하면, 흐름도는 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 예시적인 방법(200)을 예시한다. 블록(210)에서, 사용자 인터페이스를 통해 제시될 미디어 아이템에 대한 사용자 요청이 수신될 수 있다. 사용자 요청은 미디어 아이템이 제시될 엔드포인트 디바이스에 관한 정보를 포함할 수 있다. 일 구현에서, 사용자 요청은 엔드포인트 디바이스의 능력들에 관한 정보를 포함할 수 있다. 예를 들어, 사용자 요청은 하나 이상의 비디오 스트림을 디스플레이하기 위한 엔드포인트 디바이스의 능력에 관한 정보를 포함할 수 있다. 사용자 요청은 엔드포인트 디바이스에 의해 지원되는 바와 같이 사용자에게 제시될 미디어 아이템을 인코딩하는 데 사용될 수 있는 최대 해상도에 관한 정보를 추가로 포함할 수 있다.
사용자 인터페이스를 통해 제시될 미디어 아이템에 대한 사용자 요청에 응답하여, 서버는 사용자 인터페이스가 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 UI 제어 컴포넌트를 포함하는 결합형 사용자 인터페이스라고 결정할 수 있다. 비디오 콘텐츠 컴포넌트(들)는 비디오(예를 들어, 라이브 비디오, 이전에 업로드된 비디오, 3D 비디오 등)의 재생을 제공할 수 있다. UI 제어 컴포넌트(들)는 비디오에 대한 정보(예를 들어, 비디오의 제목, 비디오의 현재 재생되는 부분의 부제목, 비디오의 현재 재생되는 부분에 대한 해설 등)를 제시할 수 있으며, (예를 들어, 비디오의 하나 이상의 후속 부분에 대한 콘텐츠 변경 또는 비디오의 하나 이상의 후속 부분의 재생 시퀀스 변경을 생성할 수 있는 데이터를 입력하거나, 관련 지리적 위치에 대한 정보 또는 묘사된 캐릭터들 또는 객체들에 대한 정보와 같이 비디오의 현재 재생되는 부분에 대한 정보를 요청하거나, 기타 등등을 위해) 사용자가 비디오에 관한 입력을 제공할 수 있게 한다. 일 구현에서, 요청된 미디어 아이템은 엔드포인트 디바이스로 스트리밍될 온라인 게임일 수 있다. 이러한 구현에서, 비디오 콘텐츠 컴포넌트(들)는 게임플레이 컴포넌트(또한, 게임 세계 컴포넌트로도 지칭됨)를 포함할 수 있고, UI 제어 컴포넌트들은 게임 또는 게임 내의 캐릭터들에 대한 정보(예를 들어, 게임의 제목, 게임의 현재 재생되는 부분의 부제목, 게임의 현재 재생되는 부분에 대한 해설 등)를 제시하는 게임 UI 컴포넌트들을 포함할 수 있으며, (예를 들어, 게임의 하나 이상의 후속 부분에 대한 캐릭터들 또는 액션들의 변경 또는 후속 게임플레이의 시퀀스의 변경을 생성할 수 있는 데이터를 입력하거나, 관련 지리적 위치에 대한 정보 또는 묘사된 캐릭터들 또는 객체들에 대한 정보와 같이 게임플레이의 현재 재생되는 부분에 대한 정보를 요청하거나, 기타 등등을 위해) 사용자가 게임에 관한 입력을 제공할 수 있게 한다.
사용자 인터페이스가 비디오 콘텐츠 컴포넌트(들) 및 UI 제어 컴포넌트(들)를 포함하는 결합형 사용자 인터페이스라고 결정하면, 서버는 UI 제어 컴포넌트(들)의 렌더링과 별도로 비디오 콘텐츠 컴포넌트(들)의 렌더링을 생성할 수 있다. 서버는 결합형 사용자 인터페이스를 통해 제시되어야 하는 각각의 요청된 미디어 아이템에 대해 그렇게 할 수 있거나, 또는 대안적으로, 서버는 (예를 들어, 도 4와 관련하여 아래에서 더 상세하게 논의되는 바와 같이, 요청에 포함된 정보에 기초하여) 그렇게 할 것인지에 대한 결정을 내릴 수 있다.
블록(220)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링이 생성될 수 있다. 비디오 콘텐츠 컴포넌트(들)의 렌더링은 그래픽들을 렌더링하기 위한 메커니즘을 사용하여 생성될 수 있다. 일 구현에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링은 그래픽 프로세싱 유닛(graphics processing unit)(GPU) 상의 그래픽 렌더링 파이프라인에서의 동작들을 수행함으로써 생성될 수 있다. 다른 구현에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링은 중앙 프로세싱 유닛(central processing unit)(CPU) 또는 그래픽 렌더링 유닛(또한, 렌더 출력 유닛(render output unit)으로도 지칭됨) 상의 소프트웨어 렌더링 파이프라인에서의 동작들을 수행함으로써 생성될 수 있다. 또 다른 구현에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링은 렌더링을 생성하기 위해 가속도계와 통신하는 그래픽 애플리케이션 프로그래밍 인터페이스(application programming interface)(API)를 호출함으로써 개시될 수 있다.
결합형 UI의 UI 제어 컴포넌트(들)의 렌더링을 생성하기 위해, 서버는 UI 제어 컴포넌트(들)를 렌더링하기 위한 커맨드들의 세트를 식별한다. 이러한 커맨드들은 미리 (예를 들어, 소프트웨어 개발자 또는 비디오 콘텐츠 퍼블리셔에 의해) 제공되고, 서버에 의해 액세스 가능한 데이터 저장소에 저장될 수 있다. 블록(230)에서, 상기 커맨드들의 세트가 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 실행될 수 있다. 일 구현에서, UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들의 세트는 결합형 UI가 개발될 때 소프트웨어 개발자에 의해 명시적으로 지정될 수 있다. 다른 구현에서, 커맨드들의 세트는 제3자로부터 수신될 수 있고, 제3자는 커맨드들의 세트를 UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들로서 명시적으로 지정할 수 있다. 또 다른 구현에서, 커맨드들의 세트는 다수의 제3자들로부터 수신된 다수의 커맨드들의 세트들을 포함할 수 있다. 이러한 구현에서, 제3자들은 커맨드들의 세트를 UI 제어 컴포넌트(들)의 일부의 렌더링을 생성하기 위한 커맨드들로서 명시적으로 나타낼 수 있다.
블록(240)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링을 포함하는 제1 스트림 및 UI 제어 컴포넌트(들)의 렌더링을 포함하는 제2 스트림이 엔드포인트 디바이스로 송신될 수 있다. 일 구현에서, 제1 스트림 및 제2 스트림은 상이한 디스플레이 해상도들로 인코딩될 수 있다. 특히, 제2 스트림은 제1 스트림보다 더 높은 디스플레이 해상도로 인코딩될 수 있다. 예를 들어, 제2 스트림은 엔드포인트 디바이스에 의해 지원되는 최대 해상도로 인코딩될 수 있고, 제1 스트림은 엔드포인트 디바이스에 의해 지원되는 최대 해상도보다 더 작은 해상도로 인코딩될 수 있다.
엔드포인트 디바이스는 제1 스트림 및 제2 스트림을 수신할 수 있다. 엔드포인트 디바이스는 제2 스트림이 제1 스트림보다 더 높은 해상도로 인코딩되는 것으로 결정할 수 있고, 제2 스트림의 해상도와 매칭되도록 (예를 들어, 샘플링 레이트를 증가시키기 위해 제1 스트림의 원래 샘플들 사이에 0의 값 샘플들을 삽입함으로써) 제1 스트림에 대해 업샘플링 기술을 사용할 수 있다. 엔드포인트 디바이스는 제1 스트림 및 제2 스트림을 사용자에게 제시할 수 있다. 일 구현에서, 엔드포인트 디바이스는 사용자에게 제1 스트림 및 제2 스트림이 하나의 미디어 아이템으로서 제시되도록 제1 스트림을 오버레이하는 것으로서 제2 스트림을 제시할 수 있다.
도 3은 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 다른 샘플 방법의 흐름도를 예시한다. 블록(310)에서, 사용자 인터페이스를 통해 제시될 미디어 아이템에 대한 사용자 요청이 수신될 수 있다. 블록(310)은 도 2의 블록(210)과 유사할 수 있다.
사용자 인터페이스를 통해 제시될 미디어 아이템에 대한 사용자 요청에 응답하여, 서버는 사용자 인터페이스가 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 UI 제어 컴포넌트를 포함하는 결합형 사용자 인터페이스인 것으로 결정할 수 있다. 사용자 인터페이스가 비디오 콘텐츠 컴포넌트(들) 및 UI 제어 컴포넌트(들)를 포함하는 결합형 사용자 인터페이스인 것으로 결정하면, 서버는 비디오 콘텐츠 컴포넌트(들)의 렌더링을 생성할 수 있고, (엔드포인트 디바이스에 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 제공함으로써) 엔드포인트 디바이스에 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 지시할 수 있다. 서버는 결합형 사용자 인터페이스를 통해 제시되어야 하는 각각의 요청된 미디어 아이템에 대해 그렇게 할 수 있거나, 또는 대안적으로, 서버는 (예를 들어, 도 4와 관련하여 아래에서 더 상세하게 논의되는 바와 같이, 요청에 포함된 정보에 기초하여) 그렇게 할 것인지에 대한 결정을 내릴 수 있다.
블록(320)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링이 도 2와 관련하여 위에서 더 상세하게 논의된 바와 같이 생성될 수 있다.
블록(330)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링을 포함하는 제1 스트림이 엔드포인트 디바이스로 송신될 수 있다. 일 구현에서, 제1 스트림은 엔드포인트 디바이스에 의해 지원되는 최대 해상도보다 더 작은 해상도로 인코딩될 수 있다. 대안적으로, 제1 스트림은 엔드포인트 디바이스에 의해 지원되는 최대 해상도로 인코딩될 수 있다.
블록(340)에서, 커맨드들의 세트가 제1 비디오 스트림의 비디오 콘텐츠 컴포넌트(들)와 연관된 UI 제어 컴포넌트(들)를 렌더링하기 위해 엔드포인트 디바이스로 송신될 수 있다. 일 구현에서, UI 제어 컴포넌트(들)의 렌더링을 생성하기 위한 커맨드들의 세트는 결합형 UI가 개발될 때 개발자에 의해 명시적으로 나타내어질 수 있다. 다른 구현에서, 커맨드들의 세트는 제3자로부터 수신될 수 있고, 제3자는 커맨드들의 세트를 UI 제어 컴포넌트(들)의 렌더링을 생성하기 위한 커맨드들로서 명시적으로 지정할 수 있다. 또 다른 구현에서, 커맨드들의 세트는 다수의 제3자들로부터 수신된 다수의 커맨드들의 세트들을 포함할 수 있다. 이러한 구현에서, 제3자들은 커맨드들의 세트를 UI 제어 컴포넌트(들)의 일부의 렌더링을 생성하기 위한 커맨드들로서 명시적으로 나타낼 수 있다.
일 구현에서, UI 제어 컴포넌트(들)를 렌더링하기 위한 제2 커맨드들의 세트가 UI 제어 컴포넌트(들)를 렌더링하기 위한 초기 커맨드들의 세트에 기초하여 생성될 수 있다. 제2 커맨드들의 세트는 UI 제어 컴포넌트(들)를 렌더링하기 위한 상위 레벨 명령어들을 포함할 수 있다. 예를 들어, 제2 커맨드들의 세트는 UI 제어 컴포넌트를 렌더링하기 위한 상위 레벨 명령어를 포함할 수 있는 반면, 초기 커맨드들의 세트는 UI 제어 컴포넌트를 실제로 렌더링하는 데 필요한 정보와 함께 특정 명령어들을 포함할 수 있다. 일 구현에서, 제2 커맨드들의 세트가 초기 커맨드들의 세트 대신에 엔드포인트 디바이스로 송신될 수 있다. 제2 커맨드들의 세트를 사용하여, 엔드포인트 디바이스는 UI에 포함되어야 하는 UI 제어의 타입을 결정할 수 있고, 렌더링을 생성하기 위해 이 특정 타입의 UI 제어에 대해 로컬로 저장된 명령어들을 사용할 수 있다.
엔드포인트 디바이스는 제1 스트림 및 UI 제어 컴포넌트(들)의 렌더링을 생성하기 위한 커맨드들의 세트를 수신할 수 있다. 엔드포인트 디바이스는 수신된 커맨드들의 세트를 실행하고, UI 제어 컴포넌트(들)의 렌더링을 생성할 수 있다. 일 구현에서, 엔드포인트 디바이스는 엔드포인트 디바이스의 최대 해상도와 매칭되도록 제1 스트림에 대해 업샘플링 기술을 사용할 수 있다. 대안적으로, 제1 스트림은 UI 제어 컴포넌트(들)를 렌더링하는 데 사용되는 것과 동일한 해상도로 인코딩될 수 있으며, 이는 커맨드들을 송신하는 것이 UI 제어 컴포넌트(들)의 렌더링을 송신하는 것보다 더 적은 대역폭 및 컴퓨팅 자원들을 필요로 하기 때문에 대역폭 사용의 측면에서 여전히 유리할 것이다.
엔드포인트 디바이스는 제1 스트림 및 UI 제어 컴포넌트들의 렌더링들을 사용자에게 제시할 수 있다. 예를 들어, 엔드포인트 디바이스는 사용자에게 제1 스트림 및 UI 제어 컴포넌트들이 하나의 미디어 아이템으로서 제시되도록 제1 스트림을 오버레이하는 것으로서 UI 제어 컴포넌트들의 렌더링을 제시할 수 있다.
도 4는 본 개시내용의 일부 양태들에 따른, 결합형 사용자 인터페이스를 엔드포인트 디바이스에 제공하기 위한 또 다른 샘플 방법의 흐름도를 예시한다. 블록(410)에서, 결합형 사용자 인터페이스를 통해 제시될 미디어 아이템에 대한 사용자 요청이 수신될 수 있다. 결합형 사용자 인터페이스는 하나 이상의 비디오 콘텐츠 컴포넌트, 및 하나 이상의 UI 제어 컴포넌트를 포함할 수 있다. 일 구현에서, 요청된 미디어 아이템은 엔드포인트 디바이스로 스트리밍될 게임일 수 있다. 이러한 구현에서, 비디오 콘텐츠 컴포넌트(들)는 게임 컴포넌트(들)(또한, 게임 세계 컴포넌트(들)로도 지칭됨)를 포함할 수 있고, UI 제어 컴포넌트(들)는 게임 UI 컴포넌트(들)를 포함할 수 있다. 일 구현에서, 사용자 입력은 UI 제어 컴포넌트(들)를 통해 수신될 수 있다.
사용자 요청은 미디어 아이템이 제시될 엔드포인트 디바이스에 관한 정보를 포함할 수 있다. 일 구현에서, 사용자 요청은 엔드포인트 디바이스의 능력들에 관한 정보를 포함할 수 있다. 예를 들어, 사용자 요청은 하나 이상의 비디오 스트림을 디스플레이하기 위한 엔드포인트 디바이스의 능력에 관한 정보를 포함할 수 있다. 사용자 요청은 사용자에게 제시된 미디어 아이템이 인코딩될 수 있는 최대 해상도에 관한 정보를 추가로 포함할 수 있다.
블록(415)에서, UI 제어 컴포넌트(들)의 렌더링을 서버에서(예를 들어, 도 1을 참조하여 설명된 플랫폼에서) 생성할지 또는 엔드포인트 디바이스에서 생성할지가 결정될 수 있다. 일 구현에서, UI 제어 컴포넌트(들)의 렌더링을 생성할지에 대한 결정은 엔드포인트 디바이스의 하드웨어 능력, 엔드포인트 디바이스의 해상도, 결합형 UI의 타겟 해상도, 서버의 렌더링 능력, 또는 네트워크(예를 들어, 도 1의 네트워크(105)) 상에서 이용 가능한 대역폭 중 적어도 하나에 기초할 수 있다.
일 구현에서, UI 제어 컴포넌트(들)의 렌더링을 서버에서 생성할지가 결정될 수 있다. 예를 들어, 엔드포인트 디바이스가 낮은 프로세싱 능력을 갖는 경우, UI 제어 컴포넌트들의 렌더링을 서버에서 생성하도록 결정될 수 있다. UI 제어 컴포넌트들의 렌더링을 서버에서 생성하는 것으로 결정되는 경우, 방법(400)은 블록(420)으로 계속될 수 있다.
블록(420)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 함께 UI 제어 컴포넌트(들)의 렌더링을 생성할지가 결정될 수 있다. 일 구현에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 함께 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다. 예를 들어, 엔드포인트 디바이스가 한번에 사용에 하나의 비디오 스트림을 디스플레이할 수 있는 경우, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 함께 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다. 다른 예에서, 엔드포인트 디바이스가 낮은 최대 해상도를 갖는 경우, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 함께 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다.
비디오 콘텐츠 컴포넌트(들)의 렌더링과 함께 UI 제어 컴포넌트(들)의 렌더링을 생성하는 것으로 결정되는 경우, 방법(400)은 블록(425)으로 계속될 수 있다. 블록(425)에서, 비디오 콘텐츠 컴포넌트(들) 및 UI 제어 컴포넌트(들)의 렌더링이 결합형 UI의 렌더링으로서 생성될 수 있다. 일 구현에서, 도 2를 참조하여 위에서 논의된 바와 같이, 결합형 UI의 렌더링은 그래픽들을 렌더링하는 데 사용되는 임의의 방법을 통해 생성될 수 있다. 다른 구현에서, 도 2를 참조하여 위에서 논의된 바와 같이, 결합형 UI의 렌더링은 GPU 상의 그래픽 렌더링 파이프라인에서 수행되는 동작들에 의해 생성될 수 있다. 또 다른 구현에서, 도 2를 참조하여 위에서 논의된 바와 같이, 결합형 UI의 렌더링은 CPU 또는 그래픽 렌더링 유닛 상의 소프트웨어 렌더링 파이프라인에서 수행되는 동작들에 의해 생성될 수 있다. 또 다른 구현에서, 도 2를 참조하여 위에서 논의된 바와 같이, 결합형 UI는 그래픽 API를 사용하여 렌더링될 수 있다.
블록(430)에서, 제1 스트림이 엔드포인트 디바이스로 송신될 수 있다. 제1 스트림은 블록(425)에서 생성된 결합형 UI의 렌더링을 포함할 수 있다. 엔드포인트 디바이스는 제1 스트림을 사용자에게 제시할 수 있다.
일 구현에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 별도로 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다. 예를 들어, 엔드포인트 디바이스가 사용자에게 동시에 다수의 비디오 스트림들을 디스플레이할 수 있는 경우, 비디오 제어 컴포넌트(들)의 렌더링과 별도로 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다. 다른 예에서, 엔드포인트 디바이스가 제시할 수 있는 최대 해상도로 비디오 콘텐츠 컴포넌트(들) 및 UI 제어 컴포넌트들의 렌더링을 포함하는 단일 스트림을 송신하기 위한 많은 양의 네트워크 대역폭이 없는 경우, 비디오 제어 컴포넌트(들)의 렌더링과 별도로 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다.
블록(420)에서, 비디오 콘텐츠 컴포넌트(들)의 렌더링과 별도로 UI 제어 컴포넌트(들)의 렌더링을 생성하는 것으로 결정되는 경우, 방법(400)은 블록(435)으로 계속될 수 있다. 블록(435)에서, 도 2를 참조하여 위에서 논의된 바와 같이, 비디오 콘텐츠 컴포넌트(들)의 렌더링이 생성될 수 있다. 비디오 콘텐츠 컴포넌트(들)의 렌더링은 제1 비디오 스트림에 포함될 수 있다. 일 구현에서, 제1 비디오 스트림은 엔드포인트 디바이스가 제시할 수 있는 최대 해상도보다 더 작은 해상도로 인코딩될 수 있다.
블록(440)에서, 도 2를 참조하여 위에서 논의된 바와 같이, UI 제어 컴포넌트(들)의 렌더링을 생성하기 위한 커맨드들의 세트가 실행될 수 있다.
UI 제어 컴포넌트(들)의 렌더링은 제2 스트림에 포함될 수 있다. 일 구현에서, 제2 스트림은 엔드포인트가 제시할 수 있는 최대 해상도로 인코딩될 수 있다. 일 구현에서, 제2 스트림은 제1 스트림의 해상도보다 더 높은 해상도로 인코딩될 수 있다.
블록(445)에서, 제1 스트림 및 제2 스트림이 엔드포인트 디바이스로 송신될 수 있다. 제1 스트림은 비디오 콘텐츠 컴포넌트(들)의 렌더링을 포함할 수 있다. 제2 스트림은 UI 제어 컴포넌트(들)의 렌더링을 포함할 수 있다.
엔드포인트 디바이스는 제1 스트림 및 제2 스트림을 수신할 수 있다. 엔드포인트 디바이스는 제2 스트림이 제1 스트림보다 더 높은 디스플레이 해상도로 인코딩되는 것으로 결정할 수 있다. 일 구현에서, 엔드포인트 디바이스는 제2 스트림의 해상도와 매칭되도록 제1 스트림에 대해 업샘플링 기술을 사용할 수 있다. 엔드포인트 디바이스는 제1 스트림 및 제2 스트림을 사용자에게 제시할 수 있다. 일 구현에서, 엔드포인트 디바이스는 사용자에게 제1 스트림 및 제2 스트림이 하나의 미디어 아이템으로서 제시되도록 제1 스트림을 오버레이하는 것으로서 제2 스트림을 제시할 수 있다.
일 구현에서, 엔드포인트 디바이스에서 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다. 예를 들어, 엔드포인트 디바이스가 높은 프로세싱 능력을 갖는 경우, 엔드포인트 디바이스에서 UI 제어 컴포넌트(들)의 렌더링을 생성하도록 결정될 수 있다.
블록(415)에서, UI 제어 컴포넌트(들)의 렌더링을 엔드포인트 디바이스에서 생성하는 것으로 결정되는 경우, 방법(400)은 블록(450)으로 계속될 수 있다. 블록(450)에서, 도 2를 참조하여 위에서 논의된 바와 같이, 비디오 콘텐츠 컴포넌트(들)의 렌더링이 생성될 수 있다. 비디오 콘텐츠 컴포넌트(들)의 렌더링은 제1 스트림에 포함될 수 있다. 일 구현에서, 제1 스트림은 엔드포인트 디바이스가 제시할 수 있는 최대 해상도보다 더 작은 해상도로 인코딩될 수 있다. 다른 구현에서, 제1 스트림은 엔드포인트 디바이스가 제시할 수 있는 최대 해상도로 인코딩될 수 있다.
일 구현에서, UI 제어 컴포넌트(들)를 렌더링하기 위한 제2 커맨드들의 세트가 UI 제어 컴포넌트들을 렌더링하기 위한 초기 커맨드들의 세트에 기초하여 생성될 수 있다. 제2 커맨드들의 세트는 도 3을 참조하여 위에서 논의된 바와 같이 UI 제어 컴포넌트들을 렌더링하기 위한 상위 레벨 명령어들을 포함할 수 있다. 일 구현에서, 제2 커맨드들의 세트는 초기 커맨드들의 세트 대신에 엔드포인트 디바이스로 송신될 수 있다.
블록(455)에서, 제1 스트림이 엔드포인트 디바이스로 송신될 수 있다. 제1 스트림은 비디오 콘텐츠 컴포넌트(들)의 렌더링을 포함할 수 있다. 커맨드들의 세트 또한, 예를 들어, 엔드포인트 디바이스에 의해 지원되는 최대 해상도로 렌더링하기 위해 엔드포인트 디바이스로 송신될 수 있다. 커맨드들의 세트는 UI 제어 컴포넌트(들)를 렌더링하기 위한 커맨드들의 세트일 수 있다. 일 구현에서, 엔드포인트 디바이스는 엔드포인트 디바이스의 최대 해상도와 매칭되도록 제1 스트림에 대해 업샘플링 기술을 사용할 수 있다. 엔드포인트 디바이스는 제1 스트림 및 UI 제어 컴포넌트(들)의 렌더링을 사용자에게 제시할 수 있다. 예를 들어, 엔드포인트 디바이스는 사용자에게 제1 스트림 및 UI 제어 컴포넌트들이 하나의 미디어 아이템으로서 제시되도록 제1 스트림을 오버레이하는 것으로서 UI 제어 컴포넌트들의 렌더링을 제시할 수 있다.
도 5는 본 개시내용의 하나 이상의 양태에 따라 동작하는 컴퓨팅 디바이스의 예시적인 블록도를 예시한다. 컴퓨터 시스템(600)은 도 1의 서버(106) 또는 엔드포인트 디바이스(110A-110Z)일 수 있다. 머신은 엔드포인트-서버 네트워크 환경에서 서버 또는 엔드포인트 머신의 용량으로 동작하거나, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신은 텔레비전, 개인용 컴퓨터(personal computer)(PC), 태블릿 PC, 셋탑 박스(set-top box)(STB), 개인 휴대 정보 단말기(PDA), 휴대 전화, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 취해질 액션들을 지정하는 명령어들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만 예시되어 있지만, "머신"이라는 용어는 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위한 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 취해져야한다.
예시적인 컴퓨터 시스템(500)은 버스(540)를 통해 서로 통신하는 프로세싱 디바이스(프로세서)(502), 메인 메모리(504)(예를 들어, 판독 전용 메모리(read-only memory)(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM), 예를 들어, 동기식 DRAM(synchronous DRAM)(SDRAM), 이중 데이터 레이트(double data rate)(DDR SDRAM) 또는 DRAM(RDRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(static random access memory)(SRAM) 등), 및 데이터 스토리지 디바이스(518)를 포함한다.
프로세서(프로세싱 디바이스)(502)는 마이크로프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 범용 프로세싱 디바이스를 나타낸다. 보다 구체적으로, 프로세서(502)는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세서(602)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수도 있다. 프로세서(502)는 본 명세서에서 논의된 동작들을 수행하기 위한 (예를 들어, 렌더링 컴포넌트(122) 또는 통신 애플리케이션(115)의) 명령어들(505)을 실행하도록 구성된다.
컴퓨터 시스템(500)은 네트워크 인터페이스 디바이스(508)를 추가로 포함할 수 있다. 컴퓨터 시스템(500)은 또한 비디오 디스플레이 유닛(510)(예를 들어, 액정 디스플레이(liquid crystal display)(LCD) 또는 음극선관(cathode ray tube)(CRT)), 입력 디바이스(512)(예를 들어, 키보드 및 영숫자 키보드, 모션 감지 입력 디바이스, 터치 스크린), 커서 제어 디바이스(514)(예를 들어, 마우스), 및 신호 생성 디바이스(520)(예를 들어, 스피커)를 포함할 수 있다.
데이터 스토리지 디바이스(518)는 본 명세서에서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구체화하는 (예를 들어, 렌더링 컴포넌트(122) 또는 통신 애플리케이션(115)의) 명령어들(505)의 하나 이상의 세트가 저장되는 비-일시적 머신 판독 가능 저장 매체(524)(또한, 컴퓨터 판독 가능 저장 매체)를 포함할 수 있다. 명령어들은 또한 머신 판독 가능 저장 매체를 또한 포함하는 컴퓨터 시스템(500), 메인 메모리(504) 및 프로세서(502)에 의한 실행 동안 메인 메모리(504) 내에 및/또는 프로세서(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 명령어들은 네트워크 인터페이스 디바이스(508)를 통해 네트워크(630)를 통해 추가로 송신 또는 수신될 수 있다.
일 구현에서, 명령어들(505)은 비디오 콘텐츠 컴포넌트 및/또는 UI 제어 컴포넌트를 렌더링하기 위한 명령어들을 포함한다. 컴퓨터 판독 가능 저장 매체(524)(머신 판독 가능 저장 매체)는 예시적인 구현에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터 판독 가능 저장 매체" 및 "머신 판독 가능 저장 매체"라는 용어들은 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함하는 것으로 취해져야 한다. "컴퓨터 판독 가능 저장 매체" 및 "머신 판독 가능 저장 매체"라는 용어들은 머신에 의한 실행을 위한 명령어들의 세트를 저장, 인코딩 또는 운반할 수 있고 머신으로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 또한 취해져야 한다. 따라서, "컴퓨터 판독 가능 저장 매체" 및 "머신 판독 가능 저장 매체"라는 용어들은 솔리드 스테이트 메모리들, 광학 매체 및 자기 매체를 포함하되, 이에 제한되지 않는 것으로 취해져야 한다.
본 명세서 전반에 걸쳐 "일 구현" 또는 "구현"에 대한 참조는 구현과 관련하여 설명된 특정 특징, 구조 또는 특성이 적어도 일 구현에 포함된다는 것을 의미한다. 따라서, 본 명세서 전반에 걸쳐 다양한 위치들에서 "일 구현에서" 또는 "구현에서"라는 문구의 출현들은 상황들에 따라 동일한 구현을 지칭할 수 있지만, 반드시 그러한 것은 아니다. 게다가, 특정 특징들, 구조들, 또는 특성들은 하나 이상의 구현에서 임의의 적절한 방식으로 결합될 수 있다.
"포함한다(includes)", "포함하는(including)", "갖는다(has)", "포함한다(contains)"의 용어들, 이들의 변형들 및 다른 유사한 단어들이 상세한 설명 또는 청구범위에서 사용되는 한, 이러한 용어들은 임의의 추가 또는 다른 요소들을 배제하지 않고 개방형 접속어로서 "포함하는(comprising)"이라는 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
본 출원에서 사용된 바와 같이, "컴포넌트", "모듈", "시스템" 등의 용어들은 일반적으로 컴퓨터 관련 엔티티, 하드웨어(예를 들어, 회로), 소프트웨어, 하드웨어와 소프트웨어의 조합, 또는 하나 이상의 특정 기능을 가진 운영 머신과 관련된 엔티티를 지칭하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서(예를 들어, 디지털 신호 프로세서) 상에서 실행되는 프로세스, 프로세서, 객체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이에 제한되지 않는다. 예시로서, 제어기 상에서 실행되는 애플리케이션 및 제어기는 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행 스레드 내에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터에 상에 로컬라이징되고/되거나 2개 이상의 컴퓨터 사이에 분산될 수 있다. 또한, "디바이스"는 특별히 설계된 하드웨어; 하드웨어가 특정 기능들(예를 들어, 관심 지점들 및/또는 설명자들 생성)을 수행할 수 있게 하는 소프트웨어 실행에 의해 특수화되는 일반화된 하드웨어; 컴퓨터 판독 가능 매체 상의 소프트웨어; 또는 이들의 조합의 형태로 될 수 있다.
전술한 시스템들, 회로들, 모듈들 등은 여러 컴포넌트들 및/또는 블록들 사이의 상호 작용과 관련하여 설명되었다. 이러한 시스템들, 회로들, 컴포넌트들, 블록들 등은 상기의 것들의 다양한 순열들 및 조합들에 따라 해당 컴포넌트들 또는 지정된 하위-컴포넌트들, 지정된 컴포넌트들 또는 하위-컴포넌트들 중 일부, 및/또는 추가 컴포넌트들을 포함할 수 있다는 것이 이해될 수 있다. 하위-컴포넌트들은 또한 상위 컴포넌트(parent component)들(계층적) 내에 포함되기보다는 다른 컴포넌트들에 통신 가능하게 커플링되는 컴포넌트들로서 구현될 수 있다. 또한, 하나 이상의 컴포넌트는 통합 기능을 제공하는 단일 컴포넌트로 결합될 수도 있고, 또는 여러 별도의 하위-컴포넌트들로 분할될 수도 있으며, 관리 계층과 같은 임의의 하나 이상의 중간 계층이 통합된 기능을 제공하기 위해 이러한 하위-컴포넌트들에 통신 가능하게 커플링되도록 제공될 수 있다는 것에 유의하도록 한다. 본 명세서에서 설명되는 임의의 컴포넌트들은 본 명세서에서 구체적으로 설명되지는 않았지만 본 기술분야의 통상의 기술자에게 공지된 하나 이상의 다른 컴포넌트와 상호 작용할 수 있다.
또한, "예" 또는 "예시적인"이라는 단어들은 본 명세서에서 예, 사례 또는 예시로서 제공되는 것을 의미하는 데 사용된다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들에 비해 바람직하거나 유리한 것으로 해석될 필요는 없다. 오히려, "예" 또는 "예시적"이라는 단어들의 사용은 개념들을 구체적인 방식으로 제시하도록 의도된다. 본 출원에서 사용되는 바와 같이, "또는"이라는 용어는 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 지정되지 않거나 문맥상 분명하지 않는 한, "X는 A 또는 B를 채택한다"는 자연적인 포함 순열들 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 채택하는 경우; X가 B를 채택하는 경우; 또는 X가 A 및 B를 모두 채택하는 경우, "X는 A 또는 B를 채택한다"는 앞의 사례들 중 임의의 것 하에서 충족된다. 또한, 본 출원 및 첨부된 청구범위에서 사용되는 관사들("a" 및 "an")은, 달리 지정되지 않거나 문맥상 단수 형태를 지시하는 것이 분명하지 않는 한, 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다.

Claims (20)

  1. 방법으로서,
    서버에서, 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(user interface)(UI) 제어 컴포넌트를 포함하는 결합형 UI(combined UI)를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하는 단계;
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하는 단계; 및
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하는 단계 - 상기 제1 스트림은 제1 해상도로 인코딩되고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 결합형 UI로 상기 UI 제어 컴포넌트들의 렌더링과 병합되고, 상기 결합형 UI는 제2 해상도를 가짐 -
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 서버에서, 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들의 세트를 실행하는 단계; 및
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는 단계 - 상기 제2 스트림은 상기 제2 해상도로 인코딩됨 -
    를 추가로 포함하는, 방법.
  3. 제1항에 있어서, 상기 제2 해상도로 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 상기 엔드포인트 디바이스로 송신하는 단계를 추가로 포함하는, 방법.
  4. 제1항에 있어서,
    상기 UI 제어 컴포넌트들의 렌더링을 상기 서버에서 생성할지 또는 상기 엔드포인트 디바이스에서 생성할지를 결정하는 단계;
    상기 UI 제어 컴포넌트들의 렌더링을 상기 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 상기 엔드포인트 디바이스로 송신하는 단계 - 상기 UI 제어 컴포넌트들의 렌더링은 상기 제1 해상도 또는 상기 제2 해상도를 가짐 -; 및
    상기 UI 제어 컴포넌트들의 렌더링을 상기 서버에서 생성하기로 결정하는 것에 응답하여,
    상기 서버에서, 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하는 단계; 및
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는 단계
    를 추가로 포함하는, 방법.
  5. 제4항에 있어서, 상기 제2 해상도는 상기 제1 해상도보다 더 높고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 제2 해상도와 매칭되도록 수정되는, 방법.
  6. 제4항 또는 제5항에 있어서, 상기 커맨드들의 세트를 상기 서버에서 실행할지 또는 상기 엔드포인트 디바이스에서 실행할지를 결정하는 것은 상기 엔드포인트 디바이스의 하드웨어 능력, 상기 엔드포인트 디바이스의 해상도, 상기 결합형 UI의 타겟 해상도, 상기 서버의 렌더링 능력, 또는 상기 네트워크 상에서 이용 가능한 대역폭 중 적어도 하나에 기초하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 결합형 UI는 상기 UI 제어 컴포넌트들을 통해 사용자 입력을 수신하는 온라인 게임을 제시하는, 방법.
  8. 시스템으로서,
    메모리; 및
    상기 메모리에 커플링되는 프로세싱 디바이스
    를 포함하고, 상기 프로세싱 디바이스는,
    하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하고,
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하고,
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하는 - 상기 제1 스트림은 제1 해상도로 인코딩되고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 결합형 UI로 상기 UI 제어 컴포넌트들의 렌더링과 병합되고, 상기 결합형 UI는 제2 해상도를 가짐 -
    시스템.
  9. 제8항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들의 세트를 실행하고,
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는 - 상기 제2 스트림은 상기 제2 해상도로 인코딩됨 -,
    시스템.
  10. 제8항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 제2 해상도로 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 상기 엔드포인트 디바이스로 송신하는, 시스템.
  11. 제8항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 UI 제어 컴포넌트들의 렌더링을 서버에서 생성할지 또는 상기 엔드포인트 디바이스에서 생성할지를 결정하고,
    상기 UI 제어 컴포넌트들의 렌더링을 상기 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 상기 엔드포인트 디바이스로 송신하고 - 상기 UI 제어 컴포넌트들의 렌더링은 상기 제1 해상도 또는 상기 제2 해상도를 가짐 -,
    상기 UI 제어 컴포넌트들의 렌더링을 상기 서버에서 생성하기로 결정하는 것에 응답하여,
    상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하고,
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는,
    시스템.
  12. 제11항에 있어서, 상기 제2 해상도는 상기 제1 해상도보다 더 높고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 제2 해상도와 매칭되도록 수정되는, 시스템.
  13. 제11항 또는 제12항에 있어서, 상기 커맨드들의 세트를 상기 서버에서 실행할지 또는 상기 엔드포인트 디바이스에서 실행할지를 결정하는 것은 상기 엔드포인트 디바이스의 하드웨어 능력, 상기 엔드포인트 디바이스의 해상도, 상기 결합형 UI의 타겟 해상도, 상기 서버의 렌더링 능력, 또는 상기 네트워크 상에서 이용 가능한 대역폭 중 적어도 하나에 기초하는, 시스템.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 결합형 UI는 상기 UI 제어 컴포넌트들을 통해 사용자 입력을 수신하는 온라인 게임을 제시하는, 시스템.
  15. 프로세싱 디바이스에 의해 실행될 때, 상기 프로세싱 디바이스로 하여금, 동작들을 수행하게 하는 명령어들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 동작들은,
    서버에서, 하나 이상의 비디오 콘텐츠 컴포넌트 및 하나 이상의 사용자 인터페이스(UI) 제어 컴포넌트를 포함하는 결합형 UI를 통해 제시될 미디어 아이템에 대한 사용자 요청을 수신하는 동작;
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 생성하는 동작; 및
    상기 비디오 콘텐츠 컴포넌트들의 렌더링을 포함하는 제1 스트림을 엔드포인트 디바이스로 송신하는 동작 - 상기 제1 스트림은 제1 해상도로 인코딩되고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 결합형 UI로 상기 UI 제어 컴포넌트들의 렌더링과 병합되고, 상기 결합형 UI는 제2 해상도를 가짐 -
    을 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  16. 제15항에 있어서, 상기 동작들은,
    상기 서버에서, 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위한 커맨드들의 세트를 실행하는 동작; 및
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는 동작 - 상기 제2 스트림은 상기 제2 해상도로 인코딩됨 -
    을 추가로 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  17. 제15항에 있어서, 상기 동작들은 상기 제2 해상도로 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 상기 엔드포인트 디바이스로 송신하는 동작을 추가로 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  18. 제15항에 있어서, 상기 동작들은,
    상기 UI 제어 컴포넌트들의 렌더링을 상기 서버에서 생성할지 또는 상기 엔드포인트 디바이스에서 생성할지를 결정하는 동작;
    상기 UI 제어 컴포넌트들의 렌더링을 상기 엔드포인트 디바이스에서 생성하기로 결정하는 것에 응답하여, 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 네트워크를 통해 상기 엔드포인트 디바이스로 송신하는 동작 - 상기 UI 제어 컴포넌트들의 렌더링은 상기 제1 해상도 또는 상기 제2 해상도를 가짐 -; 및
    상기 UI 제어 컴포넌트들의 렌더링을 상기 서버에서 생성하기로 결정하는 것에 응답하여,
    상기 서버에서, 상기 UI 제어 컴포넌트들의 렌더링을 생성하기 위해 상기 UI 제어 컴포넌트들을 렌더링하기 위한 커맨드들의 세트를 실행하는 동작; 및
    상기 UI 제어 컴포넌트들의 렌더링을 포함하는 제2 스트림을 상기 엔드포인트 디바이스로 송신하는 동작
    을 추가로 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  19. 제18항에 있어서, 상기 제2 해상도는 상기 제1 해상도보다 더 높고, 상기 비디오 콘텐츠 컴포넌트들의 렌더링은 상기 엔드포인트 디바이스에서 상기 UI 제어 컴포넌트들의 제2 해상도와 매칭되도록 수정되는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  20. 제18항 또는 제19항에 있어서, 상기 커맨드들의 세트를 상기 서버에서 실행할지 또는 상기 엔드포인트 디바이스에서 실행할지를 결정하는 것은 상기 엔드포인트 디바이스의 하드웨어 능력, 상기 엔드포인트 디바이스의 해상도, 상기 결합형 UI의 타겟 해상도, 상기 서버의 렌더링 능력, 또는 상기 네트워크 상에서 이용 가능한 대역폭 중 적어도 하나에 기초하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020217030285A 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링 KR102571776B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237028725A KR20230128408A (ko) 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/019440 WO2020176070A1 (en) 2019-02-25 2019-02-25 Variable end-point user interface rendering

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237028725A Division KR20230128408A (ko) 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링

Publications (2)

Publication Number Publication Date
KR20210126753A true KR20210126753A (ko) 2021-10-20
KR102571776B1 KR102571776B1 (ko) 2023-08-29

Family

ID=65724564

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217030285A KR102571776B1 (ko) 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링
KR1020237028725A KR20230128408A (ko) 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237028725A KR20230128408A (ko) 2019-02-25 2019-02-25 가변 엔드-포인트 사용자 인터페이스 렌더링

Country Status (6)

Country Link
US (1) US20220134227A1 (ko)
EP (1) EP3918807A1 (ko)
JP (1) JP7179194B2 (ko)
KR (2) KR102571776B1 (ko)
CN (1) CN113455008B (ko)
WO (1) WO2020176070A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4154952A1 (en) 2021-09-24 2023-03-29 Sang Woo Kim Snowboard deck

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112604277B (zh) * 2020-12-29 2021-08-31 广州银汉科技有限公司 一种基于手机游戏gui快速复刻生产方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020064888A (ko) * 1999-10-22 2002-08-10 액티브스카이 인코포레이티드 객체 지향형 비디오 시스템
KR20080087031A (ko) * 2006-01-13 2008-09-29 야후! 인크. 미디어 콘텐츠에 편집들을 기록하는 방법 및 시스템
US20130204927A1 (en) * 2012-02-08 2013-08-08 Vmware, Inc. Video stream management for remote graphical user interfaces
EP2713625A1 (fr) * 2012-09-28 2014-04-02 Orange Procédé et système de fourniture d'un contenu multimédia, machine virtuelle, serveurs, terminal de communication et programme d'ordinateur correspondants
US20140289627A1 (en) * 2013-03-15 2014-09-25 Activevideo Networks, Inc. Multiple-Mode System and Method for Providing User Selectable Video Content
EP3050302B1 (en) * 2014-09-25 2018-01-03 Huawei Technologies Co. Ltd. A server for providing a graphical user interface to a client and a client
KR20190005253A (ko) * 2011-07-29 2019-01-15 구글 엘엘씨 디바이스 유형에 따라 사용자 인터페이스 엘리먼트들을 렌더링하기 위한 시스템들 및 방법들

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6577311B1 (en) * 1999-12-16 2003-06-10 Picture Iq Corporation Techniques for automatically providing a high-resolution rendering of a low resolution digital image in a distributed network
US7522664B1 (en) * 2003-09-10 2009-04-21 Krishnamurthy Bhaskar Remote live video inspection
US8506402B2 (en) * 2009-06-01 2013-08-13 Sony Computer Entertainment America Llc Game execution environments
US20120110628A1 (en) * 2010-10-27 2012-05-03 Candelore Brant L Storage of Adaptive Streamed Content
GB2496015B (en) * 2012-09-05 2013-09-11 Imagination Tech Ltd Pixel buffering
US9717982B2 (en) * 2012-12-21 2017-08-01 Microsoft Technology Licensing, Llc Client rendering of latency sensitive game features
EP3020191B1 (en) * 2013-07-11 2021-01-06 Dejero Labs Inc. Systems and methods for transmission of data streams
US11140454B2 (en) * 2013-07-17 2021-10-05 Sourcepicture Inc. Systems and methods for content presentation management
US20150181152A1 (en) * 2013-12-20 2015-06-25 Skylight Healthcare Corporation Systems, devices and methods for interactive and bidirectional message overlay on a communications signal
US20160182594A1 (en) * 2014-12-19 2016-06-23 Cable Television Laboratories, Inc. Adaptive streaming
US20160259453A1 (en) * 2015-03-06 2016-09-08 Sony Computer Entertainment America Llc Dynamic adjustment of cloud game data streams to output device and network quality
US9538139B2 (en) * 2015-04-24 2017-01-03 Avaya Inc. Multi-stream video switching with selective optimized composite
JP2018533288A (ja) * 2015-09-23 2018-11-08 ロヴィ ガイズ, インコーポレイテッド 複数のチャネルからの番組中のイベントを検出するためのシステムおよび方法
US11388455B2 (en) * 2016-06-02 2022-07-12 Multimo, Llc Method and apparatus for morphing multiple video streams into single video stream
US9736442B1 (en) * 2016-08-29 2017-08-15 Christie Digital Systems Usa, Inc. Device, system and method for content-adaptive resolution-enhancement
US10311548B2 (en) * 2017-09-05 2019-06-04 Microsoft Technology Licensing, Llc Scaling render targets to a higher rendering resolution to display higher quality video frames
US11014010B2 (en) * 2017-10-20 2021-05-25 Microsoft Technology Licensing, Llc State management of dynamic properties
US20230262234A1 (en) * 2018-02-20 2023-08-17 Arlo Technologies, Inc. Transcoding in security camera camera applications
US11012694B2 (en) * 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
US11612812B1 (en) * 2021-06-29 2023-03-28 Amazon Technologies, Inc. Video game streaming with dynamic range conversion
US11617946B1 (en) * 2021-06-29 2023-04-04 Amazon Technologies, Inc. Video game streaming with dynamic range conversion
US20230111865A1 (en) * 2021-10-08 2023-04-13 Objectvideo Labs, Llc Spatial motion attention for intelligent video analytics

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020064888A (ko) * 1999-10-22 2002-08-10 액티브스카이 인코포레이티드 객체 지향형 비디오 시스템
KR20080087031A (ko) * 2006-01-13 2008-09-29 야후! 인크. 미디어 콘텐츠에 편집들을 기록하는 방법 및 시스템
KR20190005253A (ko) * 2011-07-29 2019-01-15 구글 엘엘씨 디바이스 유형에 따라 사용자 인터페이스 엘리먼트들을 렌더링하기 위한 시스템들 및 방법들
US20130204927A1 (en) * 2012-02-08 2013-08-08 Vmware, Inc. Video stream management for remote graphical user interfaces
EP2713625A1 (fr) * 2012-09-28 2014-04-02 Orange Procédé et système de fourniture d'un contenu multimédia, machine virtuelle, serveurs, terminal de communication et programme d'ordinateur correspondants
US20140289627A1 (en) * 2013-03-15 2014-09-25 Activevideo Networks, Inc. Multiple-Mode System and Method for Providing User Selectable Video Content
EP3050302B1 (en) * 2014-09-25 2018-01-03 Huawei Technologies Co. Ltd. A server for providing a graphical user interface to a client and a client

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4154952A1 (en) 2021-09-24 2023-03-29 Sang Woo Kim Snowboard deck

Also Published As

Publication number Publication date
KR20230128408A (ko) 2023-09-04
CN113455008A (zh) 2021-09-28
KR102571776B1 (ko) 2023-08-29
EP3918807A1 (en) 2021-12-08
CN113455008B (zh) 2024-04-09
WO2020176070A1 (en) 2020-09-03
US20220134227A1 (en) 2022-05-05
JP7179194B2 (ja) 2022-11-28
JP2022521960A (ja) 2022-04-13

Similar Documents

Publication Publication Date Title
US20200162413A1 (en) Low-friction, instant, private, personalized video sharing widget
JP7230158B2 (ja) ビデオストリーミングサービスのための動的なカスタムインタスティシャル遷移ビデオ
US10645054B1 (en) Promoting social network sharing of a content item on a content sharing platform
KR102233785B1 (ko) 미디어 애플리케이션 백그라운딩
US11714529B2 (en) Navigation of a list of content sharing platform media items on a client device via gesture controls and contextual synchronization
JP2024056704A (ja) カスタマイズされた補足メディアコンテンツの動的な統合
KR102571776B1 (ko) 가변 엔드-포인트 사용자 인터페이스 렌더링
CN109565616B (zh) 在移动电话上的交互式视频多屏体验
US20160371737A1 (en) Personalized and contextual notifications of content releases
US20230137957A1 (en) Revolving on-screen virtual keyboard for efficient use during character input
US10127312B1 (en) Mutable list resilient index for canonical addresses of variable playlists

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant