KR20200019853A - 비디오 인코딩의 연기된 포스트-프로세스들을 위한 시스템들 및 방법들 - Google Patents

비디오 인코딩의 연기된 포스트-프로세스들을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20200019853A
KR20200019853A KR1020197033911A KR20197033911A KR20200019853A KR 20200019853 A KR20200019853 A KR 20200019853A KR 1020197033911 A KR1020197033911 A KR 1020197033911A KR 20197033911 A KR20197033911 A KR 20197033911A KR 20200019853 A KR20200019853 A KR 20200019853A
Authority
KR
South Korea
Prior art keywords
post
client
list
client application
processes
Prior art date
Application number
KR1020197033911A
Other languages
English (en)
Other versions
KR102282233B1 (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 KR20200019853A publication Critical patent/KR20200019853A/ko
Application granted granted Critical
Publication of KR102282233B1 publication Critical patent/KR102282233B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking

Abstract

비디오 인코딩의 포스트-프로세스 효과들을 연기시키기 위한 시스템들 및 방법들이 개시된다. 시스템들 및 방법들은 로드를 연기시키도록, 클라이언트 하드웨어의 성능을 계산하고, 클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하도록, 하나 이상의 연기 후보들의 알려진 로드를 합산할 수 있다. 또한 시스템들 및 방법들은 제1 비디오 프레임의 포스트-프로세싱 페이즈 동안 연기된 포스트-프로세스 후보들의 리스트를 적용할 수 있는 원격 서버로 포스트-프로세스들의 업데이트된 연기 리스트를 전송할 수 있다.

Description

비디오 인코딩의 연기된 포스트-프로세스들을 위한 시스템들 및 방법들
본 출원은 2017년 4월 21일 출원된 미국 임시출원 제62/488,526호 및 2018년 1월 17일에 출원된 미국 임시출원 제62/618,498호의 이익을 주장한다.
서버 측 게임이 클라이언트 측 플레이어(player)에 의해 제어되는 원격 게이밍(gaming) 어플리케이션들은 기존의 또는 맞춤화된(customized) 인코더들을 사용하여, 실시간으로 3-차원(3D) 그래픽스 엔진(graphics engine)으로부터의 비디오 출력을 인코딩하도록 시도하였다. 그러나, 비디오 게임들의 대화형 특성, 특히 비디오 출력과 플레이어 입력 사이의 플레이어 피드백 루프(player feedback loop)는 게임 비디오 스트리밍을 전통적인 비디오 스트리밍 보다 대기 시간(latency)에 훨씬 더 민감하게 만든다. 기존의 비디오 코딩 방법들은 인코딩 시간의 감소를 위해, 계산 능력(computational power)을 교환할 수 있으며, 그 밖의 다른 것은 없다. 인코딩 프로세스를 비디오 렌더링 프로세스에 통합하기 위한 새로운 방법들은 인코딩 시간의 현저한 감소를 제공할 수 있으면서, 계산 능력을 낮추고, 인코딩된 비디오의 품질을 개선하며, 기존의 하드웨어 디바이스들의 상호 운용성을 유지하기 위해 오리지널 비트스트림 데이터 형식(original bitstream data format)을 유지할 수 있다.
일반적인 비디오 렌더링 파이프라인(pipeline)들은 비디오 인코딩 파이프라인들로부터 분리되고 독립적이며, 두 도메인(domain)들에서 프로세스와 전문 지식(expertise) 사이의 교차가 거의 없다. 결과적으로, 비디오 렌더링 파이프라인에 적용된 시각 효과(visual effect)들 및 포스트-프로세스(post-process)들 중 일부는 비디오 인코딩 프로세스에 역효과를 낳고, 비디오 아티팩트(artifact), 인코딩된 비디오 사이즈의 증가, 인코딩 시간의 연장으로 이어진다. 그러나, 이러한 시각 효과들은 결과적인 디코딩된 비디오에서 여전히 바람직하다.
비디오 렌더링 및 비디오 인코딩 파이프라인들을 통합함으로써, 포스트-프로세스 효과들이 인코딩 프로세스를 개선하기 위해 연기될 수 있다. 예를 들어, 시뮬레이션된 필름형 그레인(simulated filmic grain)은, 일반적인 인코더들이 비디오 품질 또는 압축 비율에 대한 상당한 비용 없이 처리하기 어려운 무작위로 발생하는 애니메이션 그레인(animated grain)을 내놓는다. 몇몇의 비디오 인코딩 방법들은 인코딩 전에 이러한 추가적인 시각 노이즈를 제거하도록 시도하지만, 이러한 방법들은 오프라인 전용이며 계산 비용이 많이 든다. 렌더링 파이프라인에서 이러한 특정 포스트-프로세스를 비활성화함으로써, 비디오는 자동으로 인코딩하기가 더 쉬워진다. 그런 다음, 비디오가 디코딩된 후에, 포스트-프로세스가 적용될 수 있다. 필름형 그레인의 경우에, 디코딩된 비디오에 그레인을 합성하는 것은 계산 상 요구되지 않고, 디코더에서 실시간으로 수행될 수 있으며, 다른 인코딩 아티팩트들을 위장함으로써 주관적인 비디오 품질을 개선할 수 있다.
국제 특허 출원 WO2016172314 A1("314 출원")은 예술적 의도 기반 콘텐트 코딩에 관한 시스템들 및 방법들을 개시하고 있다. 코딩 사용자 인터페이스는, 사용자가 예술적 세트를 지정하고, 충실도(fidelity) 향상, QP 조절 값 및/또는 포스트-프로세싱과 같은 예술적 세트와 연관된 픽셀들 및/또는 블록들의 처리를 구성하도록, 허용한다. 비디오 출력에 추가될 수 있는 예술적 의도의 예들은, 인코더가 인코딩 전에 오리지널 신호로부터 필름 그레인을 제거하고, 필름 그레인 SEI를 사용하여 필름 그레인을 재생성하고 디스플레이되기 전에 비디오 신호에 그것을 다시 추가하는 방법을 디코더에 전달할 때를 포함한다. 적어도 '314 출원은 인코딩 전에 렌더링 파이프라인에서 특정 포스트-프로세스들을 비활성화한 다음, 비디오가 디코딩된 후에 이러한 포스트-프로세스들을 적용하는 것을 개시하고 있지 않기 때문에, 본 발명은 '314 출원으로부터 구별될 수 있다. 결과적으로, 본 발명은, 비디오 품질 또는 압축 비율에 대한 상당한 비용 없이 비디오 데이터의 개선된 인코딩과 디코딩을 제공하기 때문에, 이러한 컴퓨터 기술에 대한 개선이다. 또한, 본 발명은, 결과적으로 대역폭, 비트레이트, 인코딩 시간을 개선하고, 개선된 비디오 품질을 갖는 실시간 비디오 스트리밍 어플리케이션들에 사용될 수 있기 때문에, 개선이다.
미국 특허 제9,609,330호("'330 특허")는 모드 및 레퍼런스 유형 데이터의 콘텐트 적응 엔트로피 코딩을 개시하고 있으며, 이는 인코더의 사전-분석기(pre-analyzer) 서브시스템이 콘텐트를 분석하여 비디오 코딩 효율 및 속도 성능을 개선하는 데 유용한 다양한 유형의 파라미터들을 계산하는 것을 의미한다. 이러한 파라미터들은 수평 및 수직 그래디언트(gradient) 정보(Rs, Cs), 분산(variance), 픽처(picture) 당 공간 복잡도(spatial complexity), 픽처 당 시간 복잡도(temporal complexity), 씬(scene) 변화 검출, 동작 범위 추정, 이득(gain) 검출, 예상 거리 추정, 객체들의 수 추정, 영역 경계 검출, 공간 복잡도 맵 계산, 포커스(focus) 추정 및 필름 그레인 추정을 포함한다. 다시 말해, 사전-분석기 서브시스템에 의해 생성된 파라미터들은 인코더에 의해 소비되거나, 양자화되어 디코더로 전달될 수 있다. 적어도 '330에 개시된 기술은 인코딩 전에 렌더링 파이프라인에서 특정 포스트-프로세스들을 비활성화한 다음, 비디오가 디코딩된 후에 이러한 포스트-프로세스들을 적용하지 않기 때문에, 본 발명은 그 기술로부터 구별될 수 있다. 따라서, 본 발명은, 비디오 품질 또는 압축 비율에 대한 상당한 비용 없이 비디오 데이터의 개선된 인코딩 및 디코딩을 제공하기 때문에, 그리고 개선된 비디오 품질을 갖는 실시간 비디오 스트리밍 어플리케이션들에서 사용될 수 있기 때문에, '330 특허의 컴퓨터 기술에 대한 개선이다.
미국 특허 제9,762,911호("'911 특허")는 모션 벡터(motion vector)들의 콘텐트 적응 예측 및 엔트로피 코딩과 관련된 기술들을 위한 시스템들 및 방법들을 개시하고 있다. 개시된 기술은 제1 비디오 데이터와 제2 비디오 데이터가 엔트로피 인코더 모듈에서의 엔트로피 코딩을 위해 수신되도록 허용한다. 제1 비디오 데이터와 제2 비디오 데이터는 상이한 데이터 유형들(예컨대, 본 문서에서 더 기술되는 바와 같이, 헤더(header) 데이터, 모핑(morphing) 파라미터들, 합성(synthesizing) 파라미터들, 또는 글로벌 맵 데이터 또는 모션 벡터들 또는 인트라-예측 파티션 데이터 등)일 수 있다. 제1 엔트로피 인코딩 기술은, 예컨대 제1 비디오 데이터의 압축된 비트들의 수, 제1 비디오 데이터와 연관된 미리 결정된 인디케이터(indicator)나 플래그, 미리 결정된 임계값, 또는 경험적으로(heuristically) 결정된 임계값 등과 같은 제1 비디오 데이터와 연관된 파라미터를 기반으로 제1 비디오 데이터를 위해 결정될 수 있다. 몇몇의 예들에서, 제1 엔트로피 인코딩 기술은 적응형(adaptive) 심볼-런(symbol-run) 가변 길이 코딩 기술 또는 적응형 프록시(proxy) 가변 길이 코딩 기술 중 하나로부터 선택될 수 있다. 제1 비디오 데이터는 제1 엔트로피 인코딩 기술을 사용하여 엔트로피 인코딩될 수 있고, 제2 비디오 데이터는 제1 엔트로피 인코딩 기술을 사용하여 엔트로피 인코딩될 수 있다. 또 다시 말해, 적어도 '911 특허에 기재된 기술은 인코딩 전에 렌더링 파이프라인에서 포스트-프로세스들을 선택적으로 비활성화한 다음, 비디오가 디코딩된 후에 이러한 포스트-프로세스들을 적용하는 것을 포함하고 있지 않기 때문에, 본 발명은 구별될 수 있다. 또 다시 말해, 본 발명은, 비디오 품질이나 압축 비율에 대한 상당한 비용 없이 비디오 데이터의 개선된 인코딩 및 디코딩을 제공하기 때문에, '911 특허의 컴퓨터 기술에 대한 개선이다. 또한, 본 발명은, 결과적으로 비트레이트, 인코딩 시간을 개선하고, 개선된 비디오 품질을 갖는 실시간 비디오 스트리밍 어플리케이션들에 사용될 수 있기 때문에, 개선이다.
상술한 바로부터 명백하게, 게임 환경들에서의 비디오 인코딩과 관련된 현재의 컴퓨터 기술에 대한 개선이 해당 기술 분야에서 필요하다.
따라서, 본 문서에 개시된 예시적인 실시예들의 목적은, 해당 기술 분야에서의 과제들을 해결하고, 기술들을 통해 대기 시간과 인코딩 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있으며, 그 기술에서, 서버는 클라이언트 하드웨어(disadvantages) 성능(capability)을 측정하도록, 클라이언트 어플리케이션(client application)으로 명령어(instruction)를 전송하고, 클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하기 위해, 하나 이상의 미리 결정된 포스트-프로세스 연기 후보들의 알려진 로드(known load)를 합산하도록, 클라이언트 어플리케이션으로 명령어를 전송한다. 클라이언트 어플리케이션에서, 포스트-프로세스 연기 리스트가 컴파일되고, 역순으로 구축된다. 이 후, 서버는 포스트-프로세스 연기 리스트를 수신하고, 제1 비디오 프레임의 포스트-프로세싱 페이즈(phase) 동안, 연기된 포스트-프로세스들의 리스트를 스킵하고, 이미지를 렌더링하도록, 클라이언트 어플리케이션으로 명령어를 전송한다.
본 발명의 다른 목적은, 클라이언트 하드웨어의 성능을 재측정할 지의 여부를 판단하도록, 콜백(callback)을 수행하거나 하나 이상의 오퍼레이팅 시스템 이벤트(operating system event)들을 폴링하는 클라이언트 어플리케이션을 갖는 것에 의해, 대기 시간 및 인코딩 시간을 감소시키기 위한 시스템을 및 방법들을 제공하는 데 있다.
본 발명의 또 다른 목적은, 이용 가능한 명령어 세트들, 메모리, CPU 및/또는 GPU 특성들을 검출함으로써 클라이언트 하드웨어의 성능을 측정하는 것에 의해, 대기 시간 및 인코딩 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다.
본 발명의 또 다른 목적은, 프레임 레이트(frame rate) 및/또는 리소스 사용량(resource usage)을 측정함으로써 클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연길될 수 있는 지를 평가하는 것에 의해, 대기 시간 및 인코딩 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다.
첨부된 도면과 관련하여 고려될 때, 후술되는 상세한 설명을 참조하여 보다 잘 이해될 수 있으므로, 본 발명의 완전한 이해 및 그에 따른 많은 이점이 쉽게 얻어질 것이다.
도 1은 본 발명의 일 실시예에 따라, 원격 클라이언트에 보여주기 위한 비디오를 렌더링하는 예시적인 3D 그래픽스 엔진을 도시하는 블록도이다;
도 2는 본 발명의 일 실시예에 따라, 픽셀 당(per-pixel) 포스트-프로세싱을 연기시킴으로써 인코딩 시간 또는 주관적인 비디오 품질을 개선하기 위해 요구되는 예시적인 단계들을 도시하는 흐름도이다;
도 3은 본 발명의 일 실시예에 따라, 비디오 렌더링, 인코딩 및 디코딩 페이즈들 동안 연기된 픽셀 당 품질의 예시적인 최소 구현을 도시하는 도면이다; 그리고
도 4는 본 발명의 실시예에 따라, 연기된 포스트-프로세스들의 리스트를 동기화하기 위한 서버와 클라이언트 사이의 예시적인 통신을 도시하는 흐름도이다.
도면에 도시된 본 발명의 바람직한 실시예들을 기술함에 있어서, 명확화를 위하여, 특정 용어에 의존될 것이다. 그러나, 본 발명은 이렇게 선택된 특정 용어로 한정되도록 의도되지 않으며, 각각의 특정 용어는 유사한 목적을 달성하기 위해 유사한 방식으로 작동하는 모든 기술적 등가물들을 포함하는 것으로 이해되어야 한다. 본 발명의 몇몇 바람직한 실시예들은 예시의 목적으로 기술되지만, 본 발명은 도면에 구체적으로 도시되지 않은 다른 형태들로 구현될 수 있는 것으로 이해되어야 한다.
포스트-프로세싱 파이프라인들은 앤티-에일리어싱(anti-aliasing), 모션 블러(motion blur), 심도(depth of field), 컬러 그레이딩(color grading), 블룸(bloom), 필름 그레인, 색수차(chromatic aberration), 비네팅(vignetting) 및 톤 매핑(tone mapping)을 포함하는 많은 복잡한 프로세스들을 수행할 수 있다. 이러한 효과들 중 일부는 인코딩 프로세스들에 적극적으로 유해하고, 처리되지 않은 프레임들과 비교할 때 인코딩 시간을 늘리고 압축 비율을 줄인다. 프레임이 디코딩된 후까지 특정 포스트-프로세스들을 적용하기를 기다리는 것은, 주관적인 비디오 품질을 향상시키고, 추가적인 유익한 트레이드오프(tradeoff)들을 제공할 수 있다.
클라이언트 어플리케이션의 디벨롭먼트(development) 동안, 인코딩 시간, 대역폭 및 주관적인 품질 사이의 균형은, 포스트-프로세스들이 연기에 적합한 후보들인 지 판단하도록, 렌더링 파이프라인에서 각 포스트-프로세스를 위해 평가되어야 한다. 연기 후보들의 리스트는, 클라이언트에서 연기될 수 있는 포스트-프로세스들을 결정하도록, 런타임(runtime) 동안 클라이언트에 의해 사용될 것이다.
각 포스트-프로세스는 인코딩 프로세스에 미치는 그의 효과들을 측정하도록 테스트되어야 한다. 먼저, 일련의 레퍼런스 프레임(reference frame)들은 변경되지 않은(unaltered) 렌더링 및 인코딩 파이프라인들을 통해 공급되어야 하고, 인코딩 시간과 인코딩된 프레임 사이즈가 측정되어야 한다. 포스트-프로세스들은 렌더링 파이프라인에서 한 번에 하나씩 해제되어야 하고, 인코딩 시간과 인코딩된 프레임 사이즈는 제어 결과와 비교되어야 한다. 이러한 측정들은 포스트-프로세스들이 연기시키기에 적합한 후보인 지를 알리는 데 도움이 될 것이다. 증가된 인코딩된 프레임 사이즈에 의해 측정되는 이미지 엔트로피를 증가시키는 거의 모든 포스트-프로세스 효과는 연기에 적합한 후보가 될 것이다. 예를 들어, 시뮬레이션된 필름형 그레인(simulated filmic grain) 포스트-프로세스는 이미지에 랜덤 노이즈(random noise)를 추가하여, 압축 비율들을 낮춘다. 특정 상황들에서, 색수차 및 블룸은 이미지 엔트로피를 증가시키고, 그 결과로 압축 비율들을 낮출 수 있다. 엔트로피 또는 이미지 데이터를 감소시키는 거의 모든 포스트-프로세스 효과는 연기되지 않아야 하며, 이는 엔트로피 감소가 인코딩 오버헤드를 감소시킬 것이기 때문이다.
이미지 엔트로피를 변경하지 않는 포스트-프로세스들은, 주관적인 비디오 품질 개선 또는 서버 로드 감소와 같은 이차적인 목표들을 달성하기 위해, 연기 후보들로서 선택될 수 있다. 예를 들어, 컬러 그레이딩은 인코딩 시간 또는 대역폭 사용에 영향을 미치지 않을 수 있지만, 클라이언트에 연기될 때 서버 측 계산 로드에서 주목할 만한 감소를 초래할 수 있다. 이와 유사하게, 앤티-에일리어싱은 연기될 때 주관적인 비디오 품질을 개선하고 서버 측 로드를 크게 감소시킬 수 있다. 추가적인 테스트는, 그것이 엔트로피-중립적인(entropy-neutral) 포스트-프로세스들을 연기시키는 데 유리한 지의 여부를 판단하도록, 수행되어야 한다. 예를 들어, 레퍼런스 프레임들을 사용하는 유사한 테스트 절차는, 엔트로피-중립적인 포스트-프로세스를 연기시키기 전후의 서버 로드를 비교하는 데 사용될 수 있다.
클라이언트 어플리케이션은 각 연기 후보를 위해 포스트-프로세싱 계산들을 실행할 수 있어야 한다. 몇몇의 코드(code) 리팩토링(refactoring)이 이러한 기능들을 클라이언트 어플리케이션으로 이동시키는 데 필요할 수 있다. 필름형 그레인, 색수차 또는 비네팅과 같은 렌더링 파이프라인의 말단에서의 포스트-프로세스들은, 일반적으로 앤티-에일리어싱 또는 심도와 같은 렌더랑 파이프라인에서 초기에 발생하는 것 보다, 클라이언트 어플리케이션으로 이동하기가 더 쉽다. 포스트-프로세스를 연기시키는 것이, 그것이 색수차, 블룸 또는 비네팅과 같은 톤 매핑 전에 적용되는 이러한 포스트-프로세스들과 같은 선형 공간에 일반적으로 적용될 때, 그것이 비선형 공간에 적용되도록 야기되는 몇몇의 경우들이 있을 수 있다. 프로세스는 감마 공간에 직접 적용될 수 있고, 수학적으로 정확하지 않을 수 있지만, 그 차이는 뷰어(viewer)에게 인식될 수 없고, 전체의 주관적인 품질이 개선될 수 있다. 그렇지 않으면, 몇몇 클라이언트 측 계산 주기(compute cycle)들의 비용과 이미지 품질의 손실로 인해, 클라이언트 어플리케이션이 이미지를 선형 공간으로 다시 변환하고, 포스트-프로세스를 적용한 다음, 감마 공간으로 다시 변환할 수 있다. 이미지는 인코딩 동안 양자화되어 압축될 것이기 때문에, 선형 공간으로 다시 변환하는 것은 일부 품질을 저하시킬 것이다. 이러한 주관적인 품질 결정은 클라이언트 어플리케이션의 디벨롭먼트(development) 동안 이루어져야 한다.
클라이언트 어플리케이션이 수행할 수 있는 모든 포스트-프로세스들은 연기 후보 리스트의 기초를 형성한다. 연기 후보들의 리스트는 어떤 종속성들을 유지하기 위해, 렌더링 파이프라인에 나타나는 순서와 동일해야 한다. 또한, 리스트에서 각 연기 후보는 메모리 최소값들 또는 GPU 요구 사항들과 같은 하드웨어 특징 요구 사항들과 쌍을 이루어야 한다.
도 1은 비디오 렌더링 동안 픽셀-품질(pixel-quality) 포스트-프로세스들이 연기된 예시적인 시스템을 도시하고 있다. 이러한 예시적인 시스템은, 다른 유형의 비디오 시스템들과 비교할 때, 픽셀 당(per-pixel) 품질 프로세스들을 연기시킴으로써 제공되는 주관적인 품질 개선들과 감소된 인코딩 시간들로부터 최대의 이점을 얻는, 실시간 원격 게임 스트리밍 어플리케이션을 나타낸다. 이러한 시스템에서, 서버(100)는 비디오 출력을 렌더링 하는 비디오 게임 소프트웨어(102)와 그래픽스 엔진(104)을 호스팅한다. 비디오는 코덱(codec)(106)에서 인코딩되고, 인코딩된 비디오 데이터(108)는 원격 클라이언트에 전송된다. 서버 아키텍처(100)는, 그래픽스 엔진(104)과 코덱(106) 둘 다의 기능을 모두 지원할 수 있는 하드웨어 또는 소프트웨어의 어떤 조합이다. 주어진 예시에서, 그래픽스 엔진(104)은, 예를 들어, 몇몇의 컴퓨터 판독 가능 메모리(112)에 로딩된 비디오 게임 소프트웨어(102)를 실행하는 GPU(110)로서 구현될 수 있는 한편, 코덱(106)(인코더라고도 함)은 비디오 인코딩 소프트웨어를 실행하는 CPU(114)로서 구현될 수 있다.
원격 클라이언트 컴퓨터 시스템(116)은 전송된 인코딩된 비디오 데이터(108)를 디코딩하도록 클라이언트 측 코덱(118)을 실행하고, 연기된 픽셀-품질 포스트-프로세스들을 적용하도록 클라이언트 어플리케이션(120)을 실행할 수 있다. 또한, 클라이언트 컴퓨터 시스템(116)은 디스플레이 하드웨어(display hardware)(124)를 구동하기 위한 디스플레이 컨트롤러(display controller)(122)를 포함한다. 클라이언트 측 입력 주변 장치(126)들로부터의 입력은 클라이언트 어플리케이션(120)에 의해, 서버(100) 상에서 실행되는 게임 소프트웨어(102)로 다시 전송되는 컨트롤 데이터(control data)(128)로 변환될 것이다. 연기된 픽셀-품질 포스트-프로세싱의 특정 구현을 기반으로, 정확한 포스트-프로세스들이 주어진 비디오 프레임을 위해 적용되도록 보장하기 위해, 몇몇의 추가적인 컨트롤 데이터(128)가 서버 측 소프트웨어(102)로부터 클라이언트 어플리케이션(120)으로 흐를 필요가 있을 수 있다.
도 2는 비디오를 렌더링, 인코딩 및 디코딩하는 시스템에서 포스트-프로세싱을 연기시키기 위해 요구되는 단계들을 도시하고 있다. 단계(200)에서, 렌더링 파이프라인이 서버(100)에서 평소와 같이(as usual) 시작된다. 포스트-프로세싱 페이즈 전에 렌더링 프로세스에 대한 변화들은 필요하지 않다.
단계(202)에서, 서버(100)의 그래픽스 엔진(104)에서의 비디오 렌더링 포스트-프로세싱 페이즈에서, 어떤 연기될 포스트-프로세스들이 스킵(skip)되어야 한다. 클라이언트 컴퓨터 시스템(116)이 모든 연기된 포스트-프로세스들을 적용하기 위해 요구되는 계산 능력을 가지면, 어떤 수의 포스트-프로세스들이 스킵될 수 있다. 도 4는 서버(100)가 포스트-프로세스들이 연기될 지를 판단하는 방법을 더 상세하게 기술한다. 어떤 연기된 포스트-프로세스를 스킵한 후에, 렌더링 파이프라인은, 프레임이 완전히 렌더링될 때까지 계속되어야 한다.
단계(204)에서, 결과 프레임은 코덱(106)에서 인코딩된다. 연기된 포스트-프로세스들의 선택을 기반으로, 인코딩 시간은 더 빠르고, 인코딩된 데이터는 더 적은 대역폭을 필요로 할 수 있다. 예를 들어, 필름형 그레인 포스트-프로세스가 연기되면, 코덱(106)은 도입되는 노이즈 없이 프레임을 인코딩하는 데 더 쉬운 시간을 가질 것이다.
단계(206)에서, 인코딩된 비디오 데이터(108)는 필요에 따라, 저장되거나, 원격 클라이언트 컴퓨터 시스템(116)에 전송된다. 실시간 비디오 게임 스트리밍 어플리케이션에서, 도 1로부터의 예시에서와 같이, 비디오 데이터(108)는 즉시 전송될 것이다. 다른 실시예들의 시스템에서, 인코딩된 비디오 데이터(108)는 주문형 스트리밍(demand streaming)을 위해 서버(100)에 저장되거나 물리적 미디어에 저장될 수 있다.
단계(208)에서, 인코딩된 비디오는 원격 클라이언트 컴퓨터 시스템(116)의 코덱(118)에서 디코딩된다. 디코딩 프로세스에 변경들이 이루어질 필요는 없다.
단계(210)에서, 소프트웨어 어플리케이션은 렌더링 파이프라인에 나타나는 것과 동일한 순서로 연기된 어떤 포스트-프로세스들을 적용할 것이다. 또한, 클라이언트 어플리케이션(120)으로서 도 1에 도시되는 이러한 소프트웨어는, 연기된 포스트-프로세스들이 프레임마다 변경되면, 서버(100)로부터 컨트롤 데이터(128)를 수신할 필요가 있을 수 있다. 또한, 클라이언트 어플리케이션(120)은, 비디오 게임 스트리밍 시스템들에서와 같이, 비디오가 대화형이면, 컨트롤 데이터(128)를 전송할 필요가 있을 수 있다. 클라이언트 어플리케이션(120)은 연기된 포스트-프로세스들의 계산 복잡도 요구 사항들에 따라 스파스(sparse)할 수 있으며, 이는 클라이언트에서 넓은 범위의 계산 능력을 허용할 수 있다.
도 3은 도 1의 예시적인 시스템에서 연기된 포스트-프로세싱의 구현을 도시하고 있다. 서버(100)에 위치되는, "렌더링 파이프라인" 단계(300)에 도시되는, 일반적인 3D 렌터링 파이프라인은, "어플리케이션" 단계(302), "지오메트리(geometry)" 단계(304) 및 "래스터화(rasterization)" 단계(306)로 도시되는 래스터화 페이즈들로 이루어진다. "래스터화" 단계(306)에서 래스터화 페이즈의 출력은 완전한 비디오 프레임이며, 이는 "포스트-프로세싱" 단계(308)에서 포스트-프로세싱에 의해 대체로 향상된다. 몇몇의 포스트-프로세스들은 "인코딩" 단계(310)에서 인코딩 프로세스 동안 인코딩 시간 또는 대역폭에 악영향을 미치고, 이러한 포스트-프로세스들은, 클라이언트가 나중에 그들을 적용할 수 있다면, "포스트-프로세싱" 단계(308)의 포스트-프로세싱 페이즈에서 스킵된다. 클라이언트(116)에 대해 연기되지 않은 나머지 포스트-프로세스들은 "포스트-프로세싱" 단계(308)에서 포스트-프로세싱 동안 평소와 같이(as usual) 적용된다. 출력되는 비디오 프레임은 "인코딩" 단계(310)에서 인코딩되고, "전송" 단계(312)에서 전송된다.
클라이언트(116)는 인코딩된 비디오 프레임을 수신하고, 그것은 "디코딩" 단계(314)에서 디코딩된다. 이 시점에서, 모든 연기된 포스트-프로세스들이 "연기된 포스트-프로세싱" 단계(316)에서 디코딩된 프레임에 적용된다. 예를 들면, 필름형 그레인의 경우에, 애니메이션 효과(animated effect)는 미리 캐싱되고, 비교적 낮은 계산 비용으로 디코딩된 프레임에 합성될 수 있다. 컬러 그레이딩, 디더링(dithering) 및 비디오 선명화를 위한 실시간 솔루션(solution)들이 이미 존재하며, 클라이언트의 계산 능력을 기반으로 적용될 수 있다. 결과 비디오 프레임은 "디스플레이" 단계(318)에서 디스플레이된다.
도 4는 클라이언트 어플리케이션(120)이 연기될 포스트-프로세스들의 리스트를 구축하고 서버(100)로 리스트를 전달하는 프로세스를 도시하고 있다.
단계(400)에서, 클라이언트 어플리케이션(120)은 클라이언트(116)에 대해 연기될 수 있는 포스트-프로세스들을 결정하도록 클라이언트 하드웨어의 성능을 측정할 것이다. 클라이언트 성능은 이용 가능한 명령어 세트들, 메모리, CPU 또는 GPU와 같은 하드웨어 정보에 대한 특징 검출을 통해 측정될 수 있다.
단계(402)에서, 클라이언트 어플리케이션(120)은 연기 후보들의 리스트를 판독하고, 클라이언트에 의해 하드웨어 요구 사항들이 충족되지 않은 어떤 연기 후보들을 버린다. 연기 후보 포스트-프로세스들은 실시간 클라이언트 성능을 측정하도록 클라이언트에서 벤치마킹((benchmarking))되어야 한다. 연기 후보들은, 클라이언트가 더 이상 프레임 레이트(frame rate), 리소스 사용량(resource usage) 또는 다른 실시간 측정에 의해 측정된 바람직한 성능을 유지할 수 없을 때까지, 벤치마킹 프로세스로 한 번에 하나씩 추가된다. 벤치마킹은 클라이언트 어플리케이션 설치 동안, 클라이언트 어플리케이션(120)의 초기 로드 동안, 또는 어플리케이션의 각 로드 마다, 수행될 수 있다.
클라이언트(116)는 가능한 많은 연기 후보들에 대해 포스트-프로세싱을 수행해야 한다. 연기 리스트는 전체 작업들의 순서를 오리지널 렌더링 파이프라인 순서에 가깝게 유지하기 위해 역순으로 구축된다. 예를 들어, 모바일 디바이스(mobile device)는 마지막 포스트-프로세스들만 실행할 수 있고, 랩톱(laptop)은 렌더링 파이프라인의 말단에서 세 개의 포스트-프로세스들을 실행할 수 있는 한편, 새로운 데스크톱(desktop) 컴퓨터는 연기 후보 리스트의 모든 포스트-프로세스들을 실행할 수 있다.
단계(404)에서, 클라이언트(116)는 서버(100)로 연기시킬 포스트-프로세스들의 리스트를 전송한다.
단계(202)에서, 서버(100)는 제1 비디오 프레임의 포스트-프로세싱 페이즈 동안 연기된 포스트-프로세스들의 리스트를 사용한다. 연기 리스트의 모든 포스트-프로세스들은 스킵된다.
단계(206)에서, 인코딩된 비디오 데이터 스트림(108)은 클라이언트(116)로의 전송을 시작한다. 클라이언트(116)는 어떤 프레임들이 생성되기 전에 연기 리스트를 전송했으므로, 추가적인 메타데이터가 서버(100)로부터 클라이언트(116)로 전송될 필요는 없다. 클라이언트(116)는 포스트-프로세스들이 연기된 것을 자동으로 알 것이다.
단계(210)에서, 클라이언트(116)는 모든 포스트-프로세스들을 연기 리스트에 적용한다. 클라이언트(116)는 추후의 프레임들에 연기된 포스트-프로세스들을 계속해서 적용할 것이다.
런타임 동안 클라이언트 성능들이 변하여, 연기된 포스트-프로세스들의 리스트 변경을 요구하는 시나리오들이 있을 수 있다. 예를 들어, 클라이언트 어플리케이션이 방금 배터리-절약 모드로 들어간 모바일 디바이스에서 실행되고 있으면, 클라이언트는 연기된 포스트-프로세스들의 리스트를 축소하고자 할 수 있다. 이러한 예에서, 클라이언트 어플리케이션은 배터리 상태의 변화들에 수신하기 위해, 콜백(callback)을 등록하거나 오퍼레이팅 시스템(operating system)("OS") 이벤트들을 폴링해야 할 필요가 있을 것이다. 단계(412)에서, 클라이언트 어플리케이션(120)은 클라이언트 성능을 재측정함으로써 최근 환경 변화에 응답한다. 환경 변화는 원격 클라이언트 컴퓨터 시스템(116)의 하드웨어 성능에 영향을 미치는 어떤 변화일 수 있다. 상기한 예를 들면, 배터리-절약 모드는 직접 페치(fetch)될 수 있는 배율(multiplier)로 클럭 레이트(clock rate)를 줄인다. 클럭 레이트 배율의 변화는 클라이언트 성능의 변화에 대한 대략적인 추정을 제공할 수 있다. 그렇지 않으면, 배터리-절약 모드에서의 추가적인 벤치마킹은 단계(402)에서 기술된 벤치마킹 페이즈에 추가될 수 있다.
클라이언트 성능이 변하면, 클라이언트 어플리케이션(120)은 단계(414)에서 연기될 수 있는 포스트-프로세스들을 재평가할 것이다. 배터리-절약 모드 예에서, 연기 리스트는 클럭 레이트 배율의 변화에 비례하여 줄어들 수 있다. 예를 들어, 배터리-절약 모드는 50 % 만큼 클럭 레이트를 줄이면, 연기 리스트는 적어도 절반 만큼 줄어들 것이다. 클라이언트(116)가 네 개의 포스트-프로세스들을 연기시켰다면, 리스트를 두 개의 포스트-프로세스들로 줄일 것이다. 그렇지 않으면, 배터리-절약 모드 벤치마킹이 이미 수행되었다면, 연기 리스트는 이미 알려져 있을 것이다.
연기 리스트가 변하면, 클라이언트(116)는 단계(416)에서 서버(100)로 변경된 연기 리스트를 전송할 것이다. 클라이언트(116)는 서버로(100)로부터 메시지를 수신할 때까지, 오리지널 연기 리스트로부터의 포스트-프로세스들을 계속해서 적용할 것이고, 메시지는 다른 연기된 포스트-프로세스들의 리스트로 구성되는 것이 바람직하다.
단계(418)에서, 서버(100)는 다음의 이용 가능한 프레임에 변경된 연기 리스트를 적용한다. 클라이언트(116)와 동기화하기 위해, 일부 메타데이터가 이 프레임에 적용된다.
단계(420)에서, 인코딩된 비디오 데이터(108)의 프레임은 그것의 대응하는 메타데이터와 함께 전송된다.
클라이언트는 메타데이터 플래그(flag)를 수신할 때까지 대기한다. 단계(422)에서, 클라이언트(116)는 변경된 연기 리스트에 따라 프레임들을 처리하기 시작한다. 클라이언트(116)는 변경된 연기 리스트에 따라 연기된 포스트-프로세스들을 계속해서 적용할 것이다. 런타임 환경이 다시 변하면, 단계(412)로부터 시작하여, 연기 리스트가 다시 커지거나 줄어들 수 있다. 연기 리스트가 모바일 디바이스의 배터리-절약 모드와 같은 일시적인 런타임 환경 변화로 인해 줄어들면, 클라이언트 어플리케이션(120)은 가능한 최대의 포스트-프로세스들이 어떤 주어진 시간에서 연기되도록, 가장 빠른 기회에 연기 리스트를 증가시켜야 한다.
예시 1: 벤치마킹 테스트 결과
필름형 그레인은 인코더의 압축 비율에 큰 영향을 초래하는 무작위로 발생하는 시각적 노이즈를 내놓는다. 클라이언트 측에 필름형 그레인과 같은 포스트-프로세스들을 적용하는 것은 인코딩된 프레임 사이즈들을 더 작아지게 하는 결과를 가져올 것이다.
실험적인 비트레이트 값들은 그래픽스 엔진이 초당 60 프레임에서 1280x720의 해상도로 출력을 생성하는 동안 취해졌으며, 평균 비트레이트를 찾기 위해 60 프레임에 걸쳐 평균되었다. 측정된 값들은 서버 측에서 필름형 그레인이 적용되는 비디오 스트림의 비트레이트를 필름형 그레인이 클라이언트에 대해 연기된 비디오 스트림의 비트레이트와 비교한다. 이러한 측정들은 세 가지 크기의 필름형 그레인과 두 가지 인코더 품질 설정 값들에 대해 반복된다. 필름형 그레인 1은 가장 작은 그레인 사이즈를 나타내는 한편, 필름형 그레인 3은 가장 큰 그레인 사이즈를 나타낸다. 실험 결과들이 하기 표 1과 표 2에 나타나 있다. 표 1은 16의 인코더 품질을 사용한 결과들을 나타내는 한편, 표 2는 20의 인코더 품질을 사용한 결과들을 나타내고 있다.
인코더 품질 = 16 서버 측 필름형 그레인 연기된 필름형 그레인
필름형 그레인 1 550 KByte/s 270 KByte/s
필름형 그레인 2 1700 KByte/s 270 KByte/s
필름형 그레인 3 1900 KByte/s 270 KByte/s
표 1: 16의 인코더 품질 설정에서 비트레이트 결과들
인코더 품질 = 20 서버 측 필름형 그레인 연기된 필름형 그레인
필름형 그레인 1 150 KByte/s 140 KByte/s
필름형 그레인 2 270 KByte/s 140 KByte/s
필름형 그레인 3 520 KByte/s 140 KByte/s
표 2: 20의 인코더 품질 설정에서 비트레이트 결과들
실험 결과들을 기반으로, 필름형 그레인과 같은 포스트-프로세스들은 더 큰 인코딩된 프레임 사이즈들을 초래하고, 이는 바람직하지 않음이 분명하다. 이러한 부정적인 영향들은, 인코더 품질 값들이 높을수록 더 분명해지고, 도입된 노이즈의 양이 증가함에 따라 더욱 분명해진다. 그러나, 클라이언트에 대해 필름형 그레인을 연기시킴으로써, 비트레이트에 있어서의 극적인 감소들이 표 1 및 표 2에 나타나는 바와 같이 달성될 수 있으며, 여기서, 비트레이트는 각각 270 Kbyte/s 및 140 Kbyte/s로 감소된다. 도입된 노이즈의 양과 관계 없이, 이러한 실험에서 필름형 그레인의 사이즈로 측정됨에 따라, 비트레이트는 주어진 인코더 품질에 대해 안정적으로 유지된다.
이와 유사하게, 하기 표 3에 나타나는 바와 같이, 그래픽스 엔진이 여러 인코더 품질 설정들을 위해 60 프레임에서 1280x720의 해상도로 출력을 생성하는 동안, 실험적인 인코딩 시간들이 측정되었다. 측정된 값들은 서브 측에서 필름형 그레인이 적용되는 비디오 스트림에 대한 인코딩 시간들을 필름형 그레인이 클라이언트에 대해 연기된 비디오 스트림의 인코딩 시간과 비교한다. 필름형 그레인의 사이즈는 모든 측정들에서 고정되어 유지된다. 표 3으로부터 명백한 바와 같이, 본 문서에서 기술되는 기술들을 적용하는 인코딩 시간들의 감소들은 더 높은 인코더 품질 설정들에서 보다 분명하다.
인코더 품질 서버 측 필름형 그레인 연기된 필름형 그레인
15 16 ms 10 ms
17 15 ms 10 ms
20 11 ms 9 ms
25 9 ms 7 ms
40 9 ms 7 ms
표 3: 인코더 품질 설정들에 따른 대기 시간 결과들
전술된 설명 및 도면은 본 발명의 원리를 단지 예시하는 것으로 간주되어야 한다. 본 발명은 바람직한 실시예에 의해 제한되도록 의도되지 않고, 해당 기술 분야에서 통상의 지식을 가진 자에게 명백한 다양한 방식들로 구현될 수 있다. 본 발명의 다수의 응용들이 해당 기술 분야에서 통상의 지식을 가진 자에게 용이하게 일어날 것이다. 따라서, 개시된 특정 예시들 또는 도시되고 설명된 정확한 구성과 동작으로 본 발명을 제한하는 것은 바람직하지 않다. 오히려, 모든 적합한 수정들 및 균등물들이 본 발명의 범주 내에 속하는 것으로 의지될 수 있다.

Claims (20)

  1. 단계들을 포함하는 포스트-프로세스(post-process)들을 연기시키기(deferring) 위한 컴퓨터로 구현된 방법에 있어서,
    단계들은,
    클라이언트 하드웨어(client hardware) 성능(capability)을 측정하도록, 클라이언트 어플리케이션(client application)으로 명령어(instruction)를 전송하는 단계; 및
    클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하기 위해, 하나 이상의 미리 결정된 포스트-프로세스 연기 후보들의 알려진 로드(known load)를 합산하도록, 클라이언트 어플리케이션으로 명령어를 전송하는 단계를 포함하고,
    포스트-프로세스 연기 리스트가 컴파일되고,
    상기 포스트-프로세스 연기 리스트는 역순으로 구축되고,
    서버가 상기 포스트-프로세스 연기 리스트를 수신하고, 제1 비디오 프레임의 포스트-프로세싱 페이즈(phase) 동안, 연기된 포스트-프로세스의 리스트를 스킵하고, 이미지를 렌더링하도록, 클라이언트 어플리케이션으로 명령어를 전송하는 방법.
  2. 제1 항에 있어서,
    상기 포스트-프로세스 연기 리스트는 벤치마킹(benchmarking) 프로세스에 추가되는 방법.
  3. 제1 항에 있어서, 상기 클라이언트 어플리케이션은,
    하나 이상의 환경 변화들에 응답하여 상기 클라이언트 하드웨어의 상기 성능을 재측정하는 방법.
  4. 제3 항에 있어서, 상기 클라이언트 어플리케이션은,
    상기 클라이언트 하드웨어의 상기 성능을 재측정할 지의 여부를 판단하도록, 콜백(callback)을 수행하거나, 하나 이상의 오퍼레이팅 시스템 이벤트(operating system event)들을 폴링하는 방법.
  5. 제1 항에 있어서, 상기 클라이언트 어플리케이션은,
    프레임 레이트(frame rate) 및/또는 리소스 사용량(resource usage)을 측정함으로써 상기 클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하는 방법.
  6. 제1 항에 있어서, 상기 서버는,
    다음의 이용 가능한 비디오 프레임에 업데이트된 연기 리스트를 적용하는 방법.
  7. 제1 항에 있어서,
    상기 서버가 포스트-프로세스들과 연관된 메타데이터 없이 상기 클라이언트 어플리케이션으로 인코딩된 비디오 데이터를 전송하는 단계를 더 포함하는 방법.
  8. 제1 항에 있어서, 상기 클라이언트 하드웨어의 상기 성능은,
    이용 가능한 명령어 세트들, 메모리, CPU 및/또는 GPU 특성들을 검출함으로써, 측정되는 방법.
  9. 제1 항에 있어서, 상기 포스트-프로세스 연기 후보들의 리스트는,
    상기 클라이언트 하드웨어의 배터리 상태에 대한 변화를 기반으로 재계산되는 방법.
  10. 제1 항에 있어서, 상기 서버는,
    메타데이터 플래그(metadata flag)와 함께, 상기 클라이언트 어플리케이션으로 상기 제1 또는 다음의 이용 가능한 비디오 프레임을 리턴하는 방법.
  11. 포스트-프로세스들을 연기시키기 위한 시스템에 있어서, 네트워크를 통해, 서버는,
    클라이언트 하드웨어 성능을 측정하도록, 클라이언트 어플리케이션으로 명령어를 전송하고;
    클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하기 위해, 하나 이상의 미리 결정된 포스트-프로세스 연기 후보들의 알려진 로드를 합산하도록, 클라이언트 어플리케이션으로 명령어를 전송하고,
    포스트-프로세스 연기 리스트가 컴파일되고,
    상기 포스트-프로세스 연기 리스트는 역순으로 구축되고,
    서버가 상기 포스트-프로세스 연기 리스트를 수신하고, 제1 비디오 프레임의 포스트-프로세싱 페이즈 동안, 연기된 포스트-프로세스의 리스트를 스킵하고, 이미지를 렌더링하도록, 클라이언트 어플리케이션으로 명령어를 전송하는 시스템.
  12. 제11 항에 있어서,
    상기 포스트-프로세스 연기 리스트는 벤치마킹 프로세스에 추가되는 시스템.
  13. 제11 항에 있어서, 상기 클라이언트 어플리케이션은,
    하나 이상의 환경 변화들에 응답하여 상기 클라이언트 하드웨어의 상기 성능을 재측정하는 시스템.
  14. 제13 항에 있어서, 상기 클라이언트 어플리케이션은,
    상기 클라이언트 하드웨어의 상기 성능을 재측정할 지의 여부를 판단하도록, 콜백을 수행하거나, 하나 이상의 오퍼레이팅 시스템 이벤트들을 폴링하는 시스템.
  15. 제11 항에 있어서, 상기 클라이언트 어플리케이션은,
    프레임 레이트 및/또는 리소스 사용량을 측정함으로써, 상기 클라이언트 하드웨어에 대해 얼마나 많은 포스트-프로세스 연기 후보들이 연기될 수 있는 지를 평가하는 시스템.
  16. 제11 항에 있어서, 상기 서버는,
    다음의 이용 가능한 비디오 프레임에 업데이트된 연기 리스트를 적용하는 시스템.
  17. 제11 항에 있어서, 상기 서버는,
    포스트-프로세스들과 연관된 메타데이터 없이 상기 클라이언트 어플리케이션으로 인코딩된 비디오 데이터를 전송하는 시스템.
  18. 제11 항에 있어서, 상기 클라이언트 하드웨어의 상기 성능은,
    이용 가능한 명령어 세트들, 메모리, CPU 및/또는 GPU 특성들을 검출함으로써, 측정되는 시스템.
  19. 제11 항에 있어서, 상기 포스트-프로세스 연기 후보들의 리스트는,
    상기 클라이언트 하드웨어의 배터리 상태에 대한 변화를 기반으로 재계산되는 시스템.
  20. 제11 항에 있어서, 상기 서버는,
    메타데이터 플래그와 함께, 상기 클라이언트 어플리케이션으로 상기 제1 또는 다음의 이용 가능한 비디오 프레임을 리턴하는 시스템.
KR1020197033911A 2017-04-21 2018-04-20 비디오 인코딩의 연기된 포스트-프로세스들을 위한 시스템들 및 방법들 KR102282233B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762488526P 2017-04-21 2017-04-21
US62/488,526 2017-04-21
US201862618498P 2018-01-17 2018-01-17
US62/618,498 2018-01-17
PCT/US2018/028582 WO2018195431A1 (en) 2017-04-21 2018-04-20 Systems and methods for deferred post-processes in video encoding

Publications (2)

Publication Number Publication Date
KR20200019853A true KR20200019853A (ko) 2020-02-25
KR102282233B1 KR102282233B1 (ko) 2021-07-28

Family

ID=63854347

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033911A KR102282233B1 (ko) 2017-04-21 2018-04-20 비디오 인코딩의 연기된 포스트-프로세스들을 위한 시스템들 및 방법들

Country Status (15)

Country Link
US (4) US10271055B2 (ko)
EP (1) EP3613210A4 (ko)
JP (1) JP7077396B2 (ko)
KR (1) KR102282233B1 (ko)
CN (1) CN111052738B (ko)
AU (1) AU2018254570B2 (ko)
BR (1) BR112019021627A2 (ko)
CA (1) CA3059743A1 (ko)
DE (1) DE112018002117T5 (ko)
GB (1) GB2576286B (ko)
MX (1) MX2021004096A (ko)
RU (2) RU2744982C2 (ko)
TW (2) TWI735193B (ko)
WO (1) WO2018195431A1 (ko)
ZA (2) ZA201907681B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2576286B (en) 2017-04-21 2022-09-07 Zenimax Media Inc Systems and methods for deferred post-processes in video encoding
US11731043B2 (en) * 2019-11-19 2023-08-22 Sony Interactive Entertainment Inc. Adaptive graphics for cloud gaming
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050182582A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation Adaptive resource monitoring and controls for a computing system
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
KR20130029149A (ko) * 2011-09-14 2013-03-22 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US20130212440A1 (en) * 2012-02-13 2013-08-15 Li-Raz Rom System and method for virtual system management
US20160092037A1 (en) * 2014-09-25 2016-03-31 Osix Corporation Computer-Implemented Methods, Computer Readable Media, And Systems For Distributed Processing
KR20160067798A (ko) * 2014-12-04 2016-06-14 엑시스 에이비 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스
KR20160087226A (ko) * 2015-01-13 2016-07-21 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 단말 성능을 고려한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20160142741A (ko) * 2015-06-03 2016-12-13 삼성전자주식회사 컨텐츠를 암호화하기 위한 전자 장치 및 방법

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4501980A (en) 1982-06-04 1985-02-26 Motornetics Corporation High torque robot motor
JP2972410B2 (ja) 1991-10-03 1999-11-08 富士通株式会社 光学的読取装置
JPH06129865A (ja) 1992-10-20 1994-05-13 Sumitomo Electric Ind Ltd シングルモ−ドファイバ型デポラライザとその製造方法及び光ファイバジャイロ
US6345279B1 (en) * 1999-04-23 2002-02-05 International Business Machines Corporation Methods and apparatus for adapting multimedia content for client devices
US6788680B1 (en) * 1999-08-25 2004-09-07 Sun Microsystems, Inc. Defferrable processing option for fast path forwarding
US20030078738A1 (en) * 2000-04-12 2003-04-24 Wouters Lucien Joseph Maria Rosalia Method and apparatus for detecting outliers in biological/parmaceutical screening experiments
WO2004004359A1 (en) 2002-07-01 2004-01-08 E G Technology Inc. Efficient compression and transport of video over a network
US6903662B2 (en) 2002-09-19 2005-06-07 Ergodex Computer input device with individually positionable and programmable input members
US8054880B2 (en) 2004-12-10 2011-11-08 Tut Systems, Inc. Parallel rate control for digital video encoder with multi-processor architecture and picture-based look-ahead window
US7408984B2 (en) 2003-09-17 2008-08-05 International Business Machines Corporation Method and system for multiple pass video coding
WO2005038452A1 (en) * 2003-10-14 2005-04-28 Verseon Method and apparatus for analysis of molecular combination based on computations of shape complementarity using basis expansions
US20050108707A1 (en) * 2003-11-14 2005-05-19 Taylor Thomas M. Systems and methods for creating and managing a virtual retail store on end-user client computers within a network
JP4789494B2 (ja) * 2004-05-19 2011-10-12 株式会社ソニー・コンピュータエンタテインメント 画像フレーム処理方法、装置、レンダリングプロセッサおよび動画像表示方法
JP2006014981A (ja) 2004-07-02 2006-01-19 Fujitsu Ltd ネットワークゲーム制御方法及びネットワークゲームプログラム
US8347088B2 (en) * 2005-02-01 2013-01-01 Newsilike Media Group, Inc Security systems and methods for use with structured and unstructured data
US20060230428A1 (en) * 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US8139642B2 (en) * 2005-08-29 2012-03-20 Stmicroelectronics S.R.L. Method for encoding signals, related systems and program product therefor
JP4888996B2 (ja) * 2005-10-21 2012-02-29 株式会社ユニバーサルエンターテインメント 会話制御装置
US7925136B2 (en) * 2006-05-25 2011-04-12 Qualcomm Incorporated Method and apparatus for recording information in battery operated devices
US9349201B1 (en) * 2006-08-03 2016-05-24 Sony Interactive Entertainment America Llc Command sentinel
EP2177010B1 (en) 2006-12-13 2015-10-28 Quickplay Media Inc. Mobile media platform
US8069258B1 (en) 2007-09-11 2011-11-29 Electronic Arts Inc. Local frame processing to apparently reduce network lag of multiplayer deterministic simulations
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
KR20090117429A (ko) * 2008-05-09 2009-11-12 삼성전자주식회사 영상 부호화 및 복호화 방법 및 장치
WO2009138879A2 (en) 2008-05-12 2009-11-19 Wei Shi System and method for fit prediction and recommendation of footwear and clothing
EP2364190B1 (en) 2008-05-12 2018-11-21 GameFly Israel Ltd. Centralized streaming game server
US8154553B2 (en) 2008-05-22 2012-04-10 Playcast Media System, Ltd. Centralized streaming game server
JP4613990B2 (ja) * 2008-07-31 2011-01-19 ソニー株式会社 画像処理装置、画像処理方法、プログラム
US8678929B1 (en) 2008-08-01 2014-03-25 Electronics Arts Inc. Client-side prediction of a local game object to reduce apparent network lag of multiplayer simulations
US20100278231A1 (en) 2009-05-04 2010-11-04 Imagine Communications Ltd. Post-decoder filtering
US9723319B1 (en) 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
CA2684678A1 (en) 2009-11-03 2011-05-03 Research In Motion Limited System and method for dynamic post-processing on a mobile device
US9338523B2 (en) 2009-12-21 2016-05-10 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
US20110261885A1 (en) 2010-04-27 2011-10-27 De Rivaz Peter Francis Chevalley Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding
KR20120096317A (ko) * 2011-02-22 2012-08-30 한국전자통신연구원 스테레오스코픽 비디오를 부호화하는 방법 및 그 장치
JP5155462B2 (ja) 2011-08-17 2013-03-06 株式会社スクウェア・エニックス・ホールディングス 動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体
WO2013040533A1 (en) * 2011-09-16 2013-03-21 Umami Co. Second screen interactive platform
JP5977023B2 (ja) 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
JP6247286B2 (ja) * 2012-06-12 2017-12-13 コーヒレント・ロジックス・インコーポレーテッド ビデオコンテンツの符号化及び配信のための分散アーキテクチャ
ES2768086T3 (es) * 2012-07-02 2020-06-19 Samsung Electronics Co Ltd Codificación por entropía de un vídeo y decodificación por entropía de un vídeo
JP6787667B2 (ja) 2012-09-21 2020-11-18 ノキア テクノロジーズ オサケユイチア ビデオコーディングのための方法と装置
CN104704827B (zh) 2012-11-13 2019-04-12 英特尔公司 用于下一代视频的内容自适应变换译码
WO2014120368A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US9661351B2 (en) 2013-03-15 2017-05-23 Sony Interactive Entertainment America Llc Client side frame prediction for video streams with skipped frames
US9079108B2 (en) 2013-05-31 2015-07-14 Empire Technology Development Llc Cache-influenced video games
US9210434B2 (en) * 2013-06-12 2015-12-08 Microsoft Technology Licensing, Llc Screen map and standards-based progressive codec for screen content coding
US20140368505A1 (en) * 2013-06-13 2014-12-18 Nvidia Corporation Graphics processing subsystem for recovering projection parameters for rendering effects and method of use thereof
US9413830B2 (en) * 2013-11-11 2016-08-09 Amazon Technologies, Inc. Application streaming service
CN103686195B (zh) * 2013-11-22 2017-04-05 华为技术有限公司 视频信息处理方法及设备
US9854270B2 (en) 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US20150228106A1 (en) 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
US10880565B2 (en) 2014-03-24 2020-12-29 Qualcomm Incorporated Use of specific HEVC SEI messages for multi-layer video codecs
US9885223B2 (en) 2014-05-30 2018-02-06 Halliburton Energy Services, Inc. Methods for formulating a cement slurry for use in a subterranean salt formation
US10078631B2 (en) * 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
US10142386B2 (en) * 2014-10-29 2018-11-27 DLVR, Inc. Determining manifest file data used in adaptive streaming video delivery
US10021411B2 (en) 2014-11-05 2018-07-10 Apple Inc. Techniques in backwards compatible multi-layer compression of HDR video
US9832521B2 (en) * 2014-12-23 2017-11-28 Intel Corporation Latency and efficiency for remote display of non-media content
US10063866B2 (en) 2015-01-07 2018-08-28 Texas Instruments Incorporated Multi-pass video encoding
US10000963B2 (en) 2015-01-26 2018-06-19 Rolltech A/S Two part spacer with overlapping surfaces
KR101897959B1 (ko) * 2015-02-27 2018-09-12 쏘닉 아이피, 아이엔씨. 라이브 비디오 인코딩 및 스트리밍에서의 프레임 복제 및 프레임 확장을 위한 시스템 및 방법
CN106034241B (zh) * 2015-03-19 2019-04-26 华为技术有限公司 一种多媒体重定向的方法、客户端、服务器和系统
TW201642655A (zh) 2015-04-21 2016-12-01 Vid衡器股份有限公司 基於藝術意向之視訊編碼
US9491490B1 (en) 2015-06-12 2016-11-08 Intel Corporation Facilitating environment-based lossy compression of data for efficient rendering of contents at computing devices
JP6910130B2 (ja) 2015-11-06 2021-07-28 三星電子株式会社Samsung Electronics Co.,Ltd. 3dレンダリング方法及び3dレンダリング装置
US10163183B2 (en) 2016-01-13 2018-12-25 Rockwell Collins, Inc. Rendering performance using dynamically controlled samples
US10000961B2 (en) 2016-02-29 2018-06-19 Ford Global Technologies, Llc Temperature control for powered vehicle doors
US9705526B1 (en) 2016-03-17 2017-07-11 Intel Corporation Entropy encoding and decoding of media applications
US10109100B2 (en) 2016-03-25 2018-10-23 Outward, Inc. Adaptive sampling of pixels
US20170347126A1 (en) 2016-05-27 2017-11-30 Qualcomm Incorporated Video debanding using adaptive filter sizes and gradient based banding detection
US10462334B2 (en) 2016-11-04 2019-10-29 Disney Enterprises, Inc. Pipeline for high dynamic range video coding based on luminance independent chromaticity preprocessing
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
US10591971B2 (en) * 2017-04-01 2020-03-17 Intel Corporation Adaptive multi-resolution for graphics
GB2576286B (en) 2017-04-21 2022-09-07 Zenimax Media Inc Systems and methods for deferred post-processes in video encoding

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050182582A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation Adaptive resource monitoring and controls for a computing system
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
KR20130029149A (ko) * 2011-09-14 2013-03-22 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US20130212440A1 (en) * 2012-02-13 2013-08-15 Li-Raz Rom System and method for virtual system management
US20160092037A1 (en) * 2014-09-25 2016-03-31 Osix Corporation Computer-Implemented Methods, Computer Readable Media, And Systems For Distributed Processing
KR20160067798A (ko) * 2014-12-04 2016-06-14 엑시스 에이비 비디오 스트림의 후속 프로세싱을 위한 방법 및 디바이스
KR20160087226A (ko) * 2015-01-13 2016-07-21 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 단말 성능을 고려한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20160142741A (ko) * 2015-06-03 2016-12-13 삼성전자주식회사 컨텐츠를 암호화하기 위한 전자 장치 및 방법

Also Published As

Publication number Publication date
JP2020520203A (ja) 2020-07-02
ZA201907681B (en) 2021-04-28
GB201916964D0 (en) 2020-01-08
RU2020124345A3 (ko) 2021-01-14
US10271055B2 (en) 2019-04-23
ZA202007052B (en) 2022-03-30
TW201842775A (zh) 2018-12-01
JP7077396B2 (ja) 2022-05-30
WO2018195431A1 (en) 2018-10-25
CA3059743A1 (en) 2018-10-25
CN111052738A (zh) 2020-04-21
RU2020124345A (ru) 2020-08-20
AU2018254570A1 (en) 2019-12-05
DE112018002117T5 (de) 2020-01-02
TW202027504A (zh) 2020-07-16
US20180309999A1 (en) 2018-10-25
RU2744982C2 (ru) 2021-03-17
BR112019021627A2 (pt) 2020-05-12
US11778199B2 (en) 2023-10-03
EP3613210A1 (en) 2020-02-26
US20230362388A1 (en) 2023-11-09
GB2576286B (en) 2022-09-07
GB2576286A (en) 2020-02-12
US10841591B2 (en) 2020-11-17
TWI735193B (zh) 2021-08-01
KR102282233B1 (ko) 2021-07-28
EP3613210A4 (en) 2021-02-24
AU2018254570B2 (en) 2021-08-05
US20210044807A1 (en) 2021-02-11
RU2728812C1 (ru) 2020-07-31
CN111052738B (zh) 2021-12-21
TWI691200B (zh) 2020-04-11
MX2021004096A (es) 2021-06-08
US20190215520A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
US20230362388A1 (en) Systems and methods for deferred post-processes in video encoding
US8396122B1 (en) Video codec facilitating writing an output stream in parallel
US11172220B2 (en) Video encoding method, and storage medium thereof
RU2735241C1 (ru) Системы и способы для векторов движения, генерируемых во время игры
US20140092209A1 (en) System and method for improving video encoding using content information
US8111753B2 (en) Video encoding method and video encoder for improving performance
JPWO2014167609A1 (ja) 情報処理装置、制御方法、プログラム、及び記録媒体
CN113794887A (zh) 一种游戏引擎中视频编码的方法及相关设备
KR102072204B1 (ko) 영상의 화질을 개선하는 장치 및 방법
CA2858413A1 (en) Encoding and decoding using perceptual representations
JP2018014721A (ja) 情報処理装置、制御方法、プログラム、及び記録媒体

Legal Events

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