KR102502546B1 - Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 - Google Patents

Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102502546B1
KR102502546B1 KR1020227003157A KR20227003157A KR102502546B1 KR 102502546 B1 KR102502546 B1 KR 102502546B1 KR 1020227003157 A KR1020227003157 A KR 1020227003157A KR 20227003157 A KR20227003157 A KR 20227003157A KR 102502546 B1 KR102502546 B1 KR 102502546B1
Authority
KR
South Korea
Prior art keywords
fov
image frame
video
image
equirectangular
Prior art date
Application number
KR1020227003157A
Other languages
English (en)
Other versions
KR20220020997A (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 알카크루즈 인코포레이티드
Publication of KR20220020997A publication Critical patent/KR20220020997A/ko
Application granted granted Critical
Publication of KR102502546B1 publication Critical patent/KR102502546B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/194Transmission of image signals
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/391Resolution modifying circuits, e.g. variable screen formats
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/111Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2181Source of audio or video content, e.g. local disk arrays comprising remotely distributed storage units, e.g. when movies are replicated over a plurality of video servers
    • 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/816Monomedia components thereof involving special video data, e.g 3D video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/045Zooming at least part of an image, i.e. enlarging it or shrinking it
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Databases & Information Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Controls And Circuits For Display Device (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

GPU(Graphic Processing Unit)를 이용하여 가상 현실 비디오를 처리하고 스트리밍 하는 시스템 및 방법이 제공된다. 비디오 서버는 프로세서로 하여금 비디오 데이터 소스로부터 다수의 구체 이미지 프레임 데이터를 포함하는 소스 비디오 데이터를 읽어오고, 상기 소스 비디오 데이터를 제1 메모리에 저장하게 하도록 구성된다. 제1 구체 이미지 프레임 데이터를 제2 메모리의 제1 프레임 버퍼에 저장되는 것에 응답하여, 상기 비디오 서버는 상기 GPU로 하여금 상기 제1 구체 이미지 프레임 데이터를 상기 제1 구체 이미지 프레임 데이터에 의해 표현되는 구체 이미지의 일부분에 대응되는 제1 이퀴렉탱귤러 이미지 프레임으로 변환하도록 하고, 상기 변환된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩 하도록 하고, 상기 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 상기 제2 메모리의 인코딩 된 프레임 버퍼에 저장하도록 한다.

Description

GPU 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템{METHOD AND SYSTEM FOR GPU BASED VIRTUAL REALITY VIDEO STREAMING SERVER}
본 발명은 가상 현실 비디오 스트리밍을 위한 시스템 및 방법에 관한 것이다. 보다 자세하게는, 본 발명은 GPU(Graphic Processing Unit)를 이용하여 가상 현실 비디오를 스트리밍하고 처리하기 위한 방법 및 시스템에 관한 것이다.
가상 현실(Virtual Reality; VR) 비디오 콘텐츠는 일반적으로 360도 비디오 데이터를 제공하기 위해 매우 높은 해상도를 갖는다. 예를 들어, 360도 비디오 데이터는 초당 프레임(Frame Per Second; FPS)이 30 ~ 60 이고, 4K(3840x1920) 이상의 해상도를 갖는 UHD(Ultra High Definition) 비디오 데이터를 포함할 수 있다.
GPU(Graphic Processing Unit)는 디스플레이 출력용 프레임 버퍼에서 이미지 생성을 가속화하기 위해 메모리를 신속하게 읽고 쓰도록 설계된 특수한 전자 회로이다. CPU(Central Processing Unit)와 비교하여, GPU는 저전력 소모(e.g. CPU의 25 %) 및 저렴한 비용(e.g. 2016년 기준, 768코어의 GPU의 경우 160달러)으로 고속의 실시간 이미지 처리를 제공할 수 있다. 또한, GPU는 멀티 코어를 활용함으로써 병렬 컴퓨팅 성능을 제공할 수 있다.
한국등록특허 제10-0613752호 (2006.08.10. 등록)
본 발명이 해결하고자 하는 기술적 과제는, GPU를 이용하여 가상 현실 비디오를 처리하고 스트리밍하는 방법 및 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 가상 현실 비디오의 인코딩 지연을 최소화하기 위한 처리 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 클라이언트 단말에서 가상 현실 비디오를 효과적으로 디스플레이 하는 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 태양에 따른 가상 현실 비디오 스트리밍 시스템은, 제1 프로세서, 제1 메모리, GPU(Graphic Processing Unit), 복수의 프레임 버퍼를 포함하는 제2 메모리, 상기 제1 프로세서 또는 상기 GPU 중 적어도 하나에 의해 구현되는 비디오 서버를 포함하되, 상기 비디오 서버는, 상기 제1 프로세서에 의해, 비디오 데이터 소스로부터 복수의 구체 이미지 프레임 데이터를 포함하는 소스 비디오 데이터를 얻어오고 상기 소스 비디오 데이터를 상기 제1 메모리에 저장하며, 상기 비디오 서버는, 상기 제2 메모리의 제1 프레임 버퍼에 제1 구체 이미지 프레임 데이터가 저장되는 것에 응답하여, 상기 GPU에 의해, 상기 제1 구체 이미지 프레임 데이터를 상기 제1 구체 이미지 프레임 데이터가 나타내는 구체 이미지의 일부분에 대응되는 제1 이퀴렉탱귤러(equirectangular) 이미지 프레임 데이터로 변환하고, 상기 변환된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하며, 상기 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 상기 제2 메모리의 인코딩 된 프레임 버퍼에 저장할 수 있다. 일 실시예에서, 상기 제1 프로세서 또는 상기 GPU 중 적어도 하나에 의해 구현되는 스트리밍 서버를 더 포함하되, 상기 스트리밍 서버는, 상기 제1 프로세서에 의해, 클라이언트 단말과 제1 연결을 설정하고, 상기 제2 메모리의 상기 인코딩 된 프레임 버퍼에서 상기 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 얻어오며, 상기 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 상기 제1 연결을 통해 상기 클라이언트 단말로 스트리밍할 수 있다. 일 실시예에서, 상기 비디오 서버와 상기 스트리밍 서버는 별도의 프로세스로 실행될 수 있다. 일 실시예에서, 상기 제1 프로세서 또는 상기 GPU 중 적어도 하나에 의해 구현되는 통신 서버를 더 포함하되, 상기 통신 서버는, 상기 제1 프로세서에 의해, 상기 클라이언트 단말과 제2 연결을 설정하고, 상기 제1 이퀴렉탱귤러 이미지 프레임 데이터에 대응되는 FOV(Field of View)에 관한 제1 정보를 상기 클라이언트 단말로 전송하며, 상기 클라이언트 단말로부터 제2 FOV에 관한 제2 정보를 수신하고, 상기 비디오 서버는, 상기 GPU에 의해, 제2 구체 이미지 프레임 데이터를 상기 제2 구체 이미지 프레임 데이터가 나타내는 구체 이미지의 상기 제2 FOV에 대응되는 제2 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 일 실시예에서, 상기 통신 서버와 상기 스트리밍 서버는 단일 프로세스로 실행될 수 있다. 일 실시예에서, 제4 항에 있어서, 상기 제1 FOV에 관한 상기 제1 정보와 상기 제2 FOV에 관한 상기 제2 정보는 방위각과 피치각을 가리키는 시야각 데이터를 포함할 수 있다.
본 발명의 다른 태양에 따른 비디오 처리 방법은, 비디오 서버의 GPU가, 비디오의 제1 구체 이미지 프레임을 나타내는 제1 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리에 저장하는 단계, 상기 비디오 서버의 제1 프로세서가, 클라이언트 단말로부터 제1 FOV에 관한 제1 정보를 수신하는 단계, 상기 비디오 서버의 상기 GPU가, 상기 제1 버퍼 메모리에 저장된 상기 제1 구체 이미지 프레임 데이터를 상기 구체 이미지 프레임 데이터가 나타내는 상기 제1 구체 이미지 프레임의 상기 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하는 단계 및 상기 비디오 서버의 상기 GPU가, 제1 인코딩 된 이미지 프레임 데이터를 생성하기 위해 상기 변환된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하는 단계를 포함할 수 있다. 일 실시예에서, 상기 비디오 서버의 상기 GPU가, 상기 제1 구체 이미지 프레임 데이터를 생성하기 위해 상기 비디오를 파싱하고 디코딩하는 단계를 더 포함할 수 있다. 일 실시예에서, 상기 제1 FOV에 관한 상기 제1 정보는 방위각과 피치각을 가리키는 시야각 데이터를 포함할 수 있다. 일 실시예에서, 상기 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하는 단계는, 상기 GPU가 상기 제1 구체 이미지 프레임 데이터에서 상기 제1 이퀴렉텡귤러 이미지 프레임 데이터로의 변환을 시작하기 전에 상기 제1 정보가 수신된 것으로 판정하는 단계를 포함할 수 있다. 일 실시예에서, 상기 비디오 서버의 상기 제1 프로세서가, 상기 클라이언트 단말로부터 제2 FOV에 관한 제2 정보를 수신하는 단계, 상기 비디오 서버의 상기 GPU가, 상기 비디오의 상기 제1 구체 이미지 프레임에 후속된 제2 구체 이미지 프레임을 나타내는 제2 구체 이미지 프레임 데이터를 상기 제1 프레임 버퍼 메모리에 저장하는 단계 및 상기 비디오 서버의 상기 GPU가, 상기 제1 구체 이미지 프레임 데이터를 상기 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환한 후의 시점과 상기 제1 프레임 버퍼 메모리에 상기 제2 구체 이미지 프레임 데이터를 저장하기 전의 시점 사이에 상기 제2 정보가 수신된 것으로 판정한 것에 응답하여, (i) 상기 비디오 서버의 상기 GPU가, 상기 제1 프레임 버퍼 메모리에 저장된 상기 제1 구체 이미지 프레임 데이터를 상기 제1 구체 이미지 프레임 데이터가 나타내는 상기 제1 구체 이미지 프레임의 상기 제2 FOV에 대응되는 제2 이퀴렉탱귤러 이미지 프레임 데이터로 변환하고, (ii) 상기 비디오 서버의 상기 GPU가, 상기 변환된 제2 이퀴렉탱귤러 이미지 프레임 데이터를 제2 인코딩 된 이미지 프레임 데이터로 인코딩하며, (iii) 상기 제1 프레임 버퍼 메모리에 저장된 상기 제2 구체 이미지 프레임 데이터의 변환 및 인코딩을 생략하는 단계를 포함할 수 있다.
본 발명의 또 다른 태양에 따른 컴퓨터 프로그램은, 비디오 서버의 GPU에 의해 실행되며, 비디오 서버의 GPU가, 비디오의 제1 구체 이미지 프레임을 나타내는 제1 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리에 저장하는 단계, 상기 비디오 서버의 제1 프로세서가, 클라이언트 단말로부터 제1 FOV에 관한 제1 정보를 수신하는 단계, 상기 비디오 서버의 상기 GPU가, 상기 제1 버퍼 메모리에 저장된 상기 제1 구체 이미지 프레임 데이터를 상기 구체 이미지 프레임 데이터가 나타내는 상기 제1 구체 이미지 프레임의 상기 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하는 단계 및 상기 비디오 서버의 상기 GPU가, 제1 인코딩 된 이미지 프레임 데이터를 생성하기 위해 상기 변환된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하는 단계를 포함할 수 있다. 일 실시예에서, 상기 비디오 서버의 상기 GPU가, 상기 제1 구체 이미지 프레임 데이터를 생성하기 위해 상기 비디오를 파싱하고 디코딩하는 단계를 실행시키기 위해서 컴퓨터가 읽기 가능한 기록 매체에 저장될 수 있다. 일 실시예에서, 상기 제1 FOV에 관한 상기 제1 정보는 방위각과 피치각을 가리키는 시야각 데이터를 포함할 수 있다. 일 실시예에서, 상기 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하는 단계는, 상기 GPU가 상기 제1 구체 이미지 프레임 데이터에서 상기 제1 이퀴렉텡귤러 이미지 프레임 데이터로의 변환을 시작하기 전에 상기 제1 정보가 수신된 것으로 판정하는 단계를 포함할 수 있다. 일 실시예에서, 상기 비디오 서버의 상기 제1 프로세서가, 상기 클라이언트 단말로부터 제2 FOV에 관한 제2 정보를 수신하는 단계, 상기 비디오 서버의 상기 GPU가, 상기 비디오의 상기 제1 구체 이미지 프레임에 후속된 제2 구체 이미지 프레임을 나타내는 제2 구체 이미지 프레임 데이터를 상기 제1 프레임 버퍼 메모리에 저장하는 단계 및 상기 비디오 서버의 상기 GPU가, 상기 제1 구체 이미지 프레임 데이터를 상기 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환한 후의 시점과 상기 제1 프레임 버퍼 메모리에 상기 제2 구체 이미지 프레임 데이터를 저장하기 전의 시점 사이에 상기 제2 정보가 수신된 것으로 판정한 것에 응답하여, (i) 상기 비디오 서버의 상기 GPU가, 상기 제1 프레임 버퍼 메모리에 저장된 상기 제1 구체 이미지 프레임 데이터를 상기 제1 구체 이미지 프레임 데이터가 나타내는 상기 제1 구체 이미지 프레임의 상기 제2 FOV에 대응되는 제2 이퀴렉탱귤러 이미지 프레임 데이터로 변환하고, (ii) 상기 비디오 서버의 상기 GPU가, 상기 변환된 제2 이퀴렉탱귤러 이미지 프레임 데이터를 제2 인코딩 된 이미지 프레임 데이터로 인코딩하며, (iii) 상기 제1 프레임 버퍼 메모리에 저장된 상기 제2 구체 이미지 프레임 데이터의 변환 및 인코딩을 생략하는 단계를 포함할 수 있다.
본 발명의 또 다른 태양에 따른 비디오 디스플레이 방법은, 클라이언트 단말의 제1 프로세서가, 비디오 스트리밍 서버로부터 비디오의 제1 이미지 프레임을 나타내는 제1 이미지 프레임 데이터를 수신하는 단계, 상기 클라이언트 단말의 GPU가, 적어도 상기 제1 이미지 프레임의 크기보다 작거나 같은 크기를 갖는 상기 클라이언트 단말의 디스플레이 상에, 상기 디스플레이의 제1 디스플레이 영역에 상기 제1 이미지 프레임의 제1 영역을 렌더링하고, 상기 디스플레이의 제2 디스플레이 영역에 상기 제1 이미지 프레임의 나머지 영역을 숨겨진 상태로 렌더링하는 단계 및 상기 클라이언트 단말의 상기 제1 프로세서가 제1 FOV를 가리키는 사용자 입력의 수신에 응답하여, 상기 클라이언트 단말의 GPU가 상기 제1 FOV 내에 위치하고 이전에 상기 제2 디스플레이 영역에 숨겨진 상기 제1 이미지 프레임의 제2 영역을 렌더링하는 단계를 포함할 수 있다. 일 실시예에서, 상기 제1 FOV에 관한 상기 사용자 입력은 방위각 및 피치각을 가리키는 시야각 데이터를 포함할 수 있다. 일 실시예에서, 상기 제1 이미지 프레임의 상기 제2 영역을 렌더링하는 단계는, 상기 클라이언트 단말의 상기 GPU가, 상기 디스플레이의 렌더링 영역을 상기 제1 디스플레이 영역에서 상기 제1 디스플레이 영역과 동일한 모양을 갖고 상기 제1 이미지 프레임의 상기 제2 영역을 포함하는 제3 디스플레이 영역으로 재배치하는 단계를 포함할 수 있다. 일 실시예에서, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로 상기 제1 FOV를 가리키는 정보를 전송하는 단계, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로부터 상기 제1 FOV에 대응되는 상기 비디오의 제2 이미지 프레임을 나타내는 제2 이미지 프레임 데이터를 수신하는 단계 및 상기 클라이언트 단말의 상기 GPU가, 상기 클라이언트 단말의 상기 디스플레이 상에, 상기 디스플레이의 상기 제1 디스플레이 영역에 상기 제2 이미지 프레임의 일부 영역을 렌더링하고, 상기 디스플레이의 상기 제2 디스플레이 영역에 상기 제1 이미지 프레임의 상기 제2 영역을 렌더링하는 단계를 더 포함할 수 있다. 일 실시예에서, 상기 디스플레이는 직사각형 모양이고, 상기 디스플레이의 상기 제1 디스플레이 영역은 직사각형 모양이고, 상기 디스플레이의 중앙에 위치하며, 상기 디스플레이의 상기 제2 디스플레이 영역은 상기 디스플레이의 왼쪽 여백, 오른쪽 여백, 위쪽 여백 및 아래쪽 여백 중 적어도 하나를 포함할 수 있다. 일 실시예에서, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로 상기 제1 FOV를 가리키는 정보를 전송하는 단계, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로부터 상기 제1 FOV에 대응되고 상기 비디오의 제2 이미지 프레임을 나타내는 제2 이미지 프레임 데이터를 수신하는 단계 및 상기 클라이언트 단말의 상기 GPU가, 상기 디스플레이의 상기 렌더링 영역을 상기 제3 디스플레이 영역에서 상기 제1 디스플레이 영역으로 재배치하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 태양에 따른 컴퓨터 프로그램은, 클라이언트 단말의 제1 프로세서 또는 GPU에 의해 실행되며, 클라이언트 단말의 제1 프로세서가, 비디오 스트리밍 서버로부터 비디오의 제1 이미지 프레임을 나타내는 제1 이미지 프레임 데이터를 수신하는 단계, 상기 클라이언트 단말의 GPU가, 상기 제1 이미지 프레임과 동일한 크기 또는 작은 크기를 갖는 상기 클라이언트 단말의 디스플레이 상에, 상기 디스플레이의 제1 디스플레이 영역에 상기 제1 이미지 프레임의 제1 영역을 렌더링하고, 상기 디스플레이의 제2 디스플레이 영역에 상기 제1 이미지 프레임의 나머지 영역을 숨겨진 상태로 렌더링하는 단계 및 상기 클라이언트 단말의 상기 제1 프로세서가 제1 FOV를 가리키는 사용자 입력의 수신에 응답하여, 상기 클라이언트 단말의 GPU가 상기 제1 FOV 내에 위치하고 이전에 상기 제2 디스플레이 영역에 숨겨진 상기 제1 이미지 프레임의 제2 영역을 렌더링하는 단계를 실행시키기 위하여 컴퓨터가 읽기 가능한 기록 매체에 저장될 수 있다. 일 실시예에서, 상기 제1 FOV에 관한 상기 사용자 입력은 방위각 및 피치각을 가리키는 시야각 데이터를 포함할 수 있다. 일 실시예에서, 상기 제1 이미지 프레임의 상기 제2 영역을 렌더링하는 단계는, 상기 클라이언트 단말의 상기 GPU가, 상기 디스플레이의 렌더링 영역을 상기 제1 디스플레이 영역에서 상기 제1 디스플레이 영역과 동일한 모양을 갖고 상기 제1 이미지 프레임의 상기 제2 영역을 포함하는 제3 디스플레이 영역으로 재배치하는 단계를 포함할 수 있다. 일 실시예에서, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로 상기 제1 FOV를 가리키는 정보를 전송하는 단계, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로부터 상기 제1 FOV에 대응되는 상기 비디오의 제2 이미지 프레임을 나타내는 제2 이미지 프레임 데이터를 수신하는 단계 및 상기 클라이언트 단말의 상기 GPU가, 상기 클라이언트 단말의 상기 디스플레이 상에, 상기 디스플레이의 상기 제1 디스플레이 영역에 상기 제2 이미지 프레임의 일부 영역을 렌더링하고, 상기 디스플레이의 상기 제2 디스플레이 영역에 상기 제1 이미지 프레임의 상기 제2 영역을 렌더링하는 단계를 더 포함할 수 있다. 일 실시예에서, 상기 디스플레이는 직사각형 모양이고, 상기 디스플레이의 상기 제1 디스플레이 영역은 직사각형 모양이고, 상기 디스플레이의 중앙에 위치하며, 상기 디스플레이의 상기 제2 디스플레이 영역은 상기 디스플레이의 왼쪽 여백, 오른쪽 여백, 위쪽 여백 및 아래쪽 여백 중 적어도 하나를 포함할 수 있다. 일 실시예에서, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로 상기 제1 FOV를 가리키는 정보를 전송하는 단계, 상기 클라이언트 단말의 상기 제1 프로세서가, 상기 비디오 스트리밍 서버로부터 상기 제1 FOV에 대응되고 상기 비디오의 제2 이미지 프레임을 나타내는 제2 이미지 프레임 데이터를 수신하는 단계 및 상기 클라이언트 단말의 상기 GPU가, 상기 디스플레이의 상기 렌더링 영역을 상기 제3 디스플레이 영역에서 상기 제1 디스플레이 영역으로 재배치하는 단계를 더 포함할 수 있다.
상술한 본 발명에 따르면, 상기 VR 비디오 스트리밍 시스템은 고해상도 VR 비디오 데이터를 처리할 때 GPU의 컴퓨팅 성능(e.g. 멀티 코어를 통한 병렬 컴퓨팅 성능)을 효과적으로 활용할 수 있다.
또한, 현재의 시야 범위(Field of View; FOV)가 반영된 비디오 부분만을 전송함으로써 상당한 네트워크 대역폭 요구량(e.g. FOV 비디오 데이터 전송은 단지 1 ~ 2Mbps의 대역폭만 요구되는데 반해 4K UHD 비디오 데이터 전송은 16 ~ 20Mbps의 대역폭이 요구됨)이 절감될 수 있다.
또한, FOV가 반영된 비디오 부분만을 전송함으로써 사용자 경험뿐만 아니라 스트리밍 비용까지 모두 개선할 수 있다.
또한, FOV가 반영된 비디오 부분만을 전송함으로써 낮은 데이터 전송 속도로 스트리밍 서비스를 제공할 수 있다. 그렇게 함으로써, 데이터 버퍼링을 제거하고 클라이언트 단말의 배터리 소모를 감소시킬 수 있다.
또한, FOV가 반영된 비디오 부분만을 전송함으로써 스트리밍 서비스의 비용 또한 줄일 수 있다. 왜냐하면, 상기 스트리밍 서비스의 제공자는 자신의 네트워크 서비스 사용량에 따라 비용을 지불할 필요가 있기 때문이다.
또한, FOV가 반영된 비디오 부분만을 전송함으로써 콘텐츠 불법 복제 또한 방지할 수 있다. FOV가 반영된 비디오 부분이 전송됨에 따라 수신된 부분적으로 스트리밍 된 비디오 데이터는 동적으로 변경되는 FOV가 반영된 비디오의 일부분만을 포함할 수 있기 때문에, 이로써 상기 비디오의 콘텐츠가 불법적으로 복사되는 것을 방지한다.
또한, 현재의 FOV에 기초하여 클라이언트 단말에 포함된 디스플레이의 렌더링 영역을 변경함으로써, 상기 클라이언트 단말은 지연 없이 변경된 시야각에 대한 비디오 부분을 사용자에게 즉각적으로 제공할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 본 발명 또는 상술한 본 발명과 관련된 목적, 특징 및/또는 이점은 아래의 도면과 함께 후술할 상세한 설명을 참조하면 더욱 명확하게 이해될 것이다.
도 1은 본 발명의 몇몇 실시예에 따른 클라이언트 단말과 VR 비디오 스트리밍 시스템을 포함하는 네트워크 환경의 블록도이다.
도 2는 본 발명의 실시예에 따른 컴퓨팅 시스템을 예시적으로 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 VR 비디오 스트리밍 시스템을 예시적으로 나타내는 블록도이다.
도 4는 프레임 이미지를 예시적으로 나타내는 도면이다.
도 5 및 도 6은 본 발명의 몇몇 실시예에 따라, VR 비디오 스트리밍 시스템에 의해 수행되는 FOV 기반의 후처리 방법의 동작을 도시하는 흐름도이다.
도 7, 도 8 및 도 9는 본 발명의 실시예에 따른 VR 비디오 스트리밍 시스템에서 수행되는 FOV 기반의 후처리 방법을 예시적으로 나타내는 블록도이다.
도 10, 도 11 및 도 12는 본 발명의 실시예에 따른 VR 비디오 스트리밍 시스템에서 인코딩 지연 시간을 감소하기 위한 FOV 기반 후처리 방법을 예시적으로 나타내는 블록도이다.
도 13은 본 발명의 몇몇 실시예에 따른 클라이언트 단말의 비디오 디스플레이 방법의 동작을 도시하는 흐름도이다.
도 14, 도 15 및 도 16은 본 발명의 몇몇 실시예에서, 비디오 디스플레이 방법을 통해 디스플레이 된 클라이언트 단말의 디스플레이 화면을 예시적으로 나타내는 도면이다.
가상 현실(Virtual Reality; VR) 비디오 스트리밍을 위한 방법 및 시스템에 관한 발명이 제공된다. 보다 자세하게는, GPU(Graphic Processing Unit)를 이용하여 가상 현실 비디오를 스트리밍하고 처리하기 위한 방법 및 시스템에 관한 발명이 제공된다. 몇몇 실시예에서, VR 비디오 스트리밍 시스템에 포함된 비디오 서버의 GPU는 구체 이미지(spherical image) 프레임 데이터를 제1 구체 이미지 프레임 데이터의 일부분에 대응되는 이퀴렉탱귤러(equirectangular) 이미지 프레임 데이터로 변환할 수 있다. 이로 인해, 상기 VR 비디오 스트리밍 시스템은 고해상도의 VR 비디오 데이터 처리할 때 GPU의 컴퓨팅 성능(e.g. 다중 코어를 통한 병렬 컴퓨팅 성능)을 효과적으로 활용할 수 있다.
몇몇 실시예에서, 비디오 서버의 프로세서는 클라이언트 단말로부터 제1 시야 범위(Field of View; FOV)에 관한 정보를 수신할 수 있고, 비디오 서버의 GPU는 제1 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임의 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 여기서, 제1 구체 이미지 프레임은 제1 구체 이미지 프레임 데이터가 나타내는 이미지 프레임을 말한다. 이와 같은 구성으로, 클라이언트 단말로부터의 사용자 입력마다, VR 비디오 스트리밍 시스템은 상기 사용자가 현재 보고 싶어하는 비디오 데이터의 부분만을 상기 클라이언트 단말에 제공할 수 있다. 예를 들어, 상기 VR 비디오 스트리밍 시스템은 상기 사용자가 입력한 현재 FOV에 관한 비디오 부분만을 상기 클라이언트 단말에 제공할 수 있다. 현재 FOV에 관한 비디오 부분만을 전송함으로써 얻을 수 이점은 매우 많다. 첫째, 이로 인해 상당한 네트워크 대역폭 요구량(e.g. FOV 비디오 데이터 전송은 1 ~ 2Mbps의 대역폭만 요구되는데 반해 4KUHD 비디오 데이터 전송은 16 ~ 20Mbps의 대역폭이 요구됨)이 절감될 수 있다. 둘째, FOV 비디오 데이터만을 전송함으로써 사용자 경험 및 스트리밍 서비스의 비용을 모두 개선시킬 수 있다. FOV 비디오 데이터만을 전송함으로써 낮은 데이터 전송 속도로 스트리밍 서비스의 제공 가능하므로, 데이터 버퍼링을 제거하고 클라이언트 단말의 배터리 소모 또한 줄일 수 있다. 또한, 상기 FOV 비디오 데이터만을 전송함으로써 스트리밍 서비스 비용 또한 줄일 수 있다. 왜냐하면, 스트리밍 서비스 제공자는 네트워크 서비스 사용량에 따라 요금을 지불할 필요가 있기 때문이다. 셋째, FOV 비디오 데이터만을 전송함으로써 콘텐츠의 불법 복제를 방지할 수 있다. 예를 들어, 4K UHD 비디오 콘텐츠는 불법 복제에 노출될 가능성이 크다. FOV 비디오 데이터의 전송을 통해서 수신된, 부분적으로 스트리밍 된 비디오 데이터는 동적으로 변경된 시야각에 관한 비디오 데이터 부분만 포함할 수 있으므로 비디오 콘텐츠가 불법적으로 복사되는 것을 방지한다.
몇몇 실시예에서, 클라이언트 단말의 GPU는 비디오 스트리밍 서버로부터 수신된 이미지 프레임의 제1 영역을 디스플레이의 제1 디스플레이 영역(e.g. 디스플레이의 중앙 영역)에 렌더링(rendering)하는 한편, 상기 이미지 프레임의 나머지 영역을 상기 디스플레이의 제2 디스플레이 영역(e.g. 직사각형 디스플레이의 네 방향 여백)에서 숨긴다. 특정 FOV(e.g. 디스플레이의 왼쪽 상단 코너를 향한 시야각)를 가리키는 사용자의 입력 수신에 응답하여, 상기 GPU는 이전에 제2 디스플레이 영역에 숨겨지고 제1 FOV(e.g. 이전에 상기 디스플레이의 왼쪽 상단 근처에 숨겨진 영역) 내에 위치한 제1 이미지 프레임의 제2 영역을 렌더링 할 수 있다. 이와 같은 구성으로 인해, 예를 들어, 클라이언트 단말의 사용자가 이미지 프레임을 보면서 디스플레이의 왼쪽 상단 코너를 향하여 시야각을 변화시킬 때, 상기 클라이언트 단말은 이전에 숨겨놓은 상기 이미지 프레임의 일부분을 즉시 보여줄 수 있다. 따라서, 클라이언트 단말은 비디오 스트리밍 서버로부터 새로운 비디오 부분을 수신한 후에 변경된 시야각의 새로운 비디오 부분을 제공하는 경우에 발생할 수 있는 지연 없이 변경된 시야각의 비디오 부분을 즉각적으로 상기 사용자에게 제공 할 수 있다.
도 1은 VR 비디오 스트리밍 시스템(100), 클라이언트 단말(200A, 200B) 및 VR 콘텐츠 서버(750)를 포함하는 네트워크 환경(1000)을 예시적으로 나타내는 블록도이다. 개략적으로 보면, 도 1에 도시된 네트워크 환경은 상호 연결된 네트워크 노드(e.g. VR 비디오 시스템과 VR 콘텐츠 서버)에 대한 네트워크(650)와 상호 연결된 네트워크 노드(e.g. 클라이언트 단말과 VR 비디오 시스템)에 대한 네트워크(650')를 포함한다. 몇몇 실시예에서, 네트워크(650)는 네트워크(650')와 동일한 네트워크이다. 도 1을 참조하여 보다 상세하게 살펴보면, 네트워크(650 또는 650')는 네트워크 환경(1000)에 참여하는 장치들 사이에 인터랙션(interaction)을 용이하게 하기 위해 이용된다. 실례가 되는 예제의 네트워크(650 또는 650 ')는 인터넷이다. 그러나, 다른 실시예에 따르면, 네트워크(650)는 데이터 센터 내의 로컬 네트워크(local network), 네트워크 페브릭(network febric) 또는 다른 근거리 영역 또는 광역 네트워크 등 다양한 종류의 네트워크일 수 있다. 네트워크(650 또는 650 ')는 다수의 연결된 서브 네트워크 또는 자율적인 네트워크로 구성될 수 있다. 또한, 네트워크(650 또는 650 ')는 기업의 인트라넷(intranet)과 같은 LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network), 인터넷과 같은 네트워크 간 네트워크 또는 P2P(Peer-to-Peer) 네트워크(e.g. 애드혹(ad hoc) WiFi P2P 네트워크)일 수 있다. 임의의 유형 및/또는 형태의 데이터 네트워크 및/또는 통신 네트워크가 네트워크(650 또는 650 ')에 이용될 수 있다. 네트워크(650 또는 650')는 공개 네트워크(public network), 사설 네트워크(private network) 또는 공개 및 사설 네트워크의 조합일 수 있다. 일반적으로, 네트워크(650 또는 650 ')는 컴퓨팅 장치 사이에서 정보를 전달하는데 이용된다. 예를 들어, 클라이언트 단말(200A, 200B), VR 비디오 스트리밍 시스템(100) 및 VR 콘텐츠 서버(750) 사이에 정보를 전달하는데 이용될 수 있다.
도 1을 참조하면, VR 비디오 스트리밍 시스템(100)은 비디오 서버(120)와 스트리머(180, streamer)를 포함한다. 몇몇 실시예에서, 비디오 서버(120)는 VR 비디오 데이터를 로컬에 저장(e.g. 비디오 파일로서)하거나 VR 콘텐츠 서버(750)에서 스트리밍되는 비디오 데이터를 수신한다. 몇몇 실시예에서, 스트리머(180)는 통신 서버(130)와 스트리밍 서버(140)를 포함한다. 몇몇 실시예에서, 통신 서버(130)는 클라이언트 단말(200A, 200B) 각각과 VR 비디오 스트리밍 시스템(100)의 서비스에 관한 정보(e.g. 사용자 로그인, VR 비디오 콘텐츠 선택, 저지연 비디오 스트리밍 등)를 통신한다. 몇몇 실시예에서, 스트리밍 서버(140)는 VR 비디오 프레임 데이터를 각 클라이언트 단말(200A, 200B)로 스트리밍 한다. 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)은 도 2에 도시된 컴퓨팅 시스템(300)과 유사한 구성을 갖는다. 컴퓨팅 시스템(300)은 도 2를 참조하여 이하에서 보다 상세하게 설명한다. 도 1에 도시된 VR 비디오 스트리밍 시스템(100)의 몇몇 실시예에서, 도 2에 도시된 컴퓨팅 시스템(300)의 구성 요소 중 일부는 생략될 수도 있다.
다시 도 1을 참조하면, 각각의 클라이언트 단말(200A, 200B)은 VR 비디오 스트리밍 시스템(100)으로부터 비디오 스트리밍 데이터를 수신한다. 보다 자세하게는, 스트리머(180)의 스트리밍 서버(140)로부터 상기 비디오 스트리밍 데이터를 수신할 수 있다. 몇몇 실시예에서, 클라이언트 단말(200A, 200B) 각각은 디스플레이(e.g. HMD(Head Mounted Display), 광학 HMD)), 입력 장치(e.g. 카메라, 헤드셋) 및 센서(e.g. 모션 센서, 위치/방향 센서, 모션 시뮬레이터, 제스처 추적 시스템 등)를 갖는 가상 현실 클라이언트 단말일 수 있다. 몇몇 실시예에서, 클라이언트 단말(200A, 200B) 각각은 또한 VR 비디오 스트리밍 시스템(100)의 서비스에 관한 정보를 교환하기 위해 통신 서버(130)와 통신할 수 있다. 예를 들어, 클라이언트 단말(200A, 200B) 각각은 방위각 및 피치각을 가리키는 시야각 데이터의 형태로 사용자의 현재 FOV를 통신 서버(130)에 제공할 수 있다. 몇몇 실시예에서, 클라이언트 단말(200A, 200B)은 도 2에 도시된 컴퓨팅 시스템(300)과 유사한 구성을 갖는다. 도 1에 도시된 클라이언트 단말(200A, 200B)의 몇몇 실시예에서, 도 2에 도시된 컴퓨팅 시스템(300)의 구성 요소 중 일부는 생략될 수도 있다.
도 2는 컴퓨팅 시스템(300)을 예시적으로 나타낸 블록도이다. 예시적인 구현예에서, 예시적인 컴퓨팅 시스템(300)은 본 명세서에 기재된 컴퓨터화된 구성 요소를 구현하는 용도로 적합하다. 개략적으로 살펴보면, 컴퓨팅 시스템(300)은 인스트럭션(instruction)에 따라 동작을 수행하기 위한 적어도 하나의 프로세서(310)와 인스트럭션 및 데이터를 저장하기 위한 하나 이상의 메모리 장치(360 또는 320)를 포함한다. 컴퓨팅 시스템(300)은 또한 다음 섹션에서 설명되는 바와 같이 적어도 하나의 GPU(370, Graphic Processing Unit)와 비디오 메모리(380)를 포함한다.
도 2를 참조하면, 도시된 예시적인 컴퓨팅 시스템(300)은 통신 시스템(340, e.g. 버스)을 통해 메모리(350)와 통신하는 하나 이상의 프로세서(310), 네트워크(미도시)에 연결하기 위한 네트워크 인터페이스 포트를 갖는 적어도 하나의 네트워크 인터페이스 컨트롤러(330) 및 입/출력(I/O) 컴포넌트(350)와 같은 다른 컴포넌트를 포함한다. 일반적으로, 프로세서(들)(310)는 메모리(360)로부터 수신한 인스트럭션(또는 컴퓨터 프로그램)을 실행할 것이다. 도시된 프로세서(310)는 캐시 메모리(320)를 포함하거나 직접적으로 연결된다. 경우에 따라, 캐시 메모리(320)는 메모리(360)로부터 인스트럭션을 읽어오고, 프로세서(310)는 캐시 메모리(320)로부터 상기 인스트럭션을 읽어와 실행하게 된다.
보다 자세하게는, 프로세서(들)(310)는 예를 들어 메모리(360) 또는 캐시 메모리(320)로부터 인출(fetch)된 인스트럭션을 처리하는 임의의 논리 회로일 수 있다. 많은 실시예에서, 프로세서(310)는 마이크로프로세서 유닛(microprocessor unit) 또는 특수한 목적의 프로세서이다. 컴퓨팅 시스템(300)은 여기에 설명된 바와 같이 동작할 수 있는 임의의 프로세서 또는 프로세서의 집합에 기초할 수 있다. 프로세서(들)(310)는 단일 코어 또는 멀티 코어 프로세서일 수 있다. 프로세서(들)(310)는 다수의 별개의 프로세서일 수 있다.
메모리(360)는 컴퓨터가 읽기 가능한 데이터를 저장하기에 적합한 임의의 장치일 수 있다. 메모리(360)는 고정식 저장 장치 또는 이동식 저장 매체를 읽기 위한 장치일 수 있다. 메모리(360)의 예로는 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치, 반도체 메모리 장치(e.g. EPROM, EEPROM, SDRAM 및 플래시 메모리 장치), 자기 디스크, 광자기 디스크 및 광 디스크(e.g. CD ROM, DVD -ROM 또는 블루레이 디스크)가 포함될 수 있다. 컴퓨팅 시스템(300)은 임의의 수의 메모리 장치(360)를 가질 수 있다.
캐시 메모리(320)는 일반적으로 빠른 접근 시간을 제공하기 위해 프로세서(들)(310)에 근접하여 배치 된 컴퓨터 메모리의 형태이다. 몇몇 실시예에서, 캐시 메모리(320)는 프로세서(들)(310)의 일부분이거나 프로세서(310)와 동일한 칩 상에 있을 수 있다. 몇몇 실시예에서, L2 및 L3 캐시 레이어와 같이 다중 레벨의 캐시(320)가 있을 수 있다.
네트워크 인터페이스 컨트롤러(330)는 네트워크 인터페이스(때때로 네트워크 인터페이스 포트로 명명됨)를 통한 데이터 교환을 관리한다. 네트워크 인터페이스 컨트롤러(330)는 네트워크 통신을 위해 OSI 모델의 물리 계층 및 데이터 링크 계층을 처리한다. 몇몇 실시예에서, 네트워크 인터페이스 컨트롤러(330)의 태스크 중 일부는 하나 이상의 프로세서(들)(310)에 의해 처리된다. 몇몇 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 프로세서(310)의 일부일 수 있다. 몇몇 실시예에서, 컴퓨팅 시스템(300)은 단일 컨트롤러(330)에 의해 제어되는 다수의 네트워크 인터페이스를 갖는다. 몇몇 실시예에서, 컴퓨팅 시스템(300)은 다수의 네트워크 인터페이스 컨트롤러(330)를 갖는다. 몇몇 실시예에서, 각각의 네트워크 인터페이스는 물리적 네트워크 링크(e.g. cat-5 이더넷 링크)에 대한 연결점이다. 몇몇 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 무선 네트워크 접속을 지원하고 네트워크 인터페이스 포트는 무선(e.g. 라디오) 송/수신기(e.g. IEEE 802.11 프로토콜, NFC(Near Field Communication), 블루투스(Bluetooth), ANT 또는 다른 무선 프로토콜 중 임의의 것에 대한)이다. 몇몇 실시예에서, 네트워크 인터페이스 컨트롤러(330)는 이더넷(Ethernet)과 같은 하나 이상의 네트워크 프로토콜을 구현한다. 일반적으로, 컴퓨팅 시스템(300)은 네트워크 인터페이스를 이용함으로써 물리적 또는 무선 링크를 통해 다른 컴퓨팅 장치와 데이터를 교환한다. 네트워크 인터페이스는 컴퓨팅 시스템 (300)을 직접 다른 장치와 연결시키거나 중계 장치를 통해 컴퓨팅 시스템 (300)을 다른 장치에 연결시킬 수 있다. 여기서, 상기 중계 장치는 예를 들어, 허브, 브리지, 스위치 또는 라우터와 같이 컴퓨팅 시스템(300)을 인터넷과 같은 데이터 네트워크에 연결시키는 네트워크 장치를 의미할 수 있다.
컴퓨팅 시스템(300)은 하나 이상의 입력 또는 출력(I/O) 장치를 포함하거나 그에 대한 인터페이스를 제공할 수 있다. 입력 장치에는 키보드, 마이크, 터치 스크린, 풋 페달, 센서, MIDI 장치 및 마우스 또는 트랙볼과 같은 포인팅 장치가 포함될 수 있으나, 이에 국한되는 것은 아니다. 출력 장치에는 비디오 디스플레이, 스피커, 재생 가능한 점자 단말기, 조명, MIDI 장치 및 2-D 또는 3-D 프린터가 포함될 수 있으나, 이에 국한되는 것은 아니다.
다른 구성 요소에는 I/O 인터페이스, 외부 직렬 장치 포트 및 추가적인 보조 프로세서(co-processor)가 포함될 수 있다. 예를 들어, 컴퓨팅 시스템(300)은 입력 장치, 출력 장치 또는 추가 메모리 장치(e.g. 휴대용 플래시 드라이브 또는 외부 미디어 드라이브)를 연결하기 위한 인터페이스(e.g. USB(Universal Serial Bus) 인터페이스)를 포함할 수 있다. 몇몇 실시예에서, 컴퓨팅 시스템(300)는 보조 프로세서와 같은 부가 장치를 포함할 수 있다. 예를 들어, 컴퓨팅 시스템(300)은 수치 동작 보조 프로세서를 포함할 수 있고, 상기 수치 동작 프로세서는 높은 정밀도 또는 복잡한 계산을 수행함으로써 프로세서(310)를 보조할 수 있다.
GPU(370)는 그래픽 가속기 칩, 프로세서, ASIC(Application Specific Integrated Circuit), 아날로그 회로, 디지털 회로, 가속기 카드 또는 이들의 조합일 수 있다. 일 실시예에서, GPU(370)는 nVidia, ATI 또는 Matrox에 의해 제조된 것과 같은 퍼스널 컴퓨터 그래픽 가속기 카드 또는 컴포넌트일 수 있다. GPU(370)는 3차원 텍스처 매핑(3D texture mapping)을 위한 API(Application Programming Interface)를 이용하는 것과 같이, 볼륨 렌더링(volume rendering) 프로세스를 가속화하기 위한 하드웨어 장치를 제공한다. 예를 들어, 그러한 API는 OpenGL 및 DirectX를 포함하지만, 다른 API는 GPU(370)와 독립적으로 이용되거나 GPU(370)와 함께 이용될 수 있다. nVidia GPU에 대한 예시적인 API는 http://docs.nvidia.com/cuda/#axzz40TIGVdNL에서 이용 가능한 "CUDA Toolkit Documentation v. 7.5"라는 제목의 웹 문서에 설명되어 있으며, 본 특허 출원에서 설명된 기능을 수행하도록 GPU를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 몇몇 실시예에서, API 또는 상기 API를 제어하는 애플리케이션(application)에 기초하여, GPU(370)는 컴퓨터 그래픽에 대한 변형(transformation), 투영(projection) 및 매핑(e.g. 구체 투영(spherical projection) 및 좌표계 변환)을 수행하도록 동작할 수 있다.
비디오 메모리(380)는 VRAM(Video Random Access Memory), RAM(Random Access Memory), RAM 드라이브 또는 RAM 디스크, 또는 데이터 또는 비디오 정보를 저장하기 위한 다른 메모리 장치를 포함한다. 일 실시예에서, 비디오 메모리(380)는 GPU(370)에 대한 VRAM이다. GPU(370) 용 드라이버 또는 메모리 드라이버는 비디오 메모리(380)에 의한 데이터 저장을 제어한다. 비디오 메모리(380)는 데이터를 저장, 전송 및 인출하기 위해 드라이버에 응답한다. 비디오 메모리(380)는 데이터의 서브셋(subset) 또는 블록을 저장하도록 동작할 수 있다.
도 3은 VR 비디오 스트리밍 시스템을 예시적으로 나타내는 블록도이다. 도 3을 참조하면, 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)은 제1 프로세서(101), 제1 메모리(110), GPU(102) 및 제2 메모리(150)를 포함한다. 또한, 제2 메모리(150)는 예를 들어 디코딩 된 프레임 버퍼(160), 제1 프레임 버퍼(161), 제2 프레임 버퍼(162) 및 인코딩 된 프레임 버퍼(164) 등의 복수의 프레임 버퍼를 포함한다. 몇몇 실시예에서, 제1 프로세서(101)는 도 2에 도시된 프로세서(310)와 유사한 구성을 갖는다. 몇몇 실시예에서, GPU(102)는 도 2의 GPU(370)와 유사한 구성을 갖는다. 몇몇 실시예에서, 제1 메모리(110)는 도 2에 도시된 메모리(360)와 유사한 구성을 갖는다. 몇몇 실시예에서, 제2 메모리(150)는 도 2에 도시된 비디오 메모리(380)와 유사한 구성을 갖는다. 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)은 제1 메모리(110) 또는 제2 메모리(150)에 상주 할 수 있는 소스 비디오 메모리(115, source video memory)를 포함한다.
도 3을 참조하면, 몇몇 실시예에서, 비디오 서버(120)는 제1 프로세서(101) 또는 GPU(102)에 의해 실행되거나 구현될 수 있다. 예를 들어, 비디오 서버(120)는 제1 프로세서(101)를 통해 소스 비디오 데이터(e.g. 비디오 서버(120)의 로컬에 저장된 비디오 파일 또는 VR 콘텐츠 서버(750)로부터 스트리밍 된 비디오 데이터)를 얻어오도록 구성될 수 있다. 몇몇 실시예에서, 상기 소스 비디오 데이터는 다수의 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 프레임 데이터)를 포함한다. 몇몇 실시예에서, 비디오 서버(120)는 상기 소스 비디오 데이터를 소스 비디오 메모리(115)에 저장할 수 있다.
몇몇 실시예에서, 비디오 서버(120)는 GPU(102)에 의해 실행되거나 구현될 수 있는 파서(121, parser), 디코더(122, decoder), 후처리기(123, post-processor) 및 인코더(124, encoder)를 포함할 수 있다. 몇몇 실시예에서, 파서(121)는 GPU(102)를 통해 소스 비디오 메모리(115)에 저장된 소스 비디오 데이터를 파싱하고, 상기 소스 비디오 데이터로부터 상이한 구체 이미지 프레임을 식별한다. 몇몇 실시예에서, 디코더(122)는 GPU(102)를 통해 파싱 된 구체 이미지 프레임을 디코딩하고, 디코딩 된 구체 이미지 프레임을 디코딩 된 프레임 버퍼(160)에 저장한다. 몇몇 실시예에서, 디코더(122) 및 인코더(124)는 H.264, H.265/HEVC(High Efficiency Video Coding)와 같은 산업 표준(industrial standard)의 압축/압축해제 기술을 이용할 수 있다. 몇몇 실시예에서, 디코더(122)는 제1 구체 이미지 프레임 데이터를 디코딩하고 디코딩 된 데이터를 디코딩 된 프레임 버퍼(160)에 저장한다. 예시적인 디코더는 2015년 11월 "NVIDIA VIDEO DECODER(NVCUVID) INTERFACE Programming Guide "라는 제목의 문서에 설명되어 있으며, 본 특허 출원에서 설명된 디코딩 기능을 달성하기 위해 디코더를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 몇몇 실시예에서, 후처리기(123)는 컬러 포맷 변환(color format conversion)을 수행한다. 예를 들어, 후처리기(123)는 디코딩 된 프레임 버퍼(160)에 저장된 프레임 데이터를 휘도(luminance)/색차(chrominance) 포맷에서 ARGB(Alpha Red Green Blue) 컬러 포맷으로 변환할 수 있다. 몇몇 실시예에서, 후처리기(123)는 컬러 포맷 변환된 프레임 데이터를 제1 프레임 버퍼(161)에 저장한다. 몇몇 실시예에서, 후처리기(123)는 GPU(102)를 통해 구체-이퀴렉탱귤러 변환 (e.g. 구체/이퀴렉탱귤러 투영 또는 매핑 방법 이용)을 수행한다. 예시적인 구체/이퀴렉탱귤러 투영은 Paul Bourke에 의해 작성된 "Transformations and projections"이라는 제목의 문서에 설명되어 있으며, 본 특허 출원에서 설명된 투영, 전환 및 매핑 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 몇몇 실시예에서, 제1 구체 이미지 프레임 데이터가 제1 프레임 버퍼(161)에 저장되는 것에 응답하여, 후처리기(123)는 GPU(102)를 통해 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다. 예를 들어, 후처리기(123)는 GPU(102)를 통해 360도 4K UHD 이미지 프레임 데이터를 보정되거나(corrected) 왜곡(undistorted)되지 않은 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다. 몇몇 실시예에서, 후처리기(123)는 GPU(102)를 통해 제1 구체 이미지 프레임 데이터(e.g. 360도 4K UHD 이미지 프레임 데이터)를 제1 구체 이미지 프레임 데이터가 나타내는 구체 이미지의 일부분에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터(e.g. 클라이언트 단말에서 사용자의 현재 FOV에 대응되는 360도 4K UHD 이미지 프레임 데이터의 일부분)로 변환한다. 도 4는 구체 프레임 이미지(301)와 현재 FOV에 대응되는 및 구체 프레임 이미지(301)의 일부분(302)을 예시적으로 도시한다.
또한 몇몇 실시예에서, 후처리기(123)는 GPU(102)를 통해 증강 현실(Augmented Reality; AR)을 위한 이미지 처리를 수행한다. 예를 들어, 후처리기(123)는 변환된 제1 이퀴렉탱귤러 이미지 프레임을 그래픽 콘텐츠(e.g. 도로 이미지를 차량 이미지와 블렌딩) 또는 텍스트/그래픽 정보(e.g. 거리 이미지를 상점 이미지와 블렌딩)와 함께 블렌딩(blending)할 수 있다. 몇몇 실시예에서, 후처리 동작(e.g. 구체-이퀴렉탱귤러 변환) 완료에 응답하여, 후처리기(123)는 후처리 된 프레임 데이터를 제2 프레임 버퍼(162)에 저장한다. 몇몇 실시예에서, 인코더(124)는 GPU(102)를 통해 제2 프레임 버퍼(162)에 저장된 상기 후처리 된 프레임 데이터를 인코딩 하고, 인코딩 된 프레임 데이터를 인코딩 된 프레임 버퍼(164)에 저장한다. 예시적인 인코더는 "NVIDIA VIDEO ENCODER(NVENC) INTERFACE Programming Guide"라는 제목의 문서에 설명되어 있으며, 본 특허 출원에서 설명된 상기 인코딩 기능을 달성하기 위해서 인코더를 구성하는 방법에 대한 자세한 내용은 본 명세서에 참조로 포함된다. 몇몇 실시예에서, 파서(121), 디코더(122), 후처리기(123) 및 인코더(124)는 VR 비디오 스트리밍 시스템(100)의 GPU(102)에 의해 실행된다. 몇몇 실시예에서, 파서(121), 디코더(122), 후처리기(123) 및 인코더(124)의 일부 동작은 제1 프로세서(101)에 의해 실행되고, 다른 동작은 GPU(102)에 의해 실행된다.
도 3을 참조하면, 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)은 통신 서버(130)를 포함한다. 또한, 통신 서버(130)는 제1 프로세서(101) 또는 GPU(102) 중 적어도 하나에 의해 실행되거나 구현될 수 있다. 몇몇 실시예에서, 통신 서버(130)는 제1 프로세서(101)를 통해 클라이언트 단말(e.g. 클라이언트 단말(200A))과 연결을 설정한다. 몇몇 실시예에서, 상기 설정된 연결은 예를 들어 웹 소켓 프로토콜과 같이 전이중 채널 프로토콜(full-duplex channel protocol)을 이용한다. 그렇게 함으로써, 많은 양의 프로토콜 헤더(e.g. http 헤더)를 통신하지 않고 약간의 프레임(e.g. 웹 소켓 프레임)을 이용하여 연결이 설정될 수 있기 때문에 지연 시간이 감소될 수 있다. 몇몇 실시예에서, 통신 서버(130)는 후처리기(123)에 의해 변환된 제1 이퀴렉탱귤러 이미지 프레임 데이터에 대응되는 제1 FOV에 관한 제1 정보를 클라이언트 단말로 전송할 수 있다. 몇몇 실시예에서, 통신 서버(130)는 상기 클라이언트 단말로부터 제2 FOV(e.g. 상기 클라이언트 단말의 사용자의 현재 FOV)에 관한 제2 정보를 수신할 수 있다. 몇몇 실시예에서, 클라이언트 단말(200A) 및 VR 비디오 스트리밍 시스템(100) 양쪽 모두에서, 초기 FOV는 디폴트로 사용자가 현재 보고 있는 이미지 프레임의 중심에서 일직선으로 오른쪽을 향하는 각도로 설정될 수 있다. 몇몇 실시예에서, FOV에 관한 정보는 피치각 및 방위각을 가리키는 시야각 정보를 포함한다. 몇몇 실시예에서, 클라이언트 단말의 요청에 따라(e.g. 웹 소켓 프로토콜을 통해), 통신 서버(130)는 제1 프로세서(101)를 통해 상기 사용자의 현재 FOV를 비동기적으로 업데이트할 수 있다. 또한, 상기 업데이트는 GPU(102)가 비디오 서버(120)의 동작(e.g. 파서(121), 디코더(122), 후처리기(123) 및 인코더(124)에 의해 수행되는 동작)을 처리하는 동안 수행될 수 있다. 몇몇 실시예에서, 비동기적으로 업데이트 된 FOV는 도 4 내지 도 6를 참조하여 후술되는 바와 같이 인코딩 지연 시간을 줄이기 위해 활용될 수 있다. 예를 들어, 비디오 서버(120)는 GPU(102)를 통해 구체 이미지 프레임 데이터를 상기 구체 이미지 프레임 데이터가 나타내는 구체 이미지에서 비동기적으로 업데이트 된 FOV에 대응되는 이퀴렉탱귤러 구체 이미지 프레임 데이터로 즉시 변환함으로써 인코딩 지연 시간을 감소시킬 수 있다. 몇몇 실시예에서, 클라이언트 단말은 통신 서버(130)와 안정적인 연결 방법(e.g. jetty 기반의 웹 소켓 프로토콜)을 이용하여 상기 클라이언트 단말의 사용자의 현재 시야각에 대해 통신 서버를 업데이트할 수 있다. 그렇게 함으로써 일정한 연결 상태를 제공할 수 있고, 보안 오버 헤드 및 지연 시간을 감소시킬 수다.
몇몇 실시예에서, 클라이언트 단말은 특정한 VR 이미지/비디오 데이터를 통신 서버(130)로 요청할 수 있다. 예를 들어, 클라이언트 단말은 웹 소켓 프로토콜을 통해 통신 서버(130)에 VR 이미지 요청을 전송할 수 있다. 몇몇 실시예에서, 이러한 클라이언트 단말의 요청에 따라, 통신 서버(130)는 제1 프로세서(101)를 통해 상기 요청에 대응되는 소스 비디오 데이터(e.g. 로컬 파일에 저장되거나 VR 콘텐츠 서버(750)에 의해 스트리밍 된 소스 비디오 데이터)를 인출하고, GPU(102)에게 상기 대응되는 소스 비디오 데이터를 제공할 수 있다. GPU(102)는 상기 대응되는 소스 비디오 데이터에 대하여 상술한 디코딩/후처리/인코딩 동작을 수행할 수 있다. 몇몇 실시예에서, 통신 서버(130)는 VR 비디오 스트리밍 시스템(100)의 서비스를 관리하기 위한 용도로 웹 서비스를 제공 할 수 있다(e.g. 상기 서비스에 대한 사용자 로그인 및 인증서(credential) 검사 관리, 사용자 계정/프로파일 관리 및 사용자가 시청할 비디오 콘텐츠를 선택할 수 있도록 하기 위한 VR 비디오 콘텐츠 리스팅).
도 3을 참조하면, VR 비디오 스트리밍 시스템(100)은 스트리밍 서버(140)를 포함할 수 있다. 또한, 스트리밍 서버(140)는 제1 프로세서(101) 또는 GPU(102) 중 적어도 하나에 의해 실행되거나 구현될 수 있다. 몇몇 실시예에서, 스트리밍 서버(140)는 제1 프로세서(101)를 통해 클라이언트 단말(e.g. 클라이언트 단말(200A))과 제1 연결을 설정한다. 몇몇 실시예에서. 스트리밍 서버(140)는 상기 클라이언트 단말의 사용자에게 비디오 데이터를 적시에 전달하기 위해 RTSP(Real Time Streaming Protocol)를 이용한다. 몇몇 실시예에서, 스트리밍 서버(140)는 인코딩 된 프레임 버퍼(164)로부터 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 읽어오고, 상기 인코딩 된 제1 이퀴렉탱귤러 이미지 프레임 데이터를 제1 연결을 통해 클라이언트 단말(200A)로 스트리밍 한다. 몇몇 실시예에서, 비디오 서버(120)와 스트리밍 서버(140)는 별개의 프로세스로서 실행된다. 몇몇 실시예에서, 통신 서버(130) 스트리밍 서버(140)는 단일 프로세스로서 실행되도록 구성될 수 있다. 몇몇 실시예에서, 통신 서버(130)는 웹 소켓 프로토콜을 통해 클라이언트 단말과 직접적으로 인터랙션 하고 비디오 서버(120)와 동일한 물리적 서버 상에서 실행된다. 그렇게 함으로써 피드백 및 통신 지연 시간이 감소될 수 있다. 몇몇 실시예에서, 스트리밍 서버(140)와 통신 서버(130)(통칭하여 "스트리머"(180))는 동일한 단일 프로세스로 실행되는 반면, 비디오 서버(120)는 스트리머(180)에 의해 시작되고 관리될 수 있는 별도의 프로세스로 실행된다. 이러한 이중 프로세스 구성은 네트워크 응답성(지연 감소에 의해) 및 시스템 안정성을 향상시킬 수 있다. 몇몇 실시예에서, 스트리밍 서버(140)와 비디오 서버(120)는 RAM 드라이브 또는 RAM 디스크를 통해 비디오 스트림 데이터(최종적으로 클라이언트 단말에 제공되는)를 공유할 수 있다. 이러한 RAM 드라이브 또는 RAM 디스크는 실제 데이터가 시스템 RAM에 있는 동안 파일로 액세스 될 수 있으므로 하드웨어 I/O 오버 헤드 및 지연 시간이 제거된다.
도 5는 본 발명의 몇몇 실시예에 따른 VR 비디오 스트리밍 시스템(100)의 FOV 기반 후처리 방법(400)의 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, FOV 기반 후처리 방법(400)은 단계(410)에서 시작하며, 여기서 비디오 서버의 GPU(e.g.도 3의 GPU(102))는 제1 구체 이미지 프레임 데이터를 생성하기 위해 소스 비디오를 파싱하고 디코딩 할 수 있다. 단계(420)에서, GPU(102)는 상기 비디오의 제1 구체 이미지 프레임을 나타내는 제1 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리(e.g. 제1 프레임 버퍼(161))에 저장할 수 있다. 단계(440)에서, 비디오 서버의 제1 프로세서(e.g. 도 3의 프로세서(101))는 클라이언트 단말로부터 제1 FOV에 관한 제1 정보를 수신할 수 있다. 단계(450)에서, 비디오 서버의 GPU(102)는 제1 프레임 버퍼 메모리에 저장된 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임의 제1 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 단계(460)에서, 비디오 서버의 GPU(102)는 스트리밍 서버(e.g. 도 3의 스트리밍 서버(140))가 제1 FOV에 대응되는 인코딩 된 이퀴렉탱귤러 이미지 프레임 데이터만을 클라이언트 단말로 스트리밍 할 수 있도록 상기 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩 할 수 있다. 또한, 상기 인코딩에 따라 인코딩 된 이미지 프레임 데이터가 생성된다. 도 5에 도시된 흐름도는 도 7 내지 도 9를 참조하여 보다 상세하게 설명하도록 한다.
도 7, 도 8 및 도 9는 예시적인 VR 비디오 스트리밍 시스템에서 수행되는 FOV 기반 후처리 방법을 예시적으로 나타낸 블록도이다. 도 7은 연속적인 비디오 프레임(e.g. 프레임 #N, 프레임 #N+1, 및 프레임 #N+2)에 대한 GPU 처리의 타이밍을 예시적으로 도시한다. 일반적인 비디오 파일의 FPS는 대개 초당 24, 25, 29 또는 30 프레임이다. 예를 들어, 도 7에 도시된 바와 같이, 30FPS 비디오 파일의 경우, 각 프레임의 인코딩 완료 사이의 시간 간격은 33ms 일 수 있고, 디코더로부터 프레임 #N의 타임 스탬프(time stamp)는 N * 33ms 일 수 있고, 프레임 #N+1의 타임 스탬프는(N+1) * 33ms 등이 될 수 있다. 다시 말해서, 도 7을 참조하면, 프레임 #N(501)과 프레임 #N+1(502)의 디코딩/후처리/인코딩의 완료 사이의 시간 간격은 33ms 이고, 프레임 #N+1(502)과 프레임 #N+2(503)의 디코딩/후처리/인코딩의 완료 사이의 시간 간격도 33ms 이다. 따라서, 본 예에서, 각 프레임은 1 초당 30 프레임을 생성(및 스트림)하기 위해 33ms 마다 인코딩 된다.
도 8은 프레임 #N을 후처리 하기 전에 클라이언트 단말로부터 FOV 변경 입력(e.g. 방위각 및 피치각)이 수신되는 경우에 FOV 기반의 후처리 방법이 수행되는 예를 도시한다. 도 8을 참조하면, 예를 들어, GPU가 프레임 #N을 디코딩(511)/후처리(513)/인코딩(514) 하고, 이어서 프레임 #N+1을 디코딩(515)/후처리(516)/인코딩(518) 한다. 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)의 프로세서(e.g. 도 3의 프로세서(101))가 프레임 #N을 후처리(513) 하기 전에 상기 클라이언트 단말로부터(제1 FOV에 관한) 제1 FOV 변경 입력 V1(512)을 수신하면, 상기 GPU는 프레임#N+1를 후처리(516) 하는 동안 제1 FOV 변경 입력 V1을 반영(517)할 수 있다. 몇몇 실시예에서, 상기 GPU는 프레임 #N+1과 연관된 구체 이미지 데이터를 상기 프레임 #N+1의 구체 이미지 프레임 데이터가 나타내는 구체 이미지 프레임의 제1 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환함으로써 제1 FOV 변경 입력 V1을 반영할 수 있다. 본 예에서, 프레임 #N의 인코딩 완료와 프레임 # N+1의 인코딩 완료 사이의 시간 간격은 33ms로 유지될 수 있다.
도 9는 프레임 #N의 후처리 동안 클라이언트 단말로부터의 FOV 변경 입력(e.g. 변경된 방위각 및 피치각)이 수신되는 경우에 FOV 기반 후처리 방법이 수행되는 다른 예를 도시한다. 도 9를 참조하면, 예를 들어, GPU는 프레임 #N을 디코딩(521)/후처리(523)/인코딩(524) 하고, 이어서 프레임 #N+1을 디코딩(525)/후처리(526)/디코딩(528) 한다. 몇몇 실시예에서, VR 비디오 스트리밍 시스템(100)의 프로세서가 상기 프레임 #N의 후처리(523) 후에 클라이언트 단말로부터(제2 FOV에 관한) 제2 FOV 변경 입력 V2를 수신(522)하면, 상기 GPU는 상기 프레임 #N+1을 후처리(526) 하는 동안 제2 FOV 변경 입력 V2를 반영(527)한다. 몇몇 실시예에서, 상기 GPU는 프레임 #N+1과 연관된 구체 이미지 데이터를 상기 프레임 #N+1의 구체 이미지 프레임 데이터가 나타내는 구체 이미지 프레임의 제2 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환함으로써 제2 FOV 변경 입력 V2를 반영할 수 있다. 본 예에서, 프레임 #N의 인코딩 완료와 프레임 # N+1의 인코딩 완료 사이의 시간 간격은 33ms로 유지될 수 있다.
이제, 도 5에 도시된 흐름도를 도 7 내지 도 9를 참조하여 보다 상세하게 설명한다. 단계(410)에서, 비디오 서버(e.g. 도 3에 도시된 비디오 서버(120))의 GPU(e.g.도 3에 도시된 GPU(102))는 제1 구체 이미지 프레임 데이터를 생성하기 위해 소스 비디오를 파싱하고 디코딩 할 수 있다. 예를 들어, 도 8을 참조하면, 상기 GPU가 프레임 #N에 대한 구체 이미지 프레임 데이터를 생성하기 위해 프레임 #N을 파싱 및 디코딩(511) 한다.
단계(420)에서, 비디오 서버의 상기 GPU는 상기 소스 비디오의 제1 구체 이미지 프레임을 나타내는 제1 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리(e.g. 도 3에 도시된 제1 프레임 버퍼(161))에 저장할 수 있다. 몇몇 실시예에서, 다음으로 상기 GPU는 제1 프레임 버퍼(161)에서 제1 구체 이미지 프레임 데이터를 읽어오고 제1 구체 이미지 프레임 데이터를 후처리 한다. 예를 들어, 도 8을 참조하면, 상기 GPU는 제1 프레임 버퍼(161)에서 프레임 #N에 대한 구체 이미지 프레임 데이터를 읽어오고 프레임 #N에 대한 제1 구체 이미지 프레임 데이터를 후처리(513) 한다. 유사하게, 도 9를 참조하면, 상기 GPU는 제1 프레임 버퍼(161)로부터 프레임 #N에 대한 구체 이미지 프레임 데이터를 읽어오고, 프레임 #N에 대한 제1 구체 이미지 프레임 데이터를 후처리(523) 한다.
단계(440)에서, 비디오 서버의 제1 프로세서(101)는 클라이언트 단말(e.g. 도 1 및 도 3에 도시된 클라이언트 단말(200A))로부터 제1 FOV에 관한 제1 정보를 수신할 수 있다. 예를 들어, 도 8을 참조하면, 제1 프로세서는 프레임 #N를 후처리(513) 하기 이전에 제1 FOV 변경 입력 V1(512)을 클라이언트 단말로부터 수신한다. 유사하게, 도 9를 참조하면, 제1 프로세서(101)는 상기 클라이언트 단말로부터 프레임 #N을 후처리(523) 하는 동안 또는 후에 제2 FOV 변경 입력 V2(522)를 수신한다. 몇몇 실시예에서, 상기 클라이언트 단말은 방위각 및 피치각을 가리키는 시야각 데이터를 포함하는 FOV 변경 입력을 VR 비디오 스트리밍 시스템(e.g. 도 1 및 도 3에 도시된 VR 비디오 스트리밍 시스템(100))으로 전송한다.
단계(450)에서, 비디오 서버의 GPU(102)는 제1 프레임 버퍼 메모리에 저장된 구체 이미지 프레임 데이터를 상기 구체 이미지 프레임 데이터가 나타내는 제1 구체 이미지 프레임의 제1 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 예를 들어, 도 8을 참조하면, 비디오 서버의 상기 GPU는 (후처리(516) 동안) 프레임 #N+1의 구체 이미지 프레임 데이터를 제1 변경 입력 FOV V1에 대응되는 프레임 #N+1의 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다(제1 FOV 변경 입력 V1이 프레임 #N+1에 대한 구체 이미지 프레임 데이터에 반영되기 위해). 유사하게, 도 9를 참조하면, 비디오 서버의 상기 GPU는 (후처리(526) 동안) 프레임 #N+1의 상기 구체 이미지 프레임 데이터를 제2 FOV V2에 대응되는 프레임 #N+1의 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다(제2 FOV 변경 입력 V2가 프레임 #N+1에 대한 구체 이미지 프레임 데이터에 반영되기 위해). 인코딩 지연 시간을 줄이기 위한 단계(450)의 변형된 동작은 도 6 및 도 10 내지 도 12를 참조하여 보다 상세하게 후술하도록 한다.
단계(460)에서, 비디오 서버의 GPU(102)는 스트리밍 서버가 제1 FOV에 대응되는 인코딩 된 이퀴렉탱귤러 이미지 프레임 데이터만을 클라이언트 단말로 스트리밍 할 수 있도록 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하여 인코딩 된 이미지 프레임 데이터를 생성할 수 있다. 예를 들어, 도 8을 참조하면, 비디오 서버의 상기 GPU는 프레임 #N+1에 대한 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩(518) 하여 프레임 #N+1에 대한 인코딩 된 이미지 프레임 데이터를 생성한다. 유사하게, 도 9를 참조하면, 비디오 서버의 상기 GPU는 프레임 #N+1에 대한 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩(528) 하여 프레임 #N+1에 대한 인코딩 된 이미지 프레임 데이터를 생성한다.
도 6은 본 발명의 몇몇 실시예에 따라, VR 비디오 스트리밍 시스템(100)이 수행하는 FOV 기반 후처리 방법(e.g. 인코딩 지연 시간을 줄이기 위해 도 6에 도시된 단계(450)의 변형된 동작)의 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 방법(450)은 단계(451)에서 시작하며, 여기서 비디오 서버(120)는 GPU(102)가 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환을 시작하기 전에 클라이언트 단말로부터 제1 FOV에 관한 제1 정보가 수신되었는지 여부를 판정할 수 있다. 단계(452)에서, 상기 GPU가 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환을 시작하기 전에, 클라이언트 단말로부터 제1 FOV 정보가 수신되었다는 판정에 응답하여, 상기 GPU는 제1 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임 데이터가 나타내는 제1 구체 이미지 프레임의 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 단계(453)에서, 상기 GPU가 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환하는 동작을 시작한 후에 제1 FOV에 관한 제1 정보가 수신되었다는 판정에 응답하여, 비디오 서버(120)는 상기 GPU가 제2 구체 이미지 프레임 데이터(e.g. 제1 구체 이미지 프레임 데이터에 후속하는 구체 이미지 프레임 데이터)를 제1 프레임 버퍼 메모리에 저장하기 전에 제1 FOV 정보가 수신되었는지 여부를 더 판정할 수 있다. 단계(454)에서, 상기 GPU가 제2 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리에 저장하기 전에 제1 FOV 정보가 수신되었다는 판정에 응답하여, 상기 GPU는 제1 프레임 버퍼 메모리에 저장된 제1 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임 데이터가 나타내는 제1 구체 이미지 프레임의 제1 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환하고, 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 인코딩하여 제2 이퀴렉탱귤러 이미지 프레임 데이터를 생성한다. 단계(455)에서, 상기 GPU는 제1 프레임 버퍼 메모리에 저장된 제2 구체 이미지 프레임 데이터의 변환 및 인코딩을 생략할 수 있다. 도 6에 도시된 흐름도는 도 10 내지 도 12를 참조하여 보다 상세하게 설명하도록 한다.
도 10, 도 11 및 도 12는 예시적인 VR 비디오 스트리밍 시스템에서 인코딩 지연 시간을 감소하기 위해 수행되는 FOV 기반 후처리 방법을 예시적으로 나타낸 블록도이다. 도 10을 참조하면, 예를 들어, GPU가 프레임 #N을 디코딩(601)/프레임 #N에 대한 구체 이미지 프레임 데이터를 이퀴렉탱귤러 이미지 프레임 데이터로 변환(604)/프레임 #N을 인코딩(606) 하고, 이어서 프레임 #N+1을 디코딩(607) 등을 한다. 몇몇 실시예에서, 비디오 스트리밍 시스템(100)의 프로세서(e.g. 도 3에 도시된 프로세서(101))가 프레임 #N의 변환(604) 이전에 클라이언트 단말로부터 제3 FOV 변경 입력 V3(602)을 수신하면, 상기 GPU는 프레임 #N을 변환(604)하는 동안 제3 FOV 변경 입력 V3를 반영할 수 있다.몇몇 실시예에서, 상기 GPU는 프레임 #N에 연관된 구체 이미지 프레임 데이터를 프레임 #N의 구체 이미지 프레임 데이터가 나타내는 구체 이미지 프레임의 제3 FOV에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환함으로써 제3 FOV 변경 입력 V3을 반영(605)할 수 있다.
도 11을 참조하면, 예를 들어 GPU는 프레임 #N을 디코딩(610)/프레임 #N의 구체 이미지 프레임 데이터를 이퀴렉탱귤러 프레임 데이터로 변환(612)/프레임 #N을 인코딩(615) 하고, 이어서 프레임 #N+1을 디코딩(617) 한다. 몇몇 실시예에서, 비디오 스트리밍 시스템(100)의 프로세서가 프레임 #N을 변환(612)하는 동안 또는 후에 상기 클라이언트 단말로부터 (제4 FOV에 관한) 제4 FOV 변경 입력 V4을 수신하면(613), 상기 GPU는 프레임 #N+1에 대한 변환(614) 및 인코딩(616) 단계에서 제4 FOV 변경 입력을 반영(614')할 수 있다. 몇몇 실시예에서, 프레임 #N+1에 대한 디코딩(617)이 완료될 때까지 기다리는 대신에, 상기 GPU는 제1 프레임 버퍼(161)에 저장된 프레임 #N을 이용하여 즉각적으로 프레임 #N에 대한 구체 이미지 프레임 데이터를 상기 프레임 #N에 대한 구체 이미지 프레임 데이터가 나타내는 구체 이미지 프레임의 제4 FOV에 대응되는 이퀴렉탱귤러 프레임 데이터로 변환할 수 있다(614). 이어서, 상기 GPU는 인코딩 된 프레임 #N+1에 대해 상기 변환된 이퀴렉탱귤러 이미지를 인코딩(616) 할 수 있다. 또한, 프레임 #N+1의 디코딩(617)이 완료된 후, 상기 GPU는 프레임 #N+1의 추가 처리(e.g. 프레임 #N+1의 변환 및 인코딩)를 생략(e.g. 수행하지 않는 것)할 수 있다(619). 왜냐하면, 상기 인코딩 된 프레임 #N+1이 이미 다른 변환(614) 및 인코딩(616) 동작으로부터 이용 가능하기(이용 가능할 예정이기) 때문이다. 이러한 방식으로, 프레임 #N의 인코딩 완료와 프레임 #N+1의 인코딩 완료 사이의 시간 간격은 33ms 미만의 랜덤 시간일 수 있어서, 프레임을 인코딩 하는데 소요되는 시간을 감소시킬 수 있다.
도 12를 참조하면, 예를 들어 GPU는 프레임 #N을 디코딩(620)/프레임 #N의 구체 이미지 프레임 데이터를 이퀴렉탱귤러 프레임 데이터로 변환(622)/프레임 #N을 인코딩(623) 하고, 이어서 프레임 #N+1을 디코딩(624) 한다. 몇몇 실시예에서, 비디오 스트리밍 시스템(100)의 프로세서가 프레임 #N+1을 디코딩(624) 하는 동안 또는 후에 상기 클라이언트 단말로부터 (제5 FOV에 관한) 제5 FOV 변경 입력 V5을 수신하면(625), 상기 GPU는 프레임 #N+1에 대한 변환(626) 및 인코딩(628) 단계에서 제5 FOV 변경 입력을 반영(627)할 수 있다. 몇몇 실시예에서, 프레임 #N+1에 대한 디코딩(624)이 완료될 때까지 기다리는 대신에, 상기 GPU는 제1 프레임 버퍼(161)에 저장된 프레임 #N을 이용하여 즉각적으로 프레임 #N에 대한 상기 구체 이미지 프레임 데이터를 상기 프레임 #N의 구체 이미지 프레임 데이터가 나타내는 구체 이미지 프레임의 제5 FOV에 대응되는 이퀴렉탱귤러 프레임 데이터로 변환할 수 있다(626). 이어서, 상기 GPU는 인코딩 된 프레임 #N+1에 대해 상기 변환된 이퀴렉탱귤러 이미지를 인코딩(628) 할 수 있다. 또한, 프레임 #N+1의 디코딩(624)이 완료된 후, 상기 GPU는 프레임 #N+1의 추가 처리(e.g. 프레임 #N+1의 변환 및 인코딩)를 생략(e.g. 수행하지 않는 것)할 수 있다(630). 왜냐하면, 인코딩 된 프레임 #N+1이 이미 다른 변환(626) 및 인코딩(628) 동작으로부터 이용 가능하기(이용 가능할 예정이기) 때문이다. 이러한 방식으로, 프레임 #N의 인코딩 완료와 프레임 #N+1의 인코딩 완료 사이의 시간 간격은 33ms 미만의 랜덤 시간일 수 있어서, 프레임을 인코딩 하는데 소요되는 시간을 감소시킬 수 있다.
이제, 도 10 내지 도 12를 참조하여 도 6에 도시된 흐름도를 보다 상세하게 설명한다. 도 6을 참조하면, 단계(451)에서, 제1 프로세서(101) 또는 GPU(102)는 상기 GPU가 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환을 시작하기 전에 클라이언트 단말로부터 제1 FOV에 관한 제1 정보가 수신되었는지 여부를 판정할 수 있다. 예를 들어, 도 10을 참조하면, 제1 프로세서(101) 또는 GPU(102)는 GPU(102)가 프레임 #N의 구체 이미지 프레임 데이터를 프레임 #N의 이퀴렉탱귤러 이미지 프레임 데이터로 변환(604)을 시작하기 전에 제3 FOV 변경 입력 V3이 수신된 것으로 판정한다. 다른 한편으로, 도 11을 참조하면, 제1 프로세서(101) 또는 GPU(102)는 GPU(102)가 프레임 #N의 구체 이미지 프레임 데이터를 프레임 #N의 이퀴렉탱귤러 이미지 프레임 데이터로 변환(612)하는 동안 또는 후에 제4 FOV 변경 입력 V4가 수신된 것으로 판정한다.
단계(452)에서, 상기 GPU가 제1 구체 이미지 프레임 데이터를 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환을 시작하기 전에 클라이언트 단말로부터 제1 FOV에 관한 제1 정보가 수신되었다는 판정에 응답하여, 상기 비디오 서버의 GPU는 제1 프레임 버퍼 메모리(e.g. 도 3에 도시된 프레임 버퍼(161))에 저장된 제1 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임 데이터가 나타내는 제1 구체 이미지 프레임의 제1 FOV에 대응되는 제1 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 예를 들어, 도 10을 참조하면, 상기 GPU가 프레임 #N에 대한 구체 이미지 프레임 데이터를 프레임 #N에 대한 이퀴렉탱귤러 이미지 프레임 데이터로 변환(604)을 시작하기 전에, 제3 FOV 변경 입력 V3이 수신(602)되기 때문에, 상기 GPU는 프레임 #N에 대한 구체 이미지 프레임 데이터를 제3 FOV 변경 입력 V3에 대응되는 프레임 #N의 이퀴렉탱귤러 이미지 프레임 데이터로 변환한다(제3 FOV 변경 입력 V3이 프레임 #N에 대한 구체 이미지 프레임 데이터에 반영(605)되기 위해).
도 6을 참조하면, 상기 비디오 서버의 GPU는 제1 구체 이미지 프레임에 후속하는 비디오의 제2 구체 이미지 프레임을 나타내는 제2 구체 이미지 프레임 데이터를 디코딩 하고, 디코딩 된 제2 구체 이미지 프레임 데이터를 제1 프레임 버퍼(e.g. 도 3의 제1 프레임 버퍼(161))에 저장할 수 있다. 예를 들어, 도 11을 참조하면, 상기 비디오 서버의 GPU는 프레임 #N+1(프레임 #N의 다음 프레임)을 디코딩 하고, 상기 디코딩 된 프레임 #N+1을 나타내는 구체 이미지 프레임 데이터를 제1 프레임 버퍼(161)에 저장한다. 단계(453)에서, 제1 프로세서(101) 또는 상기 비디오 서버의 GPU는 상기 GPU가 제2 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리에 저장하기 전에 제1 FOV 정보가 수신되었다고 판정할 수 있다. 예를 들어, 도 11을 참조하면, GPU가 제1 프레임 버퍼(161)에 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 저장하기 전에 제4 FOV 변경 입력 V4가 수신된 것으로 판정된다(왜냐하면, 저장이 프레임 #N+1의 디코딩(617) 이후에 발생하기 때문에). 유사하게, 도 12를 참조하면, GPU가 제1 프레임 버퍼(161)에 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 저장하기 전에 제5 FOV 변경 입력 V5가 수신된 것으로 결정된다(왜냐하면, 저장이 프레임 #N+1의 디코딩(624) 이후에 발생하기 때문에).
단계(454)에서, 상기 비디오 서버의 GPU가 제2 구체 이미지 프레임 데이터를 제1 프레임 버퍼 메모리에 저장하기 전에 제1 FOV에 관한 제1 정보가 수신되었다는 판정에 응답하여, 상기 비디오 서버의 GPU는 제1 프레임 버퍼 메모리에 저장된 제1 구체 이미지 프레임 데이터를 제1 구체 이미지 프레임 데이터가 나타내는 제1 구체 이미지 프레임의 제2 FOV에 대응되는 제2 이퀴렉탱귤러 이미지 프레임 데이터로 변환할 수 있다. 예를 들어, 도 11을 참조하면, 상기 비디오 서버의 GPU가 제1 프레임 버퍼(161)에 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 저장하기 전에 제4 FOV 변경 입력 V4가 수신되었다는 판정에 응답하여, 상기 GPU는 변환(614) 시점에 제1 프레임 버퍼(161)에 저장된 프레임 #N에 대한 구체 이미지 프레임 데이터를 제4 FOV 변경 입력 V4에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환(614)한다(제4 FOV 변경 입력 V4가 프레임 #N에 대한 구체 이미지 프레임 데이터에 반영(614')되기 위해). 유사하게, 도 12를 참조하면, 상기 GPU가 제1 프레임 버퍼(161)에 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 저장하기 전에 제5 FOV 변경 입력 V5가 수신되었다는 판정에 응답하여, 상기 GPU는 변환(626) 시점에 제1 프레임 버퍼(161)에 저장된 프레임 #N에 대한 상기 구체 이미지 프레임 데이터를 제5 FOV 변경 입력 V5에 대응되는 이퀴렉탱귤러 이미지 프레임 데이터로 변환(626)한다(제5 FOV 변경 입력 V5가 프레임 #N에 대한 구체 이미지 프레임 데이터에 반영(627)되기 위해). 몇몇 실시예에서, 단계(454)에서 제1 구체 이미지 프레임 데이터의 변환 과정 다음에, 스트리밍 서버(e.g. 도 3에 도시된 스트리밍 서버(140))가 현재의 FOV에 대응되는 상기 인코딩 된 제2 이퀴렉탱귤러 이미지 프레임 데이터만을 상기 클라이언트 단말로 스트리밍 하도록, 상기 GPU는 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 제2 인코딩 된 이미지 프레임 데이터로 인코딩 할 수 있다. 예를 들어, 도 11을 참조하면, 프레임 #N에 대한 구체 이미지 프레임 데이터의 변환(614)에 이어서, 상기 GPU는 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 프레임 #N+1에 대한 인코딩 된 이미지 프레임 데이터로 인코딩(616) 한다. 유사하게, 도 12를 참조하면, 프레임 #N에 대한 구체 이미지 프레임 데이터의 변환(626)에 이어서, 상기 GPU는 변환된 이퀴렉탱귤러 이미지 프레임 데이터를 프레임 #N+1에 대한 인코딩 된 이미지 프레임 데이터로 인코딩(628) 한다.
단계(455)에서, 상기 GPU는 제2 구체 이미지 프레임 데이터를 디코딩 한 후에, 상기 GPU는 제1 프레임 버퍼 메모리에 저장된 제2 구체 이미지 프레임 데이터에 대한 변환 및 인코딩을 생략할 수 있다. 예를 들어, 도 11을 참조하면, 프레임 #N+1을 디코딩(617) 한 후에, 상기 GPU는 제1 프레임 버퍼(161)에 저장된 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 더 이상 변환 및 인코딩 하지 않는다. 왜냐하면, 인코딩 된 프레임 #N+1은 이미 다른 변환(614) 및 인코딩(616) 동작으로부터 이용 가능하기(이용 가능할 예정이기) 때문이다. 유사하게, 도 12를 참조하면, 프레임 #N+1을 디코딩(624) 한 후에, 상기 GPU는 제1 프레임 버퍼(161)에 저장된 프레임 #N+1에 대한 구체 이미지 프레임 데이터를 더 이상 변환 및 인코딩 하지 않는다. 왜냐하면, 인코딩 된 프레임 #N+1은 이미 다른 변환(626) 및 인코딩(628) 동작으로부터 이용 가능하기(이용 가능할 예정이기) 때문이다.
도 13은 본 발명의 몇몇 실시예에 따라, 클라이언트 단말이 수행하는 비디오 디스플레이 방법(700)의 동작을 도시하는 흐름도이다. 개략적으로 살펴보면, 비디오 디스플레이 방법(700)은 단계(710)에서 시작하며, 여기서 상기 클라이언트 단말(e.g.도 1 및 도 3에 도시된 클라이언트 단말(200A))의 GPU(e.g.도 2에 도시된 GPU(370))는 디스플레이의 제1 디스플레이 영역에 제1 이미지 프레임의 제1 영역을 렌더링 하고, 상기 디스플레이의 제2 디스플레이 영역에 제1 이미지 프레임의 나머지 영역은 보이지 않도록 숨겨진 상태로 렌더링 할 수 있다. 단계(720)에서, 제1 FOV를 가리키는 사용자 입력이 클라이언트 단말의 프로세서(e.g. 도 2에 도시된 프로세서(310))에 의해 수신되는 것에 응답하여, 상기 클라이언트 단말의 GPU가 제2 디스플레이 영역에 미리 숨겨져 있고 제1 FOV 내에 위치한 제1 이미지 프레임의 제2 영역을 렌더링 할 수 있다. 단계(730)에서, 상기 클라이언트 단말의 프로세서는 비디오 스트리밍 서버(e.g. 도 3에 도시된 스트리머(180))로 제1 FOV를 가리키는 정보를 전송할 수 있다 또한, 상기 클라이언트 단말의 프로세서는 상기 비디오 스트리밍 서버로부터 제1 FOV에 대응되는 제2 이미지 프레임 데이터를 수신할 수 있다. 단계(740)에서, 상기 비디오 스트리밍 서버로부터 비디오의 제2 이미지 프레임을 나타내는 제2 이미지 프레임 데이터를 수신하는 것에 응답하여, 상기 GPU는 상기 디스플레이의 제1 디스플레이 영역에 제2 이미지 프레임의 일부 영역을 렌더링 하고, 상기 디스플레이의 제2 디스플레이 영역에 제1 이미지 프레임의 숨겨졌던 제2 영역을 렌더링 할 수 있다.
이제, 도 13에 도시된 흐름도를 도 1 내지 도 3 및 도 14 내지 도 16을 참조하여 보다 상세하게 설명한다. 도 14 내지 도 16은 본 발명의 몇몇 실시예에 따른 비디오 디스플레이 방법을 통해 디스플레이 된 클라이언트 단말의 디스플레이 화면을 예시적으로 나타낸 도면이다.
단계(710)에서, 클라이언트 단말(e.g. 도 1 및 도 3에 도시된 클라이언트 단말(200A))의 GPU(e.g. 도 2에 도시된 GPU(370))는 비디오 스트리밍 서버(e.g. 도 3에 도시된 스트리머(180))로부터 비디오의 제1 이미지 프레임을 나타내는 제1 이미지 프레임 데이터를 수신할 수 있다. 도 14를 참조하면, 상기 클라이언트 단말의 GPU(e.g. 도 2에 도시된 GPU(370))는 상기 클라이언트 단말의 디스플레이(800)의 제1 디스플레이 영역(810)에 제1 이미지 프레임의 제1 영역을 렌더링 하고, 상기 디스플레이의 제2 디스플레이 영역(820)에 제1 이미지 프레임의 나머지 영역은 보이지 않도록 숨겨진 상태로 렌더링 할 수 있다. 몇몇 실시예에서, 상기 클라이언트 단말의 디스플레이(800)는 적어도 제1 이미지 프레임과 동일한 크기 또는 작은 크기일 수 있다. 몇몇 실시예에서, 디스플레이(800)는 직사각형 모양일 수 있다. 몇몇 실시예에서, 디스플레이(800)는 예를 들어 원 모양, 다각형 모양과 같이 다른 모양일 수도 있다. 제1 디스플레이 영역(810)은 직사각형 디스플레이(800)의 중앙에 위치한 직사각형 모양의 영역일 수 있다. 상기 디스플레이의 제2 디스플레이 영역(820)은 직사각형 디스플레이(800)의 왼쪽 여백, 오른쪽 여백, 위쪽 여백 및 아래쪽 여백 중 적어도 하나를 포함할 수 있다.
단계(720)에서, 도 15를 참조하면, 제1 FOV(미도시)를 가리키는 사용자의 입력이 상기 클라이언트 단말의 프로세서(e.g. 도 2에 도시된 프로세서(310))에 의해 수신되는 것에 응답하여, 상기 클라이언트 단말의 GPU는 제2 디스플레이 영역(820)에 미리 숨겨져 있고 제1 FOV 내에 위치한 제1 이미지 프레임의 제2 영역(825)을 렌더링 할 수 있다. 예를 들어, 도 14를 참조하면, 상기 클라이언트 단말의 사용자는 자신의 시야각을 방향(830)으로 변경하고, 그렇게 함으로써 변경된 시야각이 제1 FOV를 가리키게 된다. 몇몇 실시예에서, 상기 클라이언트 단말은 이러한 시야각의 변화를 감지할 수 있고, 상기 GPU가 이전에 숨겨놓은 제2 영역(825)을 렌더링 할 수 있도록 FOV 변경 입력을 상기 클라이언트 단말의 GPU에게 제공할 수 있다. 몇몇 실시예에서, 제1 이미지 프레임의 제2 영역(825)을 렌더링 할 때, 상기 클라이언트 단말의 GPU는 디스플레이(800)의 렌더링 영역을 제1 디스플레이 영역(810, 도 14 참조)에서 제3 디스플레이 영역(840, 도 15 참조)으로 재배치할 수 있다. 이때, 제3 디스플레이 영역(840)은 제1 디스플레이 영역(810)과 동일한 모양을 갖고 제1 이미지 프레임의 제2 디스플레이 영역(825)을 포함할 수 있다.
단계(730)에서, 상기 클라이언트 단말의 프로세서는 비디오 스트리밍 서버(e.g. 도 3에 도시된 스트리머(180))로 제1 FOV를 가리키는 정보를 전송할 수 있다. 또한, 상기 클라이언트 단말의 프로세서는 상기 비디오 스트리밍 서버로부터 제1 FOV에 대응되는 제2 이미지 프레임 데이터를 수신할 수 있다. 몇몇 실시예에서, 상기 클라이언트 단말의 프로세서는 상기 비디오 스트리밍 서버로부터 비디오의 제2 이미지 프레임을 나타내고 제1 FOV에 대응되는 제2 이미지 프레임 데이터를 수신할 수 있다. 몇몇 실시예에서, 상기 클라이언트 단말의 프로세서는 또한 상기 비디오 스트리밍 서버로부터 제2 이미지 프레임 데이터의 보정된 FOV 정보를 수신할 수도 있다.
단계(740)에서, 도 16을 참조하면, 상기 GPU는 디스플레이(800)의 제1 디스플레이 영역(810)에 제2 이미지 프레임의 일부 영역을 렌더링 하고, 디스플레이(800)의 제2 디스플레이 영역(820)에 제1 이미지 프레임의 숨겨졌던 제2 영역을 렌더링 할 수 있다. 상기 클라이언트 단말의 GPU는 상기 디스플레이의 렌더링 영역을 제3 디스플레이 영역(840, 도 15 참조)에서 다시 상기 디스플레이의 중앙에 위치한 제1 디스플레이 영역(810)으로 재배치할 수 있다. 이전에 숨겨진 디스플레이 영역(825, 도 15 참조)의 즉각적인 렌더링에 뒤이어 상기 디스플레이 영역을 상기 디스플레이의 중앙으로 재배치하는 것은 상기 클라이언트 단말의 사용자가 단계(720)에서 제3 디스플레이 영역(840)에 렌더링 된 프레임 이미지와 단계(740)에서 제1 디스플레이 영역(810)에 렌더링 된 프레임 이미지 사이의 차이를 인식하지 못하도록 할 수 있다.
몇몇 실시예에서, 상기 VR 비디오 스트리밍 시스템은 다음과 같은 이점을 제공할 수 있다. 첫째, 상기 VR 비디오 스트리밍 시스템은 고해상도 VR 비디오 데이터를 처리할 때 GPU의 컴퓨팅 성능(e.g. 멀티 코어를 통한 병렬 컴퓨팅 성능)을 효과적으로 활용할 수 있다. 둘째, 현재의 FOV가 반영된 비디오 부분만을 전송함으로써 상당한 네트워크 대역폭 요구량(e.g. FOV 비디오 데이터 전송은 단지 1 ~ 2Mbps의 대역폭만 요구되는데 반해 4K UHD 비디오 데이터 전송은 16 ~ 20Mbps의 대역폭이 요구됨)이 절감될 수 있다. 셋째, FOV가 반영된 비디오 부분만을 전송함으로써 사용자 경험뿐만 아니라 스트리밍 비용까지 모두 개선할 수 있다. 넷째, FOV가 반영된 비디오 부분만을 전송함으로써 낮은 데이터 전송 속도로도 스트리밍 서비스를 제공할 수 있다. 그렇게 함으로써, 데이터 버퍼링을 제거하고 클라이언트 단말의 배터리 소모를 감소시킬 수 있다. 다섯째, FOV가 반영된 비디오 부분만을 전송함으로써 스트리밍 서비스의 비용 또한 줄일 수 있다. 왜냐하면, 상기 스트리밍 서비스의 제공자는 자신의 네트워크 서비스 사용량에 따라 비용을 지불할 필요가 있기 때문이다. 여섯째, FOV가 반영된 비디오 부분만을 전송함으로써 콘텐츠 불법 복제 또한 방지할 수 있다. FOV가 반영된 비디오 부분이 전송됨에 따라 수신된 부분적으로 스트리밍 된 비디오 데이터는 동적으로 변경되는 FOV가 반영된 비디오의 일부분만을 포함할 수 있기 때문에, 이로써 상기 비디오의 콘텐츠가 불법적으로 복사되는 것을 방지한다. 일곱째, 현재의 FOV에 기초하여 클라이언트 단말에 포함된 디스플레이의 렌더링 영역을 변경함으로써, 상기 클라이언트 단말은 변경된 지연 없이 변경된 시야각에 대한 비디오 부분을 사용자에게 즉각적으로 제공할 수 있다. 이때, 상기 지연은 예를 들어 비디오 스트리밍 서버로부터 새로운 비디오 부분을 수신한 후에 변경된 시야각에 대한 새로운 비디오 부분을 제공하게 될 때 발생할 수 있다.
다양한 실시예들을 설명하기 위해 본 명세서에서 사용된 "예" 또는 "예시적인"이라는 용어는 그러한 실시예들이 가능한 실시예들의 가능한 예들, 표현들 및/또는 예시들임을 가리키는 것일 뿐임에 유의하여 한다(그리고 이러한 용어는 그러한 실시예들이 필연적으로 대단한, 최상의 또는 최선의 예라는 것을 암시하는 것은 아니다).
본 명세서에 이용된, "결합된", "연결된" 등의 용어는 2개의 구성 요소들 또는 컴포넌트들을 서로 직접 또는 간접적으로 결합하는 것을 의미한다. 이러한 결합은 고정식(e.g. 영구적) 또는 이동식(e.g. 제거 가능, 해제 가능 등)일 수 있다. 이러한 결합은 2개의 구성 요소 또는 2개의 구성 요소와 임의의 추가적인 중간 구성 요소가 서로 하나의 단일체로 형성되거나 또는 2 개의 구성 요소 또는 2 개의 구성 요소 및 임의의 추가적인 중간 구성 요소가 서로 부착됨으로써 달성될 수 있다.
본 발명은 다양한 동작들을 달성하기 위해서 임의의 기계 판독 가능 매체 상의 방법, 시스템 및 프로그램 제품을 고려한다. 본 발명의 실시예들은 기존의 컴퓨터 프로세서를 이용하여 구현될 수 있다. 또는 본 발명의 목적 또는 다른 목적을 위해 통합된 적절한 시스템에 대한 전용 컴퓨터 프로세서 또는 하드와이어드 시스템(hardwired system)에 의해 수행될 수도 있다. 본 개시의 범위 내의 실시예는 기계 실행 가능 명령어 집합 또는 데이터 구조들을 전달하기 위해서 기계 판독 가능 매체가 포함된 프로그램 제품들을 포함한다. 이러한 기계 판독 가능 매체는 범용 또는 특수한 목적의 컴퓨터 또는 프로세서를 갖는 다른 기계에 의해 액세스될 수 있는 임의의 이용 가능한 매체 일 수 있다. 예를 들어, 그러한 기계 판독 가능 매체는 RAM, ROM, EPROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 임의의 다른 비휘발성 매체를 포함할 수 있다. 상술한 기계 판독 가능 매체는 기계 실행 가능 명령어의 집합 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하거나 전달하는데 이용될 수 있다. 또한, 상술한 기계 판독 가능 매체는 범용 또는 특수한 목적의 컴퓨터 또는 프로세서를 갖는 다른 기계에 의해 액세스될 수 있다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선 또는 유선 또는 무선의 조합)을 통해 임의의 기계로 전송되거나 제공되면 상기 기계는 해당 연결을 컴퓨터가 읽을 수 있는 매체로 간주한다. 따라서, 그러한 연결은 적절하게 기계 판독 가능 매체라고 지칭된다. 상술한 것들의 조합들 또한 기계 판독 가능 매체의 범위 내에 포함된다. 기계 실행 가능 명령어의 집합은 예를 들어 범용 컴퓨터, 특수 목적의 컴퓨터들 또는 특수 목적의 처리 기계들로 하여금 특정 기능들 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다.
예시적인 실시예에 도시된 방법들 및 시스템들의 구성과 상기 방법들 및 시스템들의 구성 요소의 배열은 단지 예시적인 것임을 유의하는 것이 중요하다. 비록 본 발명의 단지 몇몇 실시예가 상세히 설명되었지만, 본 개시를 검토하는 당해 기술 분야의 통상의 기술자라면 본 명세서에 열거된 발명 주제의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 예를 들어, 일체로 형성된 것으로 도시된 구성 요소들은 다수의 부분 또는 구성 요소로 구성될 수 있다. 따라서, 이러한 모든 수정은 본 발명의 범위 내에 포함되는 것으로 의도된다. 본 발명의 범위 또는 첨부된 특허 청구 범위의 사상을 벗어나지 않고 바람직한 실시예들 또는 다른 대표적인 실시예들에 대한 설계, 작동 조건들 및 배열에서 기타 치환, 수정, 변경 및 생략이 이루어질 수 있다.

Claims (20)

  1. 하나 이상의 프로세서의 의하여 수행되는 방법에 있어서,
    제1 FOV(field of view)에 관련된 제1 구체 이미지(spherical image)에 대 제1 변환(conversion)으로부터 출력된 제1 이퀴렉탱귤러 이미지(equirectangular image)의 저장을 개시하는 단계;
    상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에, 상기 제1 FOV로부터 제2 FOV로의 변경을 탐지하는 단계; 및
    상기 탐지된 변경에 응답하여, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것 대신, 상기 제2 FOV에 관련된 제2 이퀴렉탱귤러 이미지를 저장하기 위한 프로세스를 즉각적으로(immediately) 개시하는 단계를 포함하는,
    방법.
  2. 제1 항에 있어서,
    상기 프로세스는,
    상기 제1 FOV에 관련된 상기 제1 구체 이미지를 상기 제2 이퀴렉탱귤러 이미지로의 제2 변환을 개시하는 것을 포함하는,
    방법.
  3. 제2 항에 있어서,
    상기 제1 구체 이미지를 상기 제1 이퀴렉탱귤러 이미지로 변환하는 상기 제1 변환을 개시하는 단계; 및
    상기 제1 이퀴렉탱귤러 이미지 대신에 상기 제2 이퀴렉탱귤러 이미지를 저장하는 단계를 더 포함하되,
    상기 제1 FOV로부터 제2 FOV로의 변경을 탐지하는 단계는,
    상기 제1 변환을 개시하는 단계 이후, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되는 것 이전에 수행되는,
    방법.
  4. 제3 항에 있어서,
    상기 제1 FOV로부터 제2 FOV로의 변경의 탐지가, 상기 제1 변환을 개시하는 것 이후이면서, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에 이뤄진 것인지 여부에 대하여 결정하는 단계를 더 포함하는,
    방법.
  5. 제2 항에 있어서,
    상기 제1 FOV로부터 제2 FOV로의 변경의 탐지가 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에 이뤄진 것에 응답하여, 상기 제2 FOV에 관련된 제2 구체 이미지의 상기 제2 이퀴렉탱귤러 이미지로의 제2 변환을 생략하는 단계를 더 포함하는,
    방법.
  6. 제2 항에 있어서,
    상기 개시된 제2 변환은, 상기 제2 FOV에 관련된 제2 구체 이미지의 상기 제2 이퀴렉탱귤러 이미지로의 제3 변환 대신 수행되는 것인,
    방법.
  7. 제2 항에 있어서,
    상기 제1 구체 이미지를 소스(a source)로부터 액세스 하는 단계 - 상기 소스는 상기 제2 FOV에 관련된 제2 구체 이미지의 액세스가 가능한 소스임 -; 및
    상기 제1 구체 이미지를 상기 제1 이퀴렉탱귤러 이미지로 변환하는 동작을 개시한 후 상기 제1 이퀴렉탱귤러 이미지를 저장하는 동작을 완료하기 이전에 상기 제1 FOV로부터 상기 제2 FOV로의 전환이 탐지되는 것에 응답하여, 상기 제2 구체 이미지의 액세스를 생략하는 단계를 더 포함하는,
    방법.
  8. 제2 항에 있어서,
    상기 제1 FOV로부터 제2 FOV로의 변경의 탐지가 상기 제1 변환을 개시하는 것 이후이면서 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에 이뤄진 것에 응답하여, 상기 제2 이퀴렉탱귤러 이미지를 제공하되, 상기 제2 이퀴렉탱귤러 이미지는 상기 제2 FOV에 관련된 제2 구체 이미지의 상기 제2 이퀴렉탱귤러 이미지로의 제3 변환에서 출력되는 것 대신 상기 제2 변환에서 출력된 것인, 단계를 더 포함하는,
    방법.
  9. 시스템에 있어서,
    하나 이상의 프로세서; 및
    메모리를 포함하는 시스템으로서,
    상기 메모리는 명령어를 저장하고,
    상기 명령어는 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금,
    제1 FOV(field of view)에 관련된 제1 구체 이미지(spherical image)에 대한 제1 변환(conversion)으로부터 출력된 제1 이퀴렉탱귤러 이미지(equirectangular image)의 저장을 개시하는 단계;
    상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에, 상기 제1 FOV로부터 제2 FOV로의 변경을 탐지하는 단계; 및
    상기 탐지된 변경에 응답하여, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것대신, 상기 제2 FOV에 관련된 제2 이퀴렉탱귤러 이미지를 저장하기 위한 프로세스를 즉각적으로(immediately) 개시하는 단계를 포함하는 오퍼레이션을 수행하도록 하는,
    시스템.
  10. 제9 항에 있어서,
    상기 프로세스는,
    상기 제1 FOV에 관련된 상기 제1 구체 이미지를 상기 제2 이퀴렉탱귤러 이미지로의 제2 변환을 개시하는 것을 포함하는,
    시스템.
  11. 제10 항에 있어서,
    상기 오퍼레이션은,
    상기 제1 구체 이미지를 상기 제1 이퀴렉탱귤러 이미지로 변환하는 상기 제1 변환을 개시하는 단계; 및
    상기 제1 이퀴렉탱귤러 이미지 대신에 상기 제2 이퀴렉탱귤러 이미지를 저장하는 단계를 더 포함하되,
    상기 제1 FOV로부터 제2 FOV로의 변경을 탐지하는 단계는,
    상기 제1 변환을 개시하는 단계 이후, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되는 것 이전에 수행되는,
    방법.
  12. 제11 항에 있어서,
    상기 오퍼레이션은,
    상기 제1 FOV로부터 제2 FOV로의 변경의 탐지가, 상기 제1 변환을 개시하는 것 이후이면서, 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에 이뤄진 것인지 여부에 대하여 결정하는 단계를 더 포함하는,
    시스템.
  13. 제10 항에 있어서,
    상기 오퍼레이션은,
    상기 제1 FOV로부터 제2 FOV로의 변경의 탐지가 상기 제1 이퀴렉탱귤러 이미지를 저장하는 것이 완료되기 이전에 이뤄진 것에 응답하여, 상기 제2 FOV에 관련된 제2 구체 이미지의 상기 제2 이퀴렉탱귤러 이미지로의 제2 변환을 생략하는 단계를 더 포함하는,
    시스템.
  14. 제10 항에 있어서,
    상기 개시된 제2 변환은, 상기 제2 FOV에 관련된 제2 구체 이미지의 상기 제2 이퀴렉탱귤러 이미지로의 제3 변환 대신 수행되는 것인,
    시스템.
  15. 제10 항에 있어서,
    상기 오퍼레이션은
    상기 제1 구체 이미지를 소스(a source)로부터 액세스 하는 단계 - 상기 소스는 상기 제2 FOV에 관련된 제2 구체 이미지의 액세스가 가능한 소스임 -; 및
    상기 제1 구체 이미지를 상기 제1 이퀴렉탱귤러 이미지로 변환하는 동작을 개시한 후 상기 제1 이퀴렉탱귤러 이미지를 저장하는 동작을 완료하기 이전에 상기 제1 FOV로부터 상기 제2 FOV로의 전환이 탐지되는 것에 응답하여, 상기 제2 구체 이미지의 액세스를 생략하는 단계를 더 포함하는,
    시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020227003157A 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템 KR102502546B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662297394P 2016-02-19 2016-02-19
US62/297,394 2016-02-19
PCT/KR2017/001790 WO2017142354A1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020217013537A KR102358205B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217013537A Division KR102358205B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20220020997A KR20220020997A (ko) 2022-02-21
KR102502546B1 true KR102502546B1 (ko) 2023-02-21

Family

ID=59625327

Family Applications (7)

Application Number Title Priority Date Filing Date
KR1020217013537A KR102358205B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020187023908A KR102160992B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020207027413A KR102272859B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020227003157A KR102502546B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020217038744A KR102506000B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법
KR1020207025921A KR102333398B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법
KR1020197013504A KR102155681B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020217013537A KR102358205B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020187023908A KR102160992B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
KR1020207027413A KR102272859B1 (ko) 2016-02-19 2017-02-17 Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020217038744A KR102506000B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법
KR1020207025921A KR102333398B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법
KR1020197013504A KR102155681B1 (ko) 2016-02-19 2017-09-18 가상 현실 비디오 변환 및 스트리밍을 위한 시스템 및 방법

Country Status (6)

Country Link
US (10) US10334224B2 (ko)
EP (1) EP3419293B1 (ko)
JP (3) JP6663043B2 (ko)
KR (7) KR102358205B1 (ko)
CN (5) CN108702522B (ko)
WO (2) WO2017142354A1 (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170026659A1 (en) * 2015-10-13 2017-01-26 Mediatek Inc. Partial Decoding For Arbitrary View Angle And Line Buffer Reduction For Virtual Reality Video
WO2017068926A1 (ja) * 2015-10-21 2017-04-27 ソニー株式会社 情報処理装置及びその制御方法、並びにコンピュータ・プログラム
US10334224B2 (en) 2016-02-19 2019-06-25 Alcacruz Inc. Systems and method for GPU based virtual reality video streaming server
EP3249928A1 (en) * 2016-05-23 2017-11-29 Thomson Licensing Method, apparatus and stream of formatting an immersive video for legacy and immersive rendering devices
CN105915990B (zh) * 2016-05-25 2022-11-15 歌尔光学科技有限公司 一种虚拟现实头盔及其使用方法
DE102016213494A1 (de) * 2016-07-22 2018-01-25 Conti Temic Microelectronic Gmbh Kameravorrichtung sowie Verfahren zur Erfassung eines Umgebungsbereichs eines eigenen Fahrzeugs
DE102016213493A1 (de) * 2016-07-22 2018-01-25 Conti Temic Microelectronic Gmbh Kameravorrichtung zur Aufnahme eines Umgebungsbereichs eines eigenen Fahrzeugs sowie Verfahren zur Bereitstellung einer Fahrerassistenzfunktion
US10410320B2 (en) 2016-09-30 2019-09-10 Sony Interactive Entertainment Inc. Course profiling and sharing
US10679511B2 (en) 2016-09-30 2020-06-09 Sony Interactive Entertainment Inc. Collision detection and avoidance
US10850838B2 (en) 2016-09-30 2020-12-01 Sony Interactive Entertainment Inc. UAV battery form factor and insertion/ejection methodologies
US11125561B2 (en) 2016-09-30 2021-09-21 Sony Interactive Entertainment Inc. Steering assist
CN109362242B (zh) * 2016-10-10 2021-05-14 华为技术有限公司 一种视频数据的处理方法及装置
KR102498598B1 (ko) * 2016-10-18 2023-02-14 삼성전자주식회사 영상 처리 장치 및 그 영상 처리 방법
US10306180B2 (en) * 2016-10-21 2019-05-28 Liquidsky Software, Inc. Predictive virtual reality content streaming techniques
KR102598082B1 (ko) * 2016-10-28 2023-11-03 삼성전자주식회사 영상 표시 장치, 모바일 장치 및 그 동작방법
US10631012B2 (en) * 2016-12-02 2020-04-21 Centurylink Intellectual Property Llc Method and system for implementing detection and visual enhancement of video encoding artifacts
US10999602B2 (en) 2016-12-23 2021-05-04 Apple Inc. Sphere projected motion estimation/compensation and mode decision
CN108282449B (zh) * 2017-01-06 2020-10-09 华为技术有限公司 一种应用于虚拟现实技术的流媒体的传输方法和客户端
WO2018131813A1 (en) * 2017-01-10 2018-07-19 Samsung Electronics Co., Ltd. Method and apparatus for generating metadata for 3d images
WO2018151977A1 (en) * 2017-02-14 2018-08-23 Axon Enterprise, Inc. Systems and methods for determining a field of view
US11259046B2 (en) 2017-02-15 2022-02-22 Apple Inc. Processing of equirectangular object data to compensate for distortion by spherical projections
US10924747B2 (en) 2017-02-27 2021-02-16 Apple Inc. Video coding techniques for multi-view video
CN108513119A (zh) * 2017-02-27 2018-09-07 阿里巴巴集团控股有限公司 图像的映射、处理方法、装置和机器可读介质
US10467775B1 (en) * 2017-05-03 2019-11-05 Amazon Technologies, Inc. Identifying pixel locations using a transformation function
CN110945873B (zh) * 2017-06-02 2022-11-04 Vid拓展公司 下一代网络上的360度视频递送
US11093752B2 (en) 2017-06-02 2021-08-17 Apple Inc. Object tracking in multi-view video
US11107177B1 (en) * 2017-06-16 2021-08-31 Amazon Technologies, Inc. Data/metadata synchronization using metadata queue statistics
US10754242B2 (en) * 2017-06-30 2020-08-25 Apple Inc. Adaptive resolution and projection format in multi-direction video
US11521349B2 (en) * 2017-09-21 2022-12-06 Faro Technologies, Inc. Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution
US10623791B2 (en) 2018-06-01 2020-04-14 At&T Intellectual Property I, L.P. Field of view prediction in live panoramic video streaming
US10812774B2 (en) 2018-06-06 2020-10-20 At&T Intellectual Property I, L.P. Methods and devices for adapting the rate of video content streaming
US10636118B2 (en) * 2018-06-25 2020-04-28 Microsoft Technology Licensing, Llc Input scaling to keep controller inside field of view
US10616621B2 (en) 2018-06-29 2020-04-07 At&T Intellectual Property I, L.P. Methods and devices for determining multipath routing for panoramic video content
WO2020004695A1 (ko) * 2018-06-29 2020-01-02 주식회사 에이펀인터렉티브 Gpu를 이용해 모션캡쳐 영상의 실시간 병렬 렌더링을 수행하는 시스템
US20200022632A1 (en) * 2018-07-17 2020-01-23 Limbix Health, Inc. Digital content processing and generation for a virtual environment
US10360713B1 (en) * 2018-07-17 2019-07-23 Disney Enterprises, Inc. Event enhancement using augmented reality effects
US11019361B2 (en) 2018-08-13 2021-05-25 At&T Intellectual Property I, L.P. Methods, systems and devices for adjusting panoramic view of a camera for capturing video content
US10708494B2 (en) 2018-08-13 2020-07-07 At&T Intellectual Property I, L.P. Methods, systems and devices for adjusting panoramic video content
US10735778B2 (en) 2018-08-23 2020-08-04 At&T Intellectual Property I, L.P. Proxy assisted panoramic video streaming at mobile edge
CN110876082B (zh) * 2018-08-31 2020-12-29 网宿科技股份有限公司 一种视频帧的复杂度的确定方法及装置
US10560759B1 (en) 2018-10-23 2020-02-11 At&T Intellectual Property I, L.P. Active network support on adaptive virtual reality video transmission
US10536666B1 (en) * 2019-01-22 2020-01-14 Facebook Technologies, Llc Systems and methods for transmitting aggregated video data
US10742882B1 (en) * 2019-05-17 2020-08-11 Gopro, Inc. Systems and methods for framing videos
US11076158B2 (en) * 2019-09-09 2021-07-27 Facebook Technologies, Llc Systems and methods for reducing WiFi latency using transmit opportunity and duration
KR20210103867A (ko) * 2020-02-14 2021-08-24 삼성전자주식회사 Vr 영상을 스트리밍하는 방법 및 장치
KR20210107409A (ko) * 2020-02-24 2021-09-01 삼성전자주식회사 엣지 컴퓨팅 서비스를 이용한 영상 컨텐츠 전송 방법 및 장치
US20230140759A1 (en) * 2020-03-25 2023-05-04 Alcacruz Inc. Generating a representation of a spherical image
US20210349308A1 (en) * 2020-05-05 2021-11-11 Szu Wen FAN System and method for video processing using a virtual reality device
US11188902B1 (en) * 2020-05-20 2021-11-30 Louise Dorothy Saulog Sano Live time connection application method and devices
CN113766272B (zh) * 2020-06-04 2023-02-10 腾讯科技(深圳)有限公司 一种沉浸媒体的数据处理方法
CN113839908B (zh) * 2020-06-23 2023-07-11 华为技术有限公司 视频传输方法、装置、系统及计算机可读存储介质
US11494951B2 (en) * 2020-07-24 2022-11-08 At&T Intellectual Property I, L.P. Policy definition and enforcement for extended reality media sessions
CN114071150B (zh) 2020-07-31 2023-06-16 京东方科技集团股份有限公司 图像压缩方法及装置、图像显示方法及装置和介质
KR20220037617A (ko) * 2020-09-18 2022-03-25 삼성전자주식회사 엣지 컴퓨팅 서비스를 이용한 동영상 처리 방법 및 장치
US11908364B2 (en) * 2020-09-23 2024-02-20 Samsung Electronics Co., Ltd. Low-power display driving circuit performing internal encoding and decoding and operating method thereof
CN112774193A (zh) * 2021-01-14 2021-05-11 江苏卫健信息科技有限公司 一种云游戏的图像渲染方法
US11924393B2 (en) * 2021-01-22 2024-03-05 Valeo Comfort And Driving Assistance Shared viewing of video among multiple users
CN113094019A (zh) * 2021-04-30 2021-07-09 咪咕文化科技有限公司 交互方法、装置、电子设备及存储介质
EP4120238A1 (en) * 2021-07-16 2023-01-18 Sony Interactive Entertainment Inc. Video processing and playback systems and methods
GB2609013A (en) * 2021-07-16 2023-01-25 Sony Interactive Entertainment Inc Video recording and playback systems and methods
CN113676753B (zh) * 2021-10-21 2022-02-15 北京拾音科技文化有限公司 Vr场景中展示视频的方法、装置、电子设备和存储介质
US20230178002A1 (en) * 2021-12-07 2023-06-08 Kyndryl, Inc. Dynamic display for image-enabled clothing
KR20230094587A (ko) 2021-12-21 2023-06-28 서강대학교산학협력단 마이크로 배치 스트리밍 처리 시스템 및 상기 시스템에서의 동적 데이터 배치 및 쿼리 계획 방법
CN114938456A (zh) * 2022-01-20 2022-08-23 上海瞳观智能科技有限公司 Vr直播系统及方法
WO2023141313A2 (en) * 2022-01-21 2023-07-27 Arizona Board Of Regents On Behalf Of The University Of Arizona Wavelength and diffractive multiplexed expansion of field of view for display devices
US11983822B2 (en) 2022-09-02 2024-05-14 Valeo Comfort And Driving Assistance Shared viewing of video with prevention of cyclical following among users

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000060869A1 (en) * 1999-04-08 2000-10-12 Internet Pictures Corporation Perspective-corrected video presentations

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62168102A (ja) 1986-12-30 1987-07-24 Furukawa Electric Co Ltd:The 光フアイバ融着接続用スリツプホルダ
US5185667A (en) 1991-05-13 1993-02-09 Telerobotics International, Inc. Omniview motionless camera orientation system
US5880734A (en) 1996-10-03 1999-03-09 Intel Corporation Peripheral vision simulator for immersive 3D virtual environments
JPH10191355A (ja) * 1996-12-26 1998-07-21 Sony Corp 映像信号切換装置およびその方法
US6043837A (en) * 1997-05-08 2000-03-28 Be Here Corporation Method and apparatus for electronically distributing images from a panoptic camera system
US6466254B1 (en) * 1997-05-08 2002-10-15 Be Here Corporation Method and apparatus for electronically distributing motion panoramic images
US6778211B1 (en) * 1999-04-08 2004-08-17 Ipix Corp. Method and apparatus for providing virtual processing effects for wide-angle video images
JP2003101989A (ja) * 2001-09-25 2003-04-04 Matsushita Electric Ind Co Ltd 仮想鑑賞方法、鑑賞サーバ装置、端末、プログラム
GB0230328D0 (en) * 2002-12-31 2003-02-05 British Telecomm Video streaming
KR100613752B1 (ko) 2004-03-11 2006-08-22 경북대학교 산학협력단 파노라마 영상의 스트리밍 방법
JP2005341093A (ja) 2004-05-26 2005-12-08 Mitsubishi Electric Corp コンテンツ適応化装置、コンテンツ適応化システム、コンテンツ適応化方法
KR100677142B1 (ko) * 2004-08-13 2007-02-02 경희대학교 산학협력단 파노라마 영상의 움직임 추정 및 보상
US20060055807A1 (en) * 2004-09-14 2006-03-16 Pemer Frederick A Imaging methods, image sensors, imaging systems, and articles of manufacture
CN101000461B (zh) * 2006-12-14 2010-09-08 上海杰图软件技术有限公司 一种鱼眼图像生成立方体全景的方法
JP5115150B2 (ja) * 2007-11-02 2013-01-09 ソニー株式会社 情報提示装置及び情報提示方法
US8747116B2 (en) 2008-08-21 2014-06-10 Lincoln Global, Inc. System and method providing arc welding training in a real-time simulated virtual reality environment using real-time weld puddle feedback
US8851896B2 (en) 2008-08-21 2014-10-07 Lincoln Global, Inc. Virtual reality GTAW and pipe welding simulator and setup
TW201044185A (en) 2009-06-09 2010-12-16 Zillians Inc Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof
US8270473B2 (en) * 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
JP2012014676A (ja) 2010-05-31 2012-01-19 Sony Computer Entertainment Inc 仮想現実空間提供システム、仮想現実空間提供方法およびそのプログラム
US8619005B2 (en) 2010-09-09 2013-12-31 Eastman Kodak Company Switchable head-mounted display transition
US20120092348A1 (en) 2010-10-14 2012-04-19 Immersive Media Company Semi-automatic navigation with an immersive image
US20120212491A1 (en) 2011-02-22 2012-08-23 Sony Computer Entertainment Inc. Indirect lighting process for virtual environments
JP6025065B2 (ja) * 2011-09-13 2016-11-16 パナソニックIpマネジメント株式会社 符号化装置、復号装置、再生装置、符号化方法、及び復号方法
CN202257030U (zh) * 2011-10-19 2012-05-30 广东工业大学 大视场直接投影式激光光刻光学系统
EP2777273B1 (en) * 2011-11-11 2019-09-04 GE Video Compression, LLC Efficient multi-view coding using depth-map estimate for a dependent view
US20130141526A1 (en) * 2011-12-02 2013-06-06 Stealth HD Corp. Apparatus and Method for Video Image Stitching
JP5861499B2 (ja) * 2012-03-01 2016-02-16 大日本印刷株式会社 動画提示装置
EP2645713A1 (en) * 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
US10514541B2 (en) 2012-12-27 2019-12-24 Microsoft Technology Licensing, Llc Display update time reduction for a near-eye display
US20160205341A1 (en) * 2013-08-20 2016-07-14 Smarter Tv Ltd. System and method for real-time processing of ultra-high resolution digital video
US9774881B2 (en) * 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
JP6075889B2 (ja) * 2014-06-10 2017-02-08 日本電信電話株式会社 映像配信装置及び映像再生装置
US10397666B2 (en) * 2014-06-27 2019-08-27 Koninklijke Kpn N.V. Determining a region of interest on the basis of a HEVC-tiled video stream
US10204658B2 (en) * 2014-07-14 2019-02-12 Sony Interactive Entertainment Inc. System and method for use in playing back panorama video content
US9917877B2 (en) * 2014-10-20 2018-03-13 Google Llc Streaming the visible parts of a spherical video
US10104361B2 (en) 2014-11-14 2018-10-16 Samsung Electronics Co., Ltd. Coding of 360 degree videos using region adaptive smoothing
GB2536025B (en) * 2015-03-05 2021-03-03 Nokia Technologies Oy Video streaming method
US9848212B2 (en) * 2015-07-10 2017-12-19 Futurewei Technologies, Inc. Multi-view video streaming with fast and smooth view switch
US10674205B2 (en) * 2015-11-17 2020-06-02 Rovi Guides, Inc. Methods and systems for selecting a preferred viewpoint for media assets
US20170147830A1 (en) * 2015-11-24 2017-05-25 Comcast Cable Communications, Llc Adaptive Rights Management System
US10334224B2 (en) 2016-02-19 2019-06-25 Alcacruz Inc. Systems and method for GPU based virtual reality video streaming server

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000060869A1 (en) * 1999-04-08 2000-10-12 Internet Pictures Corporation Perspective-corrected video presentations

Also Published As

Publication number Publication date
US10904511B2 (en) 2021-01-26
US20220264069A1 (en) 2022-08-18
EP3419293A1 (en) 2018-12-26
US11470301B2 (en) 2022-10-11
CN108702522A (zh) 2018-10-23
US11843759B2 (en) 2023-12-12
KR20200113289A (ko) 2020-10-06
WO2017142354A1 (ko) 2017-08-24
EP3419293B1 (en) 2023-08-02
KR20190067856A (ko) 2019-06-17
US20210195164A1 (en) 2021-06-24
CN113286167A (zh) 2021-08-20
JP2022091767A (ja) 2022-06-21
CN113286168B (zh) 2023-09-08
CN108702522B (zh) 2021-06-08
KR20220020997A (ko) 2022-02-21
US20210281815A1 (en) 2021-09-09
EP3419293A4 (en) 2019-05-29
CN110226316B (zh) 2022-06-10
JP2019514311A (ja) 2019-05-30
US20180152690A1 (en) 2018-05-31
US20200267370A1 (en) 2020-08-20
CN115225882A (zh) 2022-10-21
US20170244951A1 (en) 2017-08-24
KR20210158381A (ko) 2021-12-30
EP3419293C0 (en) 2023-08-02
US10939087B2 (en) 2021-03-02
KR20210054600A (ko) 2021-05-13
US11050996B2 (en) 2021-06-29
US11375172B2 (en) 2022-06-28
US20220408073A1 (en) 2022-12-22
KR102358205B1 (ko) 2022-02-08
US20200092532A1 (en) 2020-03-19
WO2018052259A1 (ko) 2018-03-22
JP6663043B2 (ja) 2020-03-11
CN113286167B (zh) 2023-07-07
JP2020099083A (ja) 2020-06-25
KR20180099891A (ko) 2018-09-05
US20190253693A1 (en) 2019-08-15
CN113286168A (zh) 2021-08-20
US20170244775A1 (en) 2017-08-24
US9912717B2 (en) 2018-03-06
KR102155681B1 (ko) 2020-09-15
KR20200108369A (ko) 2020-09-17
US10334224B2 (en) 2019-06-25
KR102506000B1 (ko) 2023-03-03
KR102272859B1 (ko) 2021-07-05
KR102333398B1 (ko) 2021-12-02
KR102160992B1 (ko) 2020-10-15
CN110226316A (zh) 2019-09-10
JP7041440B2 (ja) 2022-03-24

Similar Documents

Publication Publication Date Title
KR102502546B1 (ko) Gpu 기반의 가상 현실 비디오 스트리밍 서버를 위한 방법 및 시스템
CN110710207B (zh) 一种用于流送视频的方法、内容服务器和可读存储介质

Legal Events

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