KR102417055B1 - 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스 - Google Patents

비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR102417055B1
KR102417055B1 KR1020150172402A KR20150172402A KR102417055B1 KR 102417055 B1 KR102417055 B1 KR 102417055B1 KR 1020150172402 A KR1020150172402 A KR 1020150172402A KR 20150172402 A KR20150172402 A KR 20150172402A KR 102417055 B1 KR102417055 B1 KR 102417055B1
Authority
KR
South Korea
Prior art keywords
video stream
processing
shaders
client device
video
Prior art date
Application number
KR1020150172402A
Other languages
English (en)
Other versions
KR20160067798A (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 KR20160067798A publication Critical patent/KR20160067798A/ko
Application granted granted Critical
Publication of KR102417055B1 publication Critical patent/KR102417055B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • 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/234345Processing 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 the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • 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
    • 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/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • 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/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25833Management of client data involving client hardware characteristics, e.g. manufacturer, processing or storage capabilities
    • 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/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • 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/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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Studio Devices (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

본 발명은 비디오 스트림을 프로세싱하는 분야, 특히, 셰이더들을 사용하는 비디오 스트림의 후속 프로세싱의 분야에 관한 것이다. 상기 비디오 스트림의 프로세싱은 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 사이에서 분할된다.

Description

비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스{METHOD AND DEVICE FOR POST PROCESSING OF A VIDEO STREAM}
본 발명은 비디오 스트림의 프로세싱 분야, 특히, 셰이더들을 사용하는 비디오 스트림의 후속 프로세싱 분야에 관한 것이다.
오늘날, 많은 비디오 프로세싱 시스템들은, 비디오 스트림을 수신하고, 상기 비디오 스트림을 프로세싱하고, 그리고 이후 네트워크를 통해 원격 클라이언트에 상기 프로세싱된 비디오 스트림을 전송하는 서버를 통상적으로 포함하는 표준 아키텍처를 갖는다.
상기 서버 및 상기 원격 클라이언트 모두의 프로세싱 전력을 사용하는 것은 계산적인 이유들 및 증가하는 성능으로 인해 더 유리할 수 있다.
상기 프로세싱 중 일부는 그래픽 프로세싱 유닛(GPU)에 의해 수행되는 프로세싱에 관한 것이다. 상기 GPU는 디스플레이로 출력하도록 의도된 이미지들을 생성한다. 상기 GPU는 또한 비디오 스트림 내의 이미지들을 다루기 위해 구성될 수 있다. 서버-클라이언트 시스템에서, 그래픽 프로세싱을 수행하기 위해 서버 및 클라이언트 모두에서 GPU를 사용할 수 있는 것이 유리할 수 있다.
US 2013/0016107(CHNOW INC)은 서버-측 렌더링 및 클라이언트-측 렌더링 모두를 이용할 수 있는 그래픽들을 렌더링하는 방법에 관한 것이다. 본 문서의 주된 아이디어는, 렌더링이 상기 서버 또는 클라이언트 상에서 행해져야 하는지를 결정하는 것이다. 상기 렌더링이 상기 서버에서 행해지면, 비디오 데이터(즉, 픽셀 데이터)는 상기 서버로부터 상기 클라이언트로 전송되고, 이후 디스플레이된다. 상기 렌더링이 상기 클라이언트에서 행해지면, 그래픽 데이터(즉, 벡터 데이터)는 상기 클라이언트에 전송되고, 이후 상기 클라이언트의 GPU를 사용하여 비디오 데이터에 렌더링된다. 상기 선택은, 상기 클라이언트 및 상기 서버 내의 GPU의 이용가능한 프로세싱 전력에 기초하여 그리고 상기 네트워크 대역폭에 기초하여 행해진다.
US 2013/0016107의 방법은, 그래픽 데이터가 프로세싱되고 그리고 비디오 데이터로 렌더링되는 애플리케이션, 예를 들어, 컴퓨터 게임들에서 유리할 수 있다. 예를 들어, 특별한 효과들 및 비디오 후속 프로세싱을 위해 셰이더들을 적용함으로써, 상기 서버 및 상기 클라이언트 모두에서 비디오 데이터를 프로세싱하기 위해 서로 다른 어프로치들이 요구된다.
상기의 관점에서, 본 발명의 목적은 상기에서 논의된 하나 이상의 결점들을 해결하거나 적어도 감소시키기 위한 것이다. 일반적으로, 상기의 목적은 첨부된 독립 특허 청구항들에 의해 달성된다.
제1 양상에 따라, 본 발명은 클라이언트 디바이스에 접속되는 비디오 스트림 프로세싱 디바이스를 포함하는 시스템에서 비디오 스트림을 프로세싱하는 방법에 의해 실현되고, 상기 방법은, 상기 비디오 스트림에 적용되는 하나 이상의 셰이더들을 설정하는 단계와; 제1 프로세싱에 의해, 상기 비디오 스트림 프로세싱 디바이스에서, 상기 하나 이상의 셰이더들 중 적어도 하나를 상기 비디오 스트림의 적어도 하나의 서브세트에 적용하는 단계와; 그리고 제2 프로세싱에 의해, 상기 클라이언트 디바이스에서, 상기 하나 이상의 셰이더들 중 적어도 하나를 상기 비디오 스트림의 적어도 하나의 서브세트에 적용하는 단계를 포함하고, 상기 제2 프로세싱에서 적용되는 상기 하나 이상의 셰이더들 중 적어도 하나는 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송된다.
셰이더들은 컴퓨터 그래픽들에서 사용되는 컴퓨터 프로그램들이다. 셰이더들은, 예를 들어, 특정 효과들 및 비디오 후속 프로세싱을 위해 사용된다. 여러 종류의 셰이더들, 예를 들어, 투영 변환들에서 사용될 수 있는 벌텍스 셰이더들, 픽셀 컬러들 및 위치들을 변경하기 위해 사용될 수 있는 픽셀 셰이더들 및 비디오 분석 계산들을 위해 사용될 수 있는 계산 셰이더들이 존재한다. 셰이더는 실행될 호환가능한 그래픽 프로세싱 유닛(GPU)을 요구한다. 예를 들어, 모든 GPU들은 계산 셰이더들을 지원하지 않는다. GPU는, 2D 및 3D 비디오 그래픽들을 렌더링하기 위한 다중-플랫폼 애플리케이션 프로그래밍 인터페이스(API)인 OpenGL을 지원할 수 있다.
본 명세서의 맥락에서, 용어 "프로세싱(processing)"은, 상기 프로세싱이 관련되는 비디오 스트림의 적어도 하나의 서브세트 상에서 셰이더들의 실행으로 이해된다.
클라이언트 디바이스는, GPU를 갖고, 웹 서버로부터 웹 어플리케이션을 구동하며 그리고 상기 프로세싱된 비디오 스트림을 디스플레이하는 디바이스, 예를 들어, 태블릿 컴퓨터 또는 스마트폰일 수 있다. 클라이언트 디바이스는 또한, GPU를 사용하여 비디오 스트림을 프로세싱하고, 그 후, 시청 목적들을 위해 상기 비디오 스트림을 디스플레이에 전송하는 디바이스를 언급할 수 있다. 그와 같은 디바이스의 예는, 테블릿 컴퓨터 또는 스마트 폰처럼 동일한 방식으로 상기 프로세싱된 비디오 스트림을 디스플레이하는 접속된 디스플레이를 구비한 PC일 수 있지만, 이러한 경우에서 테블릿 컴퓨터 또는 스마트폰이 동일한 목적들 위해 임베딩된 디스플레이를 사용하는 컴퓨터에 접속된 디스플레이일 수 있다. 상기 클라이언트 디바이스는 또한 하나 이상의 카메라들을 포함하는 모니터링 시스템으로부터의 비디오를 관리하고 시청하는 VMS(Video Management System)에서 사용될 수 있다. VMS는, 예를 들어, 클라우드 기반 시스템들(예를 들어, 다양한 클라우드-기반 비디오 호스팅 서비스들을 통하는), 중앙 서버들에 기초한 시스템들(예를 들어, 엑시스 통신 에이비에 의해 생성되는 "엑시스 카메라 스테이션") 또는 시스템의 카메라들에 설치되는 소프트웨어가 비디오 관리를 다루는 서버-리스 시스템들(예를 들어, 엑시스 통신 에이비에 의해 생성되는 "엑시스 카메라 컴패니언")을 포함하는 다양한 기술들에 기초할 수 있다. 상기 클라이언트 디바이스는 이 경우에서 상기 VMS에 접속된다.
본 명세서의 맥락에서, "상기 비디오 스트림의 서브세트"에 의해, 전체 비디오 스트림은 상기 비디오 스트림 프로세싱 디바이스 및/또는 상기 클라이언트 디바이스에서 프로세싱될 필요가 없는 것으로 이해된다. 상기 비디오 스트림 프로세싱 디바이스에서의 프로세싱 및 상기 클라이언트 디바이스에서의 프로세싱은, 프레임의 (서로 다른) 부분들(예를 들어, 절반 프레임) 또는 프레임들의 (서로 다른) 서브세트(예를 들어, 상기 비디오 스트림 내의 모든 다른 프레임), 또는 2개의 혼합에 관련될 수 있다. 다른 실시예들에 따라, 상기 제1 및 제2 프로세싱은 모두 전체 비디오 스트림을 프로세스한다.
본 발명은 비디오 스트림 프로세싱 디바이스에서 모든 셰이더들을 제공함으로써 구현되는 것에 기초하고, 상기 비디오 스트림 프로세싱 디바이스가 상기 클라이언트 디바이스에서 프로세싱하는데 요구되는 셰이더들을 전송하도록 하며, 상기 제1 및 제2 프로세싱에 대한 증가된 유연성이 달성된다. 즉, 셰이더들의 실행은, 예를 들어, 네트워크 토폴리지, 비디오 스트림 프로세싱 디바이스 및 클라이언트 디바이스 모두의 기능들 및 로드, 유스 케이스(use case)의 특성들에 기초하여, 실행 시간에서 동적으로 분할될 수 있다. 대안으로, 상기 실행의 분할은 정적일 수 있다.
일부 실시예들에 따라, 상기 제1 프로세싱은 상기 제2 프로세싱과 서로 다르다. 이는 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이의 비디오 스트림 상에서의 하나 이상의 셰이더들의 실행에서 요구되는 프로세싱을 유리하게 분할할 수 있다.
일부 실시예들에 따라, 상기 제1 프로세싱에 적용되는 상기 적어도 하나의 셰이더는 상기 제2 프로세싱에 적용되는 상기 적어도 하나의 셰이더와 서로 다르다. 예를 들어, 임의의 버텍스 셰이더(들)은 상기 비디오 스트림 프로세싱 디바이스 상에서 실행될 수 있고, 그리고 임의의 픽셀 셰이더(들)은 상기 클라이언트 디바이스 상에서 실행될 수 있다.
일부 실시예들에 따라, 상기 제1 프로세싱이 관계되는 상기 비디오 스트림의 적어도 하나의 서브세트는 상기 제2 프로세싱이 관계되는 상기 비디오 스트림의 적어도 하나의 서브세트와 서로 다르다. 상기에서 언급된 것처럼, 상기 비디오 스트림 프로세싱 디바이스에서의 프로세싱 및 상기 클라이언트 디바이스에서의 프로세싱은 프레임의 서로 다른 부분들(예를 들어, 상기 프레임의 절반은 상기 비디오 스트림 프로세싱 디바이스에서 프로세스되고, 상기 프레임의 나머지 절반은 상기 클라이언트 디바이스에서 프로세스된다) 또는 프레임들의 서로 다른 서브세트(예를 들어, 상기 비디오 스트림 내의 매 다른 프레임은 비디오 스트림 프로세싱 디바이스 상에서 프로세스되고 상기 나머지 프레임들은 상기 클라이언트 디바이스 상에서 프로세스된다)에 관련될 수 있다.
하지만, 일부 실시예들에 따라, 상기 제1 프로세싱 및 상기 제2 프로세싱은 서로 상이하지 않음을 알아야된다. 즉, 동일한 셰이더들은, 비디오 스트림 프로세싱 디바이스 및 클라이언트 디바이스 모두에서 비디오 스트림의 동일한 부분들에 적용된다. 이러한 것은 상기 제1 및 제2 프로세싱이 점진적 필터링에 관련될 때 유리할 수 있다. 이러한 경우에서, 상기 셰이더들의 실행은 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이에서 계속 분할되는바, 이는 상기 점진적 필터링의 제1 부분이 상기 비디오 스트림 프로세싱 디바이스 상에서 실행되고 그리고 상기 점진적 필터링의 제2 부분이 상기 클라이언트 디바이스 상에서 실행된다.
일부 실시예들에 따라, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은: 상기 클라이언트 디바이스의 하나의 타입의 GPU(graphics processing unit)(518); 및 상기 비디오 스트림 프로세싱 디바이스의 하나의 타입의 GPU(508)으로 이루어진 그룹 중 적어도 하나에 의존한다. 상기에서 언급된 것처럼, 서로 다른 타입들의 GPU들은 서로 다른 타입들의 셰이더들을 지원할 수 있다. 예를 들어, 일반적으로, 상기 클라이언트 디바이스의 GPU만이 테셀레이션 또는 지오메트리 셰이더들을 지원한다. 버텍스 셰이더는 테셀레이션 및/또는 지오메트리 셰이더이전에 실행될 필요가 있기에, 버텍스 셰이더가 상기 비디오 스트림 프로세싱 디바이스 상에서 실행되고 그리고 테셀레이션 및/또는 지오메트리 셰이더가 상기 클라이언트 디바이스 상에서 실행되도록 실행의 분할이 행해질 수 있다.
일부 실시예들에 따라, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은 상기 비디오 스트림의 듀레이션(duration)을 변경시킨다. 이러한 것은, 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 간 셰이더 실행의 분할이 상기 비디오 스트림의 각 기간에 대해 독립적으로 결정될 수 있고, 따라서 네트워크 토폴로지에서의 변화들, 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 둘 다의 로드 및 다른 중요한 특성들의 변화들, 및 변경된 사용자 케이스들(예를 들어, 실행의 레이턴시 요구들)을 야기하기에, 본 발명의 유연성을 증가시킨다.
예를 들어, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은: 상기 비디오 프로세싱 디바이스와 상기 클라이언트 디바이스간 접속의 대역폭과; 상기 클라이언트 디바이스의 베터리 레벨과; 상기 비디오 스트림 프로세싱 디바이스의 베터리 레벨과; 상기 클라이언트 디바이스의 GPU의 프로세싱 전력과; 그리고 상기 비디오 스트림 프로세싱 디바이스의 GPU의 프로세싱 전력으로 구성되는 그룹 중 적어도 하나에 관한 정보에 기초하여 상기 비디오 스트림의 듀레이션을 동적으로 변경시킬 수 있다.
상기에서 언급된 것처럼, 상기 클라이언트 디바이스는 테블릿 컴퓨터들과 같은 베터리로 구동되는 디바이스일 수 있다. 셰이더들의 실행이 상기 클라이언트 디바이스의 베터리를 드레인시킬 수 있기에, 상기 클라이언트 디바이스가 베터리가 부족한 경우, 상기 비디오 스트림 프로세싱 디바이스는 상기 비디오 스트림 상의 하나 이상의 셰이더들을 실행하는 요구된 프로세싱의 더 큰 부분을 구동한다면, 유리할 수 있다.
일부 실시예들에 따라, 상기 비디오 스트림은 인코딩된 비디오 스트림으로서 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송되고, 상기 비디오 스트림은 상기 제2 프로세싱 이전에 디코딩된다.
이러한 것은, 상기 비디오 스트림 프로세싱 디바이스가 적용되는 프로세싱이 어떠한 것일지라도 상기 비디오 스트림은 클라이언트 디바이스에 인코딩되고 그리고 전송될 것이기에 유리하다. 예를 들어, 상기 비디오 스트림이, 상기 클라이언트 디바이스에 인코딩되고 전송될 때 준-처리(semi-processed)될 수 있다. 더욱이, 본 발명의 실시예는, 상기 셰이더들의 실행 흐름이 용이하게 설정되고 유지될 수 있는 것에서 유리한바, 이는 상기 비디오 스트림 프로세싱 디바이스 내의 인코더(및 상기 클라이언트 디바이스 상의 대응하는 디코더)가 일정하게 구동하기 때문이다. 비디오 스트림 프로세싱 디바이스 내의 인코더 및 상기 클라이언트 디바이스 내의 디코더를 갖는 기본적인 시스템 레이아웃이 본 실시예에 따라 변화하지 않는다는 것이 추가적인 이점이 될 수 있다. 또한, 상기 하나 이상의 셰이더들의 실행이 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이에서 어떻게 분할되든지 상관없이, 상기 네트워크 로드는 비교적 꾸준할 것이다.
일부 실시예들에 따라, 상기 비디오 스트림의 전송은 제1 우선 레벨을 갖고, 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 상기 제2 프로세싱에 적용된 상기 하나 이상의 셰이더들 중 적어도 하나의 전송은 상기 제1 우선 레벨보다 낮은 제2 우선 레벨을 가진다. 결과적으로, 상기 전송들을 수행하는 순서는 상기 각 우선 레벨에 기초한다. 이러한 실시예에 따라, 상기 비디오 스트림의 전송은 상기 클라이언트 디바이스에 적용되는 셰이더들의 전송에 대해 늘 우선적으로 수행된다. 상기 비디오 스트림이 상기 클라이언트 디바이스에 접속되는 디스플레이 또는 상기 클라이언트 디바이스 내의 디스플레이에서 디스플레이될 때, 이러한 것은 슬러터링의 위험을 감소시킬 수 있다. 이러한 실시예에 따라, 제2 프로세싱에서의 셰이더는, 상기 제2 프로세싱의 셰이더들이 전송되기 전에 이미 전송되었던 비디오 스트림의 프레임들에 적용되지 않을 것이다.
일부 실시예들에 따라, 상기 비디오 스트림의 전송은 제1 네트워크 접속을 통해 수행되고, 그리고 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 상기 제2 프로세싱에 적용된 상기 하나 이상의 셰이더들 중 적어도 하나의 전송은 상기 제1 접속과 서로 다른 제2 네트워크 접속을 통해 수행된다. 예를 들어, 상기 비디오 스트림은 실시간 스트리밍 프로토콜(RTSP) 접속 또는 하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 접속을 통해 전송될 수 있는 반면 상기 셰이더들은 소켓 또는 HTTP 접속을 통해 전송될 수 있다.
일부 실시예들에 따라, 비디오 스트림 프로세싱 디바이스는 복수의 스레드들의 실행을 포함하고, 상기 비디오 스트림의 전송은 제1 스레드를 실행함으로써 수행되며, 그리고 상기 제2 프로세싱에 적용되는 하나 이상의 셰이더들 중 적어도 하나의 전송은 상기 제1 스레드와 상이한 제2 스레드를 실행함으로써 수행된다. 이것은, 또한, 상기 비디오 스트림이 상기 제2 프로세싱의 스레드들의 전송에 우선하여 전송되는 것을 가능하게 할 것이다.
일부 실시예들에 따라, 상기 방법은: 상기 비디오 스트림 프로세싱 디바이스에서, 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송되는 비디오 스트림에 대한 요청을 상기 클라이언트 디바이스로부터 수신하는 단계와; 상기 비디오 스트림 프로세싱 디바이스에서, 상기 요청으로부터 상기 클라이언트에 관련된 정보를 추출하는 단계를 더 포함하고, 상기 정보는, 상기 클라이언트 디바이스의 하나의 타입의 GPU의 정보를 적어도 포함하고, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은 상기 추출된 정보에 의존한다.
상기 클라이언트 디바이스로부터의 비디오 스트림의 요청으로부터 셰이더 실행의 분할을 위해 요구되는 정보를 이미 추출함으로써, 제1 프로세싱 및 제2 프로세싱의 결정은 초기에 수행될 수 있다.
일부 실시예들에 따라, 상기 비디오 스트림 프로세싱은, 상기 클라이언트 디바이스에 의해 전송된 상기 비디오 스트림에 대한 요청에 응답하여 상기 클라이언트 디바이스에 관한 정보에 대한 요청을 포함할 수 있다. 상기 비디오 스트림 프로세싱 디바이스는, 예를 들어, 상기 응답에 포함된 자바스크립트를 통해 상기 정보를 요청할 수 있다. 상기 클라이언트 디바이스가 이러한 응답을 수신할 때, 상기 프로세싱 디바이스에 전송된 추가의 통신에 요청된 정보를 제공할 수 있다.
제2 양상으로, 본 발명은 비디오 스트림을 프로세싱하는 비디오 스트림 프로세싱 디바이스를 제공하고, 상기 비디오 스트림 프로세싱 디바이스는: 상기 비디오 스트림에 적용되는 하나 이상의 셰이더들을 저장하는 메모리와; 셰이더 핸들링 유닛 - 상기 셰이더 핸들링 유닛은, 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제1 프로세싱; 및 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제2 프로세싱을 결정하고, 상기 제1 프로세싱을 수행하는 GPU를 포함하고, 상기 비디오 스트림 프로세싱 디바이스는, 상기 제2 프로세싱에 적용되는 상기 하나 이상의 셰이더들 중 적어도 하나 및 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터를 전송하도록 되어 있는 디지털 네트워크 모듈을 더 포함하고, 상기 하나 이상의 셰이더들은 상기 비디오 스트림의 후속-프로세싱을 위한 것이다.
상기 비디오 프로세싱 디바이스는 유리하게 디지털 비디오 카메라의 일 부분일 것이고, 상기 비디오 스트림은 상기 디지털 비디오 카메라에 의해 획득된다. 이것은 상기 비디오 카메라에 접속되는 추가의 전자 디바이스들의 요구를 감소시키고, 그리고 예를 들어, 원인들을 어셈블링하고 상기 비디오 스트림 프로세싱 디바이스 및 상기 카메라를 장착하기 위해 요구되는 공간을 감소시키기에 유리하다.
제3 양상에서, 본 발명은 비디오 스트림을 프로세싱하는 시스템을 제공하고, 상기 시스템은 비디오 스트림 프로세싱 디바이스를 포함하고, 상기 비디오 스트림 프로세싱 디바이스는: 상기 비디오 스트림에 적용되는 하나 이상의 셰이더들을 저장하는 메모리와; 셰이더 핸들링 유닛 - 상기 셰이더 핸들링 유닛은, 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제1 프로세싱; 및 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제2 프로세싱을 결정하고 - 을 포함한다. 상기 비디오 프로세싱 디바이스는, 제1 프로세싱을 수행하는 그래픽 프로세싱 유닛, GPU, 상기 비디오 스트림을 인코딩된 비디오 스트림으로 인코딩하도록 구성된 인코더, 및 디지털 네트워크를 통해, 상기 제2 프로세싱에 적용되는 상기 하나 이상의 셰이더들 중 적어도 하나, 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터 및 상기 인코딩된 비디오 스트림을 전송하도록 구성된 디지털 네트워크 모듈을 더 포함한다. 상기 시스템은 클라이언트 디바이스를 더 포함하고, 상기 클라이언트 디바이스는: 상기 제2 프로세싱에 적용되는 상기 하나 이상의 셰이더들 중 적어도 하나, 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터 및 상기 인코딩된 비트스트림을 상기 디지털 네트워크를 통해 수신하도록 구성된 디지털 네트워크 모듈; 상기 인코딩된 비디오 스트림을 비디오 스트림으로 디코딩하기 위해 구성된 디코더; 및 상기 하나 이상의 셰이더들 중 수신된 적어도 하나의 셰이더와 상기 제2 프로세싱에 관련된 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 수신된 데이터를 사용하여 제2 프로세싱을 수행하는 GPU를 더 포함한다.
제4 양상에서, 상기 본 발명은, 프로세싱 기능을 갖는 디바이스에 의해 실행될 때 제1 양상에 따른 방법을 수행하도록 하는 명령어들을 갖는 컴퓨터-판독가능한 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공한다.
제2, 제3 및 제4 양상은 일반적으로 상기 제1 양상과 동일한 피처들 및 이점들을 가질 수 있다.
본 발명의 추가적인 객체들, 피처들 및 이점들과 함께, 상기의 서술은 첨부된 도면들을 참조하여, 본 발명의 실시예들의 하기의 예시적이고 제한되지 않은 상세한 설명을 통해 더 잘 이해될 수 있을 것이고, 동일한 참조번호들은 동일한 유사한 요소들에 대해 사용될 것이다.
도 1은 셰이더들을 사용하여 비디오 스트림의 프로세싱의 흐름도를 나타내고, 상기 프로세싱은 비디오 프로세싱 디바이스와 클라이언트 디바이스 사이에서 분할된다.
도 2는 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 사이의 셰이더들을 사용하여 비디오 스트림의 프로세싱을 분할하기 위해 상기 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 사이에서 전송된 메시지들 및 데이터의 예를 도시한다.
도 3a는 셰이더들을 사용하여 비디오 스트림의 프로세싱의 시나리오를 나타낸다.
도 3b 내지 3c는, 상기 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 사이의 도 3a에 서술된 프로세싱을 분할하는 여러 방법들을 도시한다.
도 4a는 셰이더들을 사용하여 비디오 스트림의 프로세싱의 시나리오를 나타낸다.
도 4b 내지 4c는, 상기 비디오 스트림 프로세싱 디바이스와 클라이언트 디바이스 사이의 도 4a에 서술된 프로세싱의 분할을 동적으로 변경하는 것을 나타낸다.
도 5는 상기 비디오 프로세싱 디바이스와 상기 클라이어트 디바이스를 포함하는 시스템을 나타낸다.
도 1은 셰이더들을 사용하는 비디오 스트림의 프로세싱의 흐름도의 예를 나타낸다. 흐름도의 제1 단계는, 비디오 스트림(102)에 적용되는 하나 이상의 셰이더들(105)을 설정하는 단계(S102)이다. 도 1에서 서술된 것처럼, 비디오 스트림(102)은 비디오 스트림 프로세싱 디바이스 외부에서 회득될 수 있고 그리고 상기 비디오 스트림 프로세싱 디바이스에 전송될 수 있다. 일부 실시예들에 따라서, 상기 비디오 스트림 프로세싱 디바이스는 디지털 비디오 카메라이다. 이러한 경우에서, 비디오 스트림(102)은, 디지털 비디오 카메라에 의해 획득되고 그 결과 도 1에서 도시된 것처럼 상기 비디오 스트림 프로세싱 디바이스에 전송되지 않는다. 하지만, 다른 실시예들에 따라, 비디오 스트림 프로세싱 디바이스는 비디오 스트림(102)을 요구하는 비디오 카메라로부터 분리된 디바이스이다. 이러한 경우에서, 상기 비디오 스트림 프로세싱 디바이스와 상기 비디오 카메라 사이의 접속의 유선 접속 또는 무선 접속일 수 있다.
더욱이, 도 1에서, 셰이더들(105)을 설정하는 단계(S102)는, 예를 들어, 비디오 스트림(102)이 분석되고 그리고 적용되는 셰이더들(105)이 분석에 기초하여 결정되는 사전 프로세싱 단계에서 상기 비디오 스트림 프로세싱 디바이스 외부에서 만들어진다. 다른 실시예들에서, 상기 셰이더들(105)을 설정하는 단계(S102)는, 비디오 스트림 프로세싱 디바이스에서 수행된다. 또 다른 실시예에 따라, 상기 하나 이상의 셰이더들은, 항상 상기 비디오 스트림에 적용되는 고정된 셰이더들이고 결과적으로 상기 비디오 스트림 프로세싱 디바이스에 상기 비디오 스트림 프로세싱 디바이스에 하드코딩될 수 있다.
상기 비디오 스트림(102)에 대한 상기 하나 이상의 셰이더들(105)의 애플리케이션은 제1 및 제2 프로세싱 단계로 분할된다. 2개의 프로세싱 단계들로 분할하는 것은 아래에서 더 서술될 것이다. 상기 제1 프로세싱은 상기 비디오 스트림 프로세싱 디바이스에 의해 수행될 것이고, 상기 제2 프로세싱은 상기 비디오 스트림 프로세싱 디바이스에 접속되는 클라이언트 디바이스에 의해 수행될 것이다. 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 간의 접속은 유선 접속 또는 무선 접속일 수 있다.
도 1에서 서술된 흐름도에서 다음 단계는, 상기 비디오 스트림 프로세싱 디바이스에서, 상기 제1 프로세싱에 의해, 상기 하나 이상의 셰이더들(105)(이전에 S102에서 설정됨) 중 적어도 하나(107)를 상기 비디오 스트림(102)의 적어도 하나의 서브세트에 적용하는 단계(S104)이다. 이러한 단계는, 아래에서 더 상세하게 서술되듯이 상기 비디오 스트림 프로세싱의 GPU를 사용하여 수행된다.
또한, 상기 제2 프로세싱에 대해 요구되는 셰이더(들)(108)은 비디오 스트림 프로세싱 디바이스로부터 클라이언트 디바이스로 전송된다(S106). 제2 프로세싱이 텍스처를 사용하는 텍스처 맵핑을 포함하면, 상기 텍스처는 또한 제2 프로세싱에 대해 요구되는 셰이더(들)(108)의 전송(S106)의 일부로서 또는 개별 전송(도시되지 않음)으로서 전송될 수 있음을 알아야 한다.
도 1에서 명확하게 도시된 것처럼, 상기 흐름도는 2개의 개별 트랙들을 포함한다. 상기 비디오 스트림(102, 102') 상의 하나 이상의 셰이더들(105)의 애플리케이션과 상기 비디오 스트림 프로세싱 디바이스 및 상기 클라이언트 디바이스로부터의 하나 이상의 셰이더들(105)의 임의의 전송에 대한 하나의 트랙, 그리고 상기 비디오 스트림 프로세싱 디바이스에서 상기 비디오 스트림(102)을 인코딩(S108)하고, 상기 클라이언트 디바이스에 상기 인코딩된 비디오 스트림(106)을 전송하며(S109), 그리고 상기 클라이언트 디바이스에서 상기 인코딩된 비디오 스트림(106)을 디코딩(S110)하는 하나의 트랙이 존재한다. 즉, 상기 비디오 스트림은 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 인코딩된 비디오 스트림(106)으로 전송되고(S109), 상기 비디오 스트림은 상기 제2 비디오 프로세싱(S112) 이전에 디코딩된다(S110). 따라서, 상기 제2 프로세싱은 상기 비디오 스트림(102')의 적어도 하나의 서브세트에 전송된 상기 하나 이상의 셰이더들(105) 중 적어도 하나(108)의 애플리케이션에 관한 것이다.
상기 비디오 스트림(102')은 이후 디스플레이(104)에 의해 디스플레이될 수 있다. 상기 하나 이상의 셰이더들 모두가 전체 비디오 스트림에 적용되는 경우, 디스플레이(104)에 의해 디스플레이되는 비디오 스트림(102')은 완전히 처리된다. 하지만, 상기 흐름에 대한 2개의 트랙 설계는 상기 인코딩된 비디오를 전송(S109)하고 그리고 상기 클라이언트 디바이스에서 제2 프로세싱에 적용되는 하나 이상의 셰이더들(105) 중 적어도 하나(108)를 전송하는(S106) 서로 다른 우선 레벨들을 가능하도록 하기에, 디스플레이(104)에서 디스플레이된 비디오 스트림(102')의 적어도 하나의 부분이 절반만 처리되거나 또는 전혀 처리되지 않도록 할 수 있다. 예를 들어, 비디오 스트림(102')의 제1 플레임들은 이전에 S102에서 설정된 하나 이상의 셰이더들(105)의 서브 세트에 의해서만 처리될 수 있고 그리고/또는 비디오 스트림의 제1 프레임들에 적용되는 셰이더들은 비디오 스트림의 제1 프레임들의 서브 세트에 의해서만 처리될 수 있다. 즉, 제2 프로세싱은, 상기 제2 프로세싱에 대해 요구되는 셰이더(들)(108)이 클라이언트 디바이스에 전송(S106)되기 전에 이미 디스플레이된 비디오 스트림의 프레임들에 적용되지 않을 것이다. 실시간 애플리케이션들에서, 즉, 상기 비디오가 실시간으로 요구되고, 처리되고 그리고 디스플레이될 때, 제2 프로세싱의 셰이더들(108)의 전송(S106)에 관하여 비디오 스트림 우선순위의 전송(S109)을 제공하는 것이 유리할 수 있다.
도 2는 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이에서 발생하는 전송들의 예를 나타낸다. 상기 제1 전송은, 상기 클라이언트 디바이스 및 상기 비디오 스트림 프로세싱 디바이스로부터 전송(S202)된 비디오에 대한 요청, 예를 들어, http(들) 요청이다. 상기 요청이 상기 비디오 스트림 프로세싱 디바이스에 의해 수신될 때, 상기 비디오 스트림 프로세싱 디바이스는 즉시 비디오(202)를 상기 클라이언트 디바이스에 전송하는 것을 시작할 수 있다. 비디오에 대한 요청으로부터, 상기 비디오 스트림 프로세싱 디바이스는, 예를 들어, 클라이언트 디바이스가 GPU, GPU의 형태 및 클라이언트 디바이스의 운영 시스템(OS)를 가지면, 상기 클라이언트 디바이스에 관련한 정보를 추출할 수 있다. 이러한 정보는, 하나 이상의 셰이더들의 실행이 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이에서 실행되어야 하는지 그리고 그러한 경우에서 셰이더들의 실행이 어떻게 분할되어야하는지를 결정하기 위해 사용될 수 있다.
하지만, 추가의 정보가 상기 프로세싱을 분할하는데 필요하면, 상기 비디오 스트림 프로세싱 디바이스는, 상기 클라이언트 디바이스에 전송된(S204) 메시지에 응답하여, 상기 클라이언트 디바이스에 관련한 더 많은 정보를 요청할 수 있다. 예를 들어, 추가의 정보에 대한 요청은 http(들) 응답에 포함되는 자바스크립트 코드에 임베딩될 수 있다.
그와 같은 추가의 정보가 요청될 때, 상기 클라이언트 디바이스는 상기 비디오 스트림 프로세싱 디바이스에 전송(S206)된 메시지에 상기 요청된 정보를 제공할 수 있다.
추가 정보가 비디오 스트림 프로세싱 디바이스에 의해 요청(S204)되었을 지라도, 또는 상기 클라이언트 디바이스로부터 비디오에 대한 요청에 제공된 정보가 충분한 것으로 고려되었을지라도, 상기 셰이더(들)의 프로세싱의 분할이 수행된 후, 상기 하나 이상의 셰이더들 중 적어도 하나는 상기 클라이언트 디바이스에서 제2 프로세싱에 적용되고, 그리고 상기 제2 프로세싱이 연관된 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터가 상기 클라이언트 디바이스에 전송(S208)된다.
일부 실시예들에 따라, 제1 프로세싱 및/또는 제2 프로세싱은 비디오 스트림(202)의 듀레이션(duration)을 동적으로 변경시킨다. 이는, 추가 정보가 클라이언트 디바이스로부터 비디오 스트림 프로세싱 디바이스로 전송(S212)되는 것에 의해 가능해질 수 있다. 이러한 추가 정보는, 예를 들어, 클라이언트 디바이스의 배터리 레벨 및/또는 클라이언트 디바이스의 GPU의 프로세싱 전력을 유지할 수 있다. 이러한 타입의 정보는 비디오에 대한 요청에 또는 상기 클라이언트 디바이스로부터 전송된(S206) 추가의 정보를 갖는 제1 메시지에 이미 전송(S202)될 수 있지만, 상기 정보가 기간을 동적으로 변경시킬 수 있는 클라이언트 디바이스의 특성들을 유지하기에, 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이의 셰이더들의 프로세싱을 분할할 때 업데이트된 정보를 고려하는 것이 유리할 수 있다. 상기 추가 정보는, 클라이언트 디바이스 자신의 계획으로 전송될 수 있거나 또는 상기 비디오 스트림 프로세싱 디바이스로부터의 그와 같은 추가 정보에 대한 요청의 전송(S210)에 대한 응답으로서 전송(S212)될 수 있다. 더욱이, 제1 프로세싱 및/또는 제2 프로세싱은, 비디오 스트림 프로세싱 디바이스에서 직접 이용가능한 정보, 예를 들어, 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스 사이의 접속의 대역폭, 비디오 스트림 프로세싱의 GPU의 프로세싱 전력 및/또는 상기 비디오 스트림 프로세싱 디바이스의 베터리 레벨에 기초하여 동적으로 변경시킬 수 있다.
상기 제2 프로세싱이 상기와 같은 새로운 정보에 기초하여 변경되면, 클라이언트 디바이스에서 상기 변경된 제2 프로세싱에 적용되는 하나 이상의 셰이더들 중 적어도 하나 및 상기 변경된 제2 프로세싱이 관련되는 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터는 상기 클라이언트에 전송(S214)된다.
일부 실시예들에 따라, 제2 프로세싱이 새로운 정보에 기초하여 변경되지만 동시에 상기 하나 이상의 셰이더들 중 적어도 하나가 원래의 제2 프로세싱과 비교된 변경된 제2 프로세싱에 적용되면, 상기 변경된 제2 프로세싱이 관련되는 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터만이 상기 클라이언트 디바이스에 전송(S214)될 수 있다. 상기 클라이언트 디바이스에서 상기 변경된 제2 프로세싱이 적용되는 상기 하나 이상의 셰이더들 중 적어도 하나만이 상기 클라이언트 디바이스에 전송(S214)될 수 있는 경우에, 상기 하나 이상의 셰이더들 중 적어도 하나만이 변경되면, 동일하게 적용된다.
더욱이, 예를 들어, 상기 제2 프로세싱에서 이전에 적용된 셰이더들 중 하나가 더 이상 제2 프로세싱의 일부가 아닐 때 제2 프로세싱이 변경되면, 상기 비디오 스트림 프로세싱 디바이스는 상기 제거된 셰이더를 적용하는 것을 중단하도록 상기 클라이언트 디바이스에 명령을 전송할 수 있다.
상기 비디오 스트림 프로세싱은 여러 클라이언트 디바이스들에 동시에 전송할 수 있음을 알아야 한다. 이러한 경우에서, 상기 제1 프로세싱과 상기 제2 프로세싱 사이의 전체 프로세싱의 분할은 기능들과 성능에 따라 서로 다른 클라이언트 디바이스들에 대해 서로 다르게 행해질 수 있다. 서로 다른 셰이더들(예를 들어, 버텍스 셰이더들, 픽셀 셰이더들, 계산 셰이더들)이 병렬로 실행되도록 비디오 스트림 프로세싱 디바이스의 GPU가 처리할 수 있기에, 그와 같은 디바이스 특정 분할을 만드는 것이 가능할 수 있다. 더욱이, 서로 다른 클라이언트 디바이스들은 (예를 들어, 서로 다른 해상도, 플레임 레이트를 갖고 그리고/또는 시야의 일부에 디지털적으로 줌(zoom)되는) 서로 다른 비디오 스트림들을 요청할 수 있다.
도 3a는 셰이더들을 사용하는 비디오 스트림의 프로세싱의 시나리오를 나타낸다. 이러한 시나리오에서, 3개의 셰이더들 S1, S2, S3은 3개의 프레임들 #1, #2, #3을 포함하는 비디오 스트림에 적용되도록 설정된다. 도 3b에서, 3개의 프레임들의 프로세싱은, 아래와 같이 상기 비디오 프로세싱 디바이스 및 클라이언트 디바이스 사이에서 분할된다.
제1 및 제2 프로세싱 모두에 대해, 상기 프레임들 #1, #2, #3의 각각의 모든 픽셀들이 처리되고, 이는, 도 3b에서 상기 프레임들 #1, #2, #3을 나타내는 영역들 전체에 점을 찍음으로써 표시된다. 하지만, 제1 프로세싱은 2개의 셰이더들(S1, S2)을 상기 프레임들 #1, #2, #3에 적용하는 것을 포함하는 반면, 상기 제2 프로세싱은 제3 세이더(S3)를 상기 프레임들 #1, #2, #3에 적용하는 것을 포함한다. 결과적으로, 상기 제1 프로세싱에 적용된 상기 적어도 하나의 셰이더 S1, S2는 상기 제2 프로세싱에 적용된 상기 적어도 하나의 셰이더 S3과 상이하다.
도 3c에서, 상기 셰이더들의 프로세싱의 서로 다른 타입의 분할이 행해진다. 이러한 실시예에 따라, 3개의 셰이더들 S1, S2, S3 모두 상기 제1 및 제2 프로세싱 둘다에 적용된다. 대신, 상기 제1 및 제2 프로세싱은 상기 비디오 스트림의 프레임들 #1, #2, #3의 서로 다른 서브세트들과 관련된다. 도 3c에서, 상기 제1 프로세싱은 각 프레임 #1, #2, #3의 픽셀들의 절반에 관련되는 반면, 상기 제2 프로세싱은 각 프레임 #1, #2, #3의 픽셀들의 다른 절반에 관련된다. 결과적으로, 상기 제1 프로세싱과 관련되는 상기 비디오 스트림의 서브세트는, 상기 제2 프로세싱과 관련되는 상기 비디오 스트림의 서브세트와 상이하다. 상기 프레임들을 분할하는 다른 방식들도 동일하게 가능하다. 예를 들어, 매 다른 프레임은 상기 비디오 스트림 프로세싱 디바이스 상에서 처리될 수 있는 반면, 상기 클라이언트 디바이스 상에서의 프로세싱은 상기 프레임들의 나머지를 처리한다. 다른 가능한 것은, 상기 비디오 스트림 프로세싱 디바이스에서 상기 픽셀들의 2/3를 처리하는 것 및 상기 클라이언트 디바이스에서 상기 픽셀들의 1/3을 유지하는 것을 포함하거나 또는 처리되는 픽셀들을 분할하는 임의의 다른 적합한 방식을 포함한다.
도 4a는 셰이더들을 사용하는 비디오 스트림의 프로세싱의 다른 시나리오를 나타낸다. 이러한 시나리오에서, 3개의 셰이더들 S1, S2, S3은 6개의 프레임들 #1, #2, #3, #4, #5, #6을 포함하는 상기 비디오 스트림에 적용되도록 설정된다.
도 4b는 첫 3개의 프레임들 #1, #2, #3의 프로세싱을 나타낸다. 도 4b에서, 상기 제1 및 제2 프로세싱 둘 모두에 대해, 상기 프레임들 #1, #2, #3 각각의 모든 픽셀들이 처리된다. 하지만, 상기 제1 프로세싱은 상기 셰이더들 중 2개 S1, S2를 상기 프레임들 #1, #2, #3에 적용하는 것을 포함하는 반면, 상기 제2 프로세싱은 제3 셰이더 S3을 상기 프레임들 #1, #2, #3에 적용하는 것을 포함한다.
상기에서 서술된 것처럼, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은 상기 비디오 스트림의 듀레이션을 동적으로 변경시킬 수 있다. 이러한 것은, 마지막 3개의 프레임들 #4, #5, #6의 프로세싱을 나타내는 도 4c에서 표현된다. 도 4c에서, 상기 제2 셰이더 S2의 실행이 이동되었고, 이제 상기 클라이언트 디바이스에서 제2 프로세싱의 일부인 점에서, 상기 제1 및 제2 프로세싱은 도 4b에서의 제1 및 제2 프로세싱과 비교하여 변경되었다.
상기 비디오 프로세싱 디바이스와 상기 클라이언트 디바이스 사이의 상기 셰이더들의 프로세싱을 분할할 때, 상기에서 서술된 것과 다른 추가적인 고려들이 이루어질 수 있다. 예를 들어, 상기 하나 이상의 셰이더들 중 하나가 상기 비디오 스트림 상에 프라이버시 마스크를 생성하는 경우에, 상기 프라이버시 마스크가 상기 제1 프로세싱 전체에서 생성되면 유리할 수 있다. 상기 프라이버시 마스크가 클라이언트 디바이스에 전송된 인코딩된 비디오에 이미 적용되었기에, 이러한 것은 시청자에게 민감한 비디오 데이터를 디스플레이하는 위험을 감소시킬 수 있다.
더욱이, 낮은 레이턴시를 요구하는 셰이더들에 대해, 그리고 상기 클라이언트 디바이스에서 또는 상기 클라이언트 디바이스에 접속되는 디스플레이에서 상호대화형 인터페이스와 관련되는 셰이더들에 대해, 이러한 셰이더들의 실행은 상기 클라이언트 디바이스에서 유리하게 수행된다.
도 3b 내지 3c 및 도 4b 내지 4c에서, 제1 프로세싱은 상기 제2 프로세싱과 상이하다. 하지만, 이전에도 언급되었듯이, 상기 제1 프로세싱 및 상기 제2 프로세싱은, 예를 들어, 상기 셰이더가 상기 비디오 스트림의 점진적 필터링을 수행할 때 동일하다.
도 5는 비디오 스트림을 처리하는 시스템(500)을 나타낸다. 상기 시스템(500)은 클라이언트 디바이스(516)에 접속되는 비디오 스트림 프로세싱 디바이스(502)를 포함한다.
비디오 스트림 프로세싱 디바이스는 상기 비디오 스트림에 적용되는 하나 이상의 셰이더들을 저장하는 메모리(504)를 포함한다. 상기 메모리(504)는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광 디스크 스토리지, 자기 카세트들, 자기 테잎, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 상기 요구된 정보를 저장하기 위해 사용될 수 있고 그리고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이에 한정되지 않는다.
상기 비디오 스트림 프로세싱 디바이스(502)는 셰이더 핸들링 유닛(506)을 더 포함하고, 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 비디오 스트림의 적어도 하나의 서브 세트에 관련된 제1 프로세싱 및 상기 하나 이상의 셰이더들 중 적어도 하나가 적용되는 비디오 스트림의 적어도 하나의 서브 세트에 관련된 제2 프로세싱을 결정하기 위해 사용될 수 있다. 상기 셰이더 핸들링 유닛(506)은, 상기 비디오 스트림 프로세싱 디바이스, 상기 클라이언트 디바이스 및/또는 상기 제1 프로세싱 및 제2 프로세싱을 결정할 때 상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스간 접속에 관련된 정보를 고려할 수 있다. 상기 셰이더 핸들링 유닛(506)은, 또한, 비디오 분석 알고리즘들을 이용함으로써 또는 다른 디바이스로부터 비디오 분석 데이터를 제공받음으로써 비디오 스트림의 콘텐트를 고려할 수 있다. 예를 들어, 상기 비디오 스트림이 프라이버시 마스크에 의해 커버될 필요가 있는 사람 얼굴들을 포함한다고 결정되면, 상기 셰이더 핸들링 유닛은, 상기 제1 프로세싱이 그와 같은 프라이버시 마스크를 비디오 스트림에 적용하기 위해 셰이더를 포함해야 한다고 결정할 수 있다. 일부 실시예들에 따르면, 상기 셰이더 핸들링 유닛은 상기 비디오 스트림 프로세싱 디바이스로부터 제공된다. 이러한 실시예에 따라, 상기 제1 및 제2 프로세싱은 상기 비디오 스트림 프로세싱 디바이스에서 결정되는 대신에 상기 비디오 스트림 프로세싱 디바이스에 제공된다.
상기 비디오 스트림 프로세싱 디바이스는 또한, 제1 프로세싱을 수행하는 GPU(508) 및 인코딩된 비디오 스트림(106)으로 비디오 스트림을 인코딩하도록 구성되는 인코더(512)를 더 포함한다. 상기 인코딩된 비디오 스트림은 이후 디지털 네트워크 모듈(510)에 의해, 디지털 네트워크(514)을 통해 클라이언트 디바이스(516)으로 전송된다. 디지털 네트워크 모듈(510)은 또한, 상기 제2 프로세싱에 적용되는 하나 이상의 셰이더들 중 적어도 하나(108) 및 상기 제2 프로세싱이 관련된 상기 비디오 스트림의 적어도 하나의 서브세트에 관련된 데이터(524)를 전송할 것이다. 예를 들어, 도 3c에 도시된 실시예에서, 제2 프로세싱이 관련된 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터(524)는, 각 프레임의 우측 절반이 제2 프로세싱에서 처리되어야함을 나타낸다. 셰이더 핸들링 유닛(506) 및 인코더(512)는 소프트웨어로 구현될 수 있고 상기 비디오 프로세싱 디바이스(502) 내의 하나 이상의 프로세서들에 의해 실행될 수 있다.
상기에서 서술된 것처럼, 인코딩된 비디오 스트림(106)의 전송은, 상기 제2 프로세싱에 적용되는 하나 이상의 셰이더들 중 적어도 하나(108) 및 상기 제2 프로세싱이 관련된 상기 비디오 스트림의 적어도 하나의 서브세트에 관련된 데이터(524)의 전송에 비해 우선적으로 실행될 것이다. 이러한 피처는, 도 5에서, 비디오 스트림(106)의 전송을 나타내는 라인이 셰이더(들)(108) 및 데이터(524)의 전송을 나타내는 라인과 비교하여 더 두꺼운 것을 통해 표현되고 있다. 이러한 우선 순위는 다수의 방식들로 획득될 수 있다. 예를 들어, 상기 비디오 스트림(106)의 전송은 제1 네트워크 접속을 통해 수행될 수 있고, 그리고 셰이더(들)(108) 및 데이터(524)의 전송은 제1 네트워크 접속을 통해 수행될 수 있고, 그리고 셰이더(들)(108) 및 데이터(524)의 전송은 제1 네트워크 접속과 서로 다른 제2 네트워크 접속을 통해 수행될 수 있다. 이러한 경우, 상기 비디오 스트림(106)의 전송을 위한 접속은, 상기 셰이더(들)(108) 및 데이터(524)의 전송을 위한 접속과 비교하여 더 큰 대역폭을 가질 수 있다. 다른 실시예들에 따라, 비디오 스트림 프로세싱 디바이스(502)는 복수의 스레드들의 실행을 포함하고, 상기 비디오 스트림(106)의 전송은 제1 스레드를 실행함으로써 수행되며, 그리고 상기 제2 프로세싱에 적용되는 셰이더(들)(108) 및 데이터(524)의 전송은 상기 제1 스레드와 상이한 제2 스레드를 실행함으로써 수행된다.
인코딩된 비디오 스트림(106), 셰이더(들)(108) 및 데이터(524)는 클라이언트 디바이스 내의 디지털 네트워크 모듈(522)에 의해 수신된다. 따라서, 클라이언트 디바이스(516) 내의 디지털 네트워크 모듈(522)은, 디지털 네트워크(514)를 통해, 상기 제2 프로세싱에 적용되는 하나 이상의 셰이더들 중 적어도 하나(108), 상기 제2 프로세싱이 관련되는 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터(524), 및 상기 인코딩된 비디오 스트림(106)을 수신하도록 구성된다. 상기 클라이언트 디바이스(516)는, 또한, 상기 인코딩된 비디오 스트림(106)을 비디오 스트림으로 디코딩하기 위해 구성된 디코더(520), 및 상기 하나 이상의 셰이더들 중 상기 수신된 적어도 하나의 셰이더(108) 및 상기 제2 프로세싱이 관련되는 비디오 스트림의 적어도 하나의 서브세트에 관한 수신된 데이터(524)를 사용하여 상기 제2 프로세싱을 수행하는 GPU(518)를 포함한다. 최종적으로, 상기 클라이언트 디바이스는 상기 프로세싱된 비디오 스트림(526)을 디스플레이하는 디스플레이(104)에 접속될 수 있다.

Claims (15)

  1. 클라이언트 디바이스에 접속되는 비디오 스트림 프로세싱 디바이스를 포함하는 시스템에서 비디오 스트림을 프로세싱하는 방법으로서,
    상기 비디오 스트림에 적용되는 셰이더(shader)들을 설정하는 단계와;
    상기 셰이더들을 제1 프로세싱 및 제2 프로세싱으로 분할하는 단계와;
    상기 제1 프로세싱에 의해, 상기 비디오 스트림 프로세싱 디바이스에서, 상기 셰이더들 중 적어도 하나를 상기 비디오 스트림의 적어도 하나의 서브세트에 적용하는 단계와;
    상기 비디오 스트림 프로세싱 디바이스에서, 상기 비디오 스트림을 인코딩하는 단계와;
    상기 비디오 스트림 프로세싱 디바이스에서, 상기 인코딩된 비디오 스트림을 상기 클라이언트 디바이스로 전송하는 단계와;
    상기 클라이언트 디바이스에서 상기 인코딩된 비디오 스트림을 디코딩하는 단계와;
    상기 제2 프로세싱에 의해, 상기 클라이언트 디바이스에서, 상기 셰이더들 중 적어도 하나를 상기 비디오 스트림의 적어도 하나의 서브세트에 적용하는 단계를 포함하고,
    상기 제2 프로세싱에서 적용되는 상기 셰이더들 중 적어도 하나는 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  2. 제1항에 있어서,
    상기 제1 프로세싱은 상기 제2 프로세싱과 서로 다른 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  3. 제2항에 있어서,
    상기 제1 프로세싱에 적용되는 상기 적어도 하나의 셰이더는 상기 제2 프로세싱에 적용되는 상기 적어도 하나의 셰이더와 서로 다른 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  4. 제2항에 있어서,
    상기 제1 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트는 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트와 서로 다른 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  5. 제1항에 있어서,
    상기 제1 프로세싱 및/또는 상기 제2 프로세싱은:
    상기 클라이언트 디바이스의 GPU(graphics processing unit)의 유형; 및
    상기 비디오 스트림 프로세싱 디바이스의 GPU의 유형으로 이루어진 그룹 중 적어도 하나에 의존하는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  6. 제1항에 있어서,
    상기 제1 프로세싱 및/또는 상기 제2 프로세싱은 상기 비디오 스트림의 지속 시간(duration) 동안 변경되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  7. 제6항에 있어서,
    상기 제1 프로세싱 및/또는 상기 제2 프로세싱은:
    상기 비디오 스트림 프로세싱 디바이스와 상기 클라이언트 디바이스간 접속의 대역폭과;
    상기 클라이언트 디바이스의 베터리 레벨과;
    상기 비디오 스트림 프로세싱 디바이스의 베터리 레벨과;
    상기 클라이언트 디바이스의 GPU의 프로세싱 전력과; 그리고
    상기 비디오 스트림 프로세싱 디바이스의 GPU의 프로세싱 전력으로 구성되는 그룹 중 적어도 하나에 관한 정보에 기초하여 상기 비디오 스트림의 지속 시간 동안 동적으로 변경되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  8. 제1항에 있어서,
    상기 비디오 스트림의 전송은 제1 우선 순위 레벨을 갖고, 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로의 상기 제2 프로세싱에 적용된 상기 셰이더들 중 적어도 하나의 전송은 상기 제1 우선 순위 레벨보다 낮은 제2 우선 순위 레벨을 가지며, 그리고 상기 전송들을 수행하는 순서는 상기 각 우선 순위 레벨에 기초하는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  9. 제8항에 있어서,
    상기 비디오 스트림의 전송은 제1 네트워크 접속을 통해 수행되고, 그리고 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로의 상기 제2 프로세싱에 적용된 상기 셰이더들 중 적어도 하나의 전송은 상기 제1 네트워크 접속과 서로 다른 제2 네트워크 접속을 통해 수행되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  10. 제1항에 있어서,
    상기 비디오 스트림 프로세싱 디바이스에서, 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송되는 비디오 스트림에 대한 요청을 상기 클라이언트 디바이스로부터 수신하는 단계와;
    상기 비디오 스트림 프로세싱 디바이스에서, 상기 요청으로부터 상기 클라이언트에 관련된 정보를 추출하는 단계를 더 포함하고,
    상기 클라이언트에 관련된 정보는 상기 클라이언트 디바이스의 GPU 유형에 대한 정보를 적어도 포함하고, 상기 제1 프로세싱 및/또는 상기 제2 프로세싱은 상기 추출된 정보에 의존하는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 방법.
  11. 비디오 스트림을 프로세싱하는 시스템으로서,
    비디오 스트림 프로세싱 디바이스; 및
    클라이언트 디바이스를 포함하고,
    상기 비디오 스트림 프로세싱 디바이스는:
    상기 비디오 스트림에 적용되는 셰이더들을 저장하는 메모리와;
    셰이더 핸들링 유닛 - 상기 셰이더 핸들링 유닛은,
    상기 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제1 프로세싱; 및
    상기 셰이더들 중 적어도 하나가 적용되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관련되는 제2 프로세싱을 결정하고 - 과;
    상기 제1 프로세싱을 수행하는 GPU와;
    상기 비디오 스트림을 인코딩된 비디오 스트림으로 인코딩하는 인코더와; 그리고
    디지털 네트워크 모듈을 포함하고, 상기 디지털 네트워크 모듈은, 디지털 네트워크를 통해, 상기 제2 프로세싱에 적용되는 상기 셰이더들 중 적어도 하나, 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터, 및 상기 인코딩된 비디오 스트림을 전송하며,
    상기 클라이언트 디바이스는:
    디지털 네트워크 모듈 - 상기 디지털 네트워크 모듈은, 상기 디지털 네트워크를 통해, 상기 제2 프로세싱에 적용되는 상기 셰이더들 중 적어도 하나, 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 데이터, 및 상기 인코딩된 비디오 스트림을 수신하며 - 과;
    상기 인코딩된 비디오 스트림을 비디오 스트림으로 디코딩하는 디코더와;
    GPU를 포함하고, 상기 GPU는 상기 수신된 셰이더들 중 적어도 하나 및 상기 제2 프로세싱이 관련되는 상기 비디오 스트림의 적어도 하나의 서브세트에 관한 수신된 데이터를 이용하여 상기 제2 프로세싱을 수행하며,
    상기 비디오 스트림은 인코딩된 비디오 스트림으로서 상기 비디오 스트림 프로세싱 디바이스로부터 상기 클라이언트 디바이스로 전송되고, 상기 비디오 스트림은 상기 제2 프로세싱 전에 디코딩되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 시스템.
  12. 제11항에 있어서,
    상기 비디오 스트림 프로세싱 디바이스는 디지털 비디오 카메라이고, 상기 비디오 스트림은 상기 디지털 비디오 카메라에 의해 획득되는 것을 특징으로 하는
    비디오 스트림을 프로세싱하는 시스템.
  13. 프로세싱 기능을 갖는 디바이스에 의해 실행될 때 제1항에 따른 방법을 수행하는 명령어들을 포함하는 컴퓨터-판독가능한 저장 매체.
  14. 삭제
  15. 삭제
KR1020150172402A 2014-12-04 2015-12-04 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스 KR102417055B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP14196324.9A EP3029940B1 (en) 2014-12-04 2014-12-04 Method and device for post processing of a video stream
EP14196324.9 2014-12-04

Publications (2)

Publication Number Publication Date
KR20160067798A KR20160067798A (ko) 2016-06-14
KR102417055B1 true KR102417055B1 (ko) 2022-07-05

Family

ID=52015919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150172402A KR102417055B1 (ko) 2014-12-04 2015-12-04 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스

Country Status (6)

Country Link
US (1) US10049424B2 (ko)
EP (1) EP3029940B1 (ko)
JP (1) JP6804191B2 (ko)
KR (1) KR102417055B1 (ko)
CN (1) CN105677270B (ko)
TW (1) TWI699116B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2520334B (en) * 2013-11-18 2015-11-25 Helen Bradley Lennon A video broadcast system and a method of disseminating video content
JP7077396B2 (ja) * 2017-04-21 2022-05-30 ゼニマックス メディア インク. ビデオエンコードの延期されたポストプロセスのためのシステムおよび方法
JP7389602B2 (ja) * 2019-09-30 2023-11-30 株式会社ソニー・インタラクティブエンタテインメント 画像表示システム、画像処理装置、および動画配信方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130016107A1 (en) * 2011-01-14 2013-01-17 Ciinow Inc. Method and mechanism for performing both server-side and client-side rendering of visual data

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7978205B1 (en) * 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US8098256B2 (en) * 2005-09-29 2012-01-17 Apple Inc. Video acquisition with integrated GPU processing
US8723951B2 (en) 2005-11-23 2014-05-13 Grandeye, Ltd. Interactive wide-angle video server
US7873229B2 (en) * 2006-02-08 2011-01-18 Moxair, Inc. Distributed processing for video enhancement and display power management
EP2046043B1 (en) * 2006-03-07 2012-11-28 Sony Computer Entertainment America LLC Dynamic replacement and insertion of cinematic stage props in program content
TWI369126B (en) * 2006-08-01 2012-07-21 Nvidia Corp Multi-graphics processor system and method for processing content communicated over a network for display purposes
TW201114250A (en) * 2009-10-15 2011-04-16 Avermedia Information Inc IP camera and image output method applied thereto
US8803892B2 (en) * 2010-06-10 2014-08-12 Otoy, Inc. Allocation of GPU resources across multiple clients
US8681162B2 (en) * 2010-10-15 2014-03-25 Via Technologies, Inc. Systems and methods for video processing
US9007432B2 (en) 2010-12-16 2015-04-14 The Massachusetts Institute Of Technology Imaging systems and methods for immersive surveillance
US9250966B2 (en) 2011-08-11 2016-02-02 Otoy, Inc. Crowd-sourced video rendering system
JP2013055454A (ja) * 2011-09-02 2013-03-21 Toshiba Corp 映像再生装置及び映像再生方法
KR20150003406A (ko) * 2012-04-12 2015-01-08 가부시키가이샤 스퀘어.에닉스.홀딩스 동화상 배포 서버, 동화상 재생 장치, 제어 방법, 기록 매체, 및 동화상 배포 시스템
US9378582B2 (en) * 2012-07-31 2016-06-28 Siemens Product Lifecycle Management Software Inc. Rendering of design data
US9264749B2 (en) * 2012-12-13 2016-02-16 Microsoft Technology Licensing, Llc Server GPU assistance for mobile GPU applications
US9069568B2 (en) 2012-12-19 2015-06-30 International Business Machines Corporation Compilation dependency resolution from a diverse group of candidate resources
US20150087414A1 (en) * 2013-09-26 2015-03-26 Cellco Partnership D/B/A Verizon Wireless Cloud gaming implemented using a mobile device and a display device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130016107A1 (en) * 2011-01-14 2013-01-17 Ciinow Inc. Method and mechanism for performing both server-side and client-side rendering of visual data

Also Published As

Publication number Publication date
JP2016111705A (ja) 2016-06-20
JP6804191B2 (ja) 2020-12-23
EP3029940A1 (en) 2016-06-08
TW201622426A (zh) 2016-06-16
US10049424B2 (en) 2018-08-14
CN105677270B (zh) 2018-06-26
KR20160067798A (ko) 2016-06-14
EP3029940B1 (en) 2017-03-15
CN105677270A (zh) 2016-06-15
US20160165282A1 (en) 2016-06-09
TWI699116B (zh) 2020-07-11

Similar Documents

Publication Publication Date Title
US11303881B2 (en) Method and client for playing back panoramic video
CN111681167B (zh) 画质调整方法和装置、存储介质及电子设备
CN109168014B (zh) 一种直播方法、装置、设备及存储介质
US9930308B2 (en) Platform-agnostic video player for mobile computing devices and desktop computers
US9712589B2 (en) System and method for playing a video on mobile web environments
US11128903B2 (en) Systems and methods of orchestrated networked application services
US9426476B2 (en) Video stream
EP3745734A1 (en) Multi-media file processing method and device, storage medium and electronic device
CN110290398B (zh) 视频下发方法、装置、存储介质及电子设备
KR102417055B1 (ko) 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스
CN111327921A (zh) 视频数据处理方法及设备
CN115190345B (zh) 用于显示媒体的协调控制方法、客户端设备及存储介质
CN113327303B (zh) 图像处理方法、装置、计算机设备及存储介质
WO2023226504A1 (zh) 一种媒体数据处理方法、装置、设备以及可读存储介质
CN116193197A (zh) 一种数据处理方法、装置、设备以及可读存储介质
CN116248889A (zh) 图像编码及解码方法、装置和电子设备
US11750892B2 (en) Systems and methods of alternative networked application services
US20230042078A1 (en) Encoding and decoding views on volumetric image data
CN113473180B (zh) 一种基于无线的Cloud XR数据传输方法以及装置、存储介质、电子装置
US20230034937A1 (en) Media file encapsulating method, media file decapsulating method, and related devices
CN117896541A (zh) 视频处理方法、装置、设备及存储介质

Legal Events

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