KR20210112363A - 미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화 - Google Patents

미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화 Download PDF

Info

Publication number
KR20210112363A
KR20210112363A KR1020217024968A KR20217024968A KR20210112363A KR 20210112363 A KR20210112363 A KR 20210112363A KR 1020217024968 A KR1020217024968 A KR 1020217024968A KR 20217024968 A KR20217024968 A KR 20217024968A KR 20210112363 A KR20210112363 A KR 20210112363A
Authority
KR
South Korea
Prior art keywords
media
subsequence
encode
convex hull
encoded
Prior art date
Application number
KR1020217024968A
Other languages
English (en)
Other versions
KR102618101B1 (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 KR20210112363A publication Critical patent/KR20210112363A/ko
Application granted granted Critical
Publication of KR102618101B1 publication Critical patent/KR102618101B1/ko

Links

Images

Classifications

    • 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, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving management of server-side video buffer
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • 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/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/179Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 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/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 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, manipulating MPEG-4 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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • 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/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client 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/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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Abstract

다양한 실시예들에서, 버퍼-기반 인코딩 애플리케이션은 미디어 타이틀에 연관된 복수의 인코딩 포인트 및 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 생성한다. 다음으로, 버퍼-기반 인코딩 애플리케이션은 전송 버퍼 제약, 제1 컨벡스 헐, 및 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성한다. 특히, 제2 글로벌 컨벡스 헐은 미디어 타이틀에 대한 재생 순서에서 제1 서브시퀀스 이전에 발생하는 미디어 타이틀의 부분에 연관된다. 후속하여, 서브시퀀스-기반 인코딩 애플리케이션은 미디어 메트릭에 기초하여 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하고, 선택된 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정한다. 제1 인코딩된 미디어 시퀀스는 미디어 타이틀을 재생하는 동안 엔드포인트 디바이스에 후속적으로 스트리밍된다.

Description

미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화
관련 출원에 대한 상호 참조
본 출원은 2019년 1월 9일자로 출원된 미국 특허 출원 일련번호 제16/244,033호의 이익을 주장하며, 이는 여기에 참조로 포함된다.
다양한 실시예들의 분야
본 발명의 실시예들은 일반적으로 인코딩 기술에 관한 것으로, 보다 구체적으로는 미디어 타이틀의 버퍼-제약 버전(buffer-constrained version)을 생성할 때 인코딩 동작들을 최적화하는 것에 관한 것이다.
전형적인 미디어 스트리밍 서비스는 여러 상이한 엔드포인트 디바이스들 상에서 볼 수 있는 미디어 타이틀들의 라이브러리에 대한 액세스를 제공한다. 각각의 엔드포인트 디바이스는 대역폭 및 대기시간에 영향을 미치는 상이한 접속 조건들 하에서 미디어 스트리밍 서비스에 접속할 수 있다. 추가로, 각각의 상이한 엔드포인트 디바이스는 미디어 타이틀을 최종 사용자(들)에게 출력하기 위한 상이한 하드웨어를 포함할 수 있다. 예를 들어, 주어진 엔드포인트 디바이스는 특정 화면 크기와 특정 화면 해상도를 가진 디스플레이 화면을 포함할 수 있다.
다수의 구현들에서, 미디어 스트리밍 서비스에 접속하는 엔드포인트 디바이스는 주어진 미디어 타이틀에 대해 접속 조건들, 및 엔드포인트 디바이스의 속성들에 기초하여 엔드포인트 디바이스에 스트리밍할 미디어 타이틀의 적절한 인코딩된 버전을 결정하는 엔드포인트 애플리케이션을 실행한다. 보다 구체적으로, 엔드포인트 애플리케이션은 버퍼링 또는 재버퍼링으로 인한 재생 중단을 피하면서, 엔드포인트 디바이스에서 미디어 타이틀을 재생하는 동안 최상의 가능한 시각적 품질을 제공하는 미디어 타이틀의 특정 인코딩된 버전을 선택하려고 시도한다.
일부 구현들에서, 엔드포인트 애플리케이션은 비트레이트 래더(bitrate ladder)에 기초하여 미디어 타이틀의 특정 인코딩된 버전을 선택한다. 비트레이트 래더는 이용가능한 대역폭에 기초하여 미디어 타이틀을 재생하는 동안 목표 시각적 품질을 달성하도록 설계된다. 비트레이트 래더의 각각의 단계(rung)는 미디어 타이틀의 상이한 미리 생성된 인코딩된 버전에 대응하는 상이한 비트레이트-해상도 쌍을 지정한다. 주어진 비트레이트-해상도 쌍에 대응하는 미디어 타이틀의 인코딩된 버전을 생성하기 위해, 미디어 타이틀에 연관된 미디어 콘텐츠는 샘플링된 미디어 콘텐츠를 생성하기 위해 그 해상도로 샘플링된다. 레이트 제어 값은 비트레이트에 기초하여 선택된 다음 인코더가 사용되어 샘플링된 미디어 콘텐츠를 인코딩한다.
위의 "모놀리식" 인코딩 기술의 한 가지 단점은 주어진 미디어 타이틀에 연관된 미디어 콘텐츠의 복잡성이 종종 미디어 타이틀에 걸쳐 달라지는 반면, 미디어 콘텐츠를 인코딩하는 데 사용되는 해상도와 레이트 제어 값은 변하지 않는다는 것이다. 그 결과, 미디어 타이틀의 비교적 단순한 부분들의 인코딩은 목표 시각적 품질을 충족시키는 데 필요한 것보다 많은 계산 및 저장 자원들을 소비할 수 있다. 예를 들어, 미디어 타이틀의 비교적 단순한 부분은 미디어 콘텐츠의 해당 부분이 초당 560 킬로비트(kbps)의 비트레이트를 사용하여 인코딩되는지 아니면 3000kbps의 비트레이트를 사용하여 인코딩되는지에 관계없이 동일한 시각적 품질을 가질 수 있다. 무엇보다도, 이러한 인코딩 비효율성들은 계산 및 저장 자원들을 낭비하고, 미디어 타이틀들의 인코딩된 버전들을 엔드포인트 디바이스들에 스트리밍하는 데 요구되는 대역폭을 증가시킨다.
다른 구현들에서, 이러한 유형들의 인코딩 비효율성들을 감소시키기 위해, 미디어 스트리밍 서비스 제공자는 미디어 타이틀에 걸쳐 해상도 및 레이트 제어 값을 변경한다. 전형적으로, 서브시퀀스-기반 인코딩 애플리케이션(subsequence-based encoding application)은 미디어 타이틀을 유사한 속성들을 특징으로 하는 상이한 서브시퀀스들 또는 프레임 세트들로 분할한다. 다음으로, 서브시퀀스-기반 인코딩 애플리케이션은 여러 상이한 해상도들 및 레이트 제어 값들에서 각각의 서브시퀀스를 여러 번 인코딩하여, 인코딩된 서브시퀀스들을 생성한다. 후속하여, 서브시퀀스-기반 인코딩 애플리케이션은 미디어 타이틀의 상이한 최적화된 인코딩된 버전들을 생성하기 위해 최적화 동작들을 수행한다. 미디어 타이틀의 각각의 최적화된 인코딩된 버전은 미디어 타이틀의 길이에 걸쳐 있는 인코딩된 서브시퀀스들의 상이한 조합을 포함하고, 해상도 및/또는 레이트 제어 값은 구성요소인 인코딩된 서브시퀀스들(constituent encoded subsequences) 사이에서 달라질 수 있다.
위의 "서브시퀀스-기반" 인코딩 기술의 한 가지 단점은 미디어 타이틀의 최적화된 인코딩된 버전들이 엔드포인트 디바이스들로의 전송 및 버퍼링에 종종 연관되는 전송 버퍼 제약들을 반드시 준수하지는 않는다는 점이다. 일반적으로, 미디어 타이틀의 인코딩된 버전이 관련 전송 버퍼 제약들을 준수하면, 엔드포인트 디바이스가 특히 일정 비트레이트 전송 채널에서 미디어 타이틀을 더 적절하게 버퍼링하고 재생할 수 있을 것이다. 그러나, 미디어 타이틀의 인코딩된 버전이 관련 전송 버퍼 제약들을 준수하지 않으면, 엔드포인트 디바이스가 미디어 타이틀을 덜 적절하게 버퍼링하고 재생할 수 있을 것이다. 후자의 경우, 미디어 타이틀을 엔드포인트 디바이스에 스트리밍할 때, 시청 경험의 전체 품질을 감소시키는 재생 중단들이 발생할 수 있다.
예를 들어, 방송 텔레비전에서 사용되는 것들과 같은 일정 대역폭 채널을 통해 전송되는 미디어 타이틀의 인코딩된 버전은 전형적으로 일정 비트레이트(constant bitrate)(CBR) 비디오 버퍼 검증기(Video Buffer Verifier)(VBV) 제약을 준수하도록 요구된다. 일정 대역폭 채널에서, 인코딩된 비트들은 고정된 레이트로 엔드포인트 디바이스에 연관된 디코더에 도달하고, 고정된 크기를 갖는 전송 버퍼에 저장된다. 미디어 타이틀의 특정 프레임을 디스플레이하는 것의 일부로서, 디코더는 전송 버퍼로부터 연관된 인코딩된 비트들을 제거한다. 각각의 프레임을 인코딩하기 위해 사용되는 비트들의 수가 미디어 타이틀에 걸쳐 달라질 수 있기 때문에, 전송 버퍼가 저장하는 인코딩된 비트들의 수도 미디어 타이틀의 재생 동안 달라질 수 있다. 미디어 타이틀의 인코딩된 버전이 CBR VBV 제약을 준수하는 경우, 미디어 타이틀의 재생 동안 전송 버퍼가 오버플로 또는 언더플로되지 않을 것을 보장하려는 노력에서, 각각의 프레임을 인코딩하는 데 사용되는 비트들의 수는 제한된다. 그러나, 전송 버퍼가 오버플로되는 경우, 전송 버퍼에는 들어오는 인코딩된 비트들을 저장할 공간이 없을 수 있다. 결과적으로, 프레임 드롭이 발생할 수 있다. 또한, 전송 버퍼가 언더플로되는 경우, 전송 버퍼로부터 인코딩된 비트들이 검색될 수 없으며, 프레임 프리즈(frame freeze)가 발생할 수 있다.
위에서 설명한 바와 같이, 본 기술분야에서는 미디어 타이틀들을 인코딩하기 위한 더 효과적인 기술들이 필요하다.
본 발명의 일 실시예는 미디어 타이틀을 인코딩하기 위한 컴퓨터 구현 방법을 설명한다. 방법은 미디어 타이틀에 연관된 인코딩 포인트들의 제1 세트 및 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐(convex hull)을 생성하는 단계; 전송 버퍼 제약, 제1 컨벡스 헐, 및 미디어 타이틀에 대한 재생 순서에서 제1 서브시퀀스 이전에 발생하는 미디어 타이틀의 부분에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하는 단계; 미디어 메트릭에 기초하여 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하는 단계; 및 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하는 단계 - 제1 인코딩된 미디어 시퀀스는 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 - 를 포함한다.
종래 기술에 비교하여, 개시된 기술들의 적어도 하나의 기술적 이점은 인코딩된 미디어 시퀀스들이 개별적으로 인코딩된 서브시퀀스들의 세트들 및 전송 버퍼 제약들에 기초하여 생성된다는 점이다. 특히, 각각의 인코딩된 미디어 시퀀스에 포함된 개별적으로 인코딩된 서브시퀀스들은 상이한 인코딩 포인트들에 연관될 수 있다. 결과적으로, 종래 기술의 모놀리식 인코딩 기술들에 전형적으로 연관되는 인코딩 비효율성들이 감소된다. 또한, 최적화된 인코딩된 미디어 시퀀스들이 전송 버퍼 제약들을 준수할 것을 보장함으로써, 미디어 타이틀을 엔드포인트 디바이스들에 스트리밍할 때의 전송 및 버퍼링 제한에 기인하는 시청 경험 저하들이 감소된다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 진보를 제공한다.
다양한 실시예들의 위에서 언급된 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략하게 요약된 본 발명의 개념들의 보다 구체적인 설명은 다양한 실시예들을 참조할 수 있으며, 그러한 실시예들 중 일부는 첨부 도면들에 도시되어 있다. 그러나, 첨부 도면들은 본 발명의 개념의 전형적인 실시예들을 예시할 뿐이며, 따라서 어떤 식으로든 범위를 제한하는 것으로 고려되어서는 안 되고, 동등한 효과의 다른 실시예들이 존재함에 유의해야 한다.
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성되는 시스템의 개념도이다.
도 2는 본 발명의 다양한 실시예에 따른, 도 1의 버퍼-기반 인코딩 애플리케이션의 더 상세한 도시이다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 2의 인코딩 포인트 목록의 더 상세한 도시이다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 2의 서브시퀀스 인코드 세트들 중 하나의 더 상세한 도시이다.
도 5는 본 발명의 다양한 실시예들에 따른, 도 2의 컨벡스 헐 생성기에 의해 생성되는 예시적인 컨벡스 헐을 도시한다.
도 6은 본 발명의 다양한 실시예들에 따른, 도 2의 미디어 인코드 포인트들 중 하나의 더 상세한 도시이다.
도 7은 본 발명의 다양한 실시예들에 따른, 도 2의 서브시퀀스 반복기의 더 상세한 도시이다.
도 8은 본 발명의 다양한 실시예들에 따른, 도 2의 버퍼-기반 인코딩 애플리케이션에 의해 생성되는 예시적인 글로벌 컨벡스 헐 및 예시적인 최적화된 인코딩된 미디어 시퀀스를 도시한다.
도 9a 및 도 9b는 본 발명의 다양한 실시예들에 따른, 소스 미디어 타이틀을 인코딩하기 위한 방법 단계들의 흐름도를 제시한다.
이하의 설명에서, 다양한 실시예들의 보다 완전한 이해를 제공하기 위해 다수의 특정 세부사항이 제시된다. 그러나, 본 발명의 개념들은 이러한 특정 세부사항들 중 하나 이상 없이도 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다.
미디어 스트리밍 서비스가 시청자들에게 제공하는 전체 시각적 경험을 최적화하기 위해, 미디어 스트리밍 서비스 제공자는 종종 각각의 미디어 타이틀에 대한 비트레이트 래더를 생성한다. 주어진 미디어 타이틀에 대한 비트레이트 래더는, 클라이언트-측 엔드포인트 디바이스들이 이용가능한 대역폭에 기초하여 미디어 타이틀을 재생하는 동안 목표 시각적 품질을 달성하는 것을 허용한다. 비트레이트 래더 내의 각각의 단계는 미디어 타이틀의 상이한 미리 생성된 인코딩된 버전에 대응하는 상이한 비트레이트-해상도 쌍을 지정한다.
일부 미디어 스트리밍 서비스 제공자들은 미디어 타이틀의 상이한 인코딩된 버전들을 생성하기 위해 모놀리식 인코딩 기술들을 사용하며, 여기서 미디어 타이틀의 각각의 인코딩된 버전은 상이한 비트레이트에 연관된다. 즉, 주어진 미디어 타이틀에 연관된 미디어 콘텐츠를 인코딩하기 위해 사용되는 해상도 및 레이트 제어 값은 미디어 타이틀에 걸쳐 달라지지 않는다. 그러나, 주어진 미디어 타이틀에 연관된 미디어 콘텐츠의 복잡성은 전형적으로 미디어 타이틀에 걸쳐 달라지기 때문에, 미디어 타이틀의 결과적인 인코딩된 버전들은 종종 인코딩 비효율성들에 연관된다. 보다 구체적으로, 미디어 타이틀의 비교적 단순한 부분들을 인코딩하는 것은 목표 시각적 품질을 충족시키는 데 필요한 것보다 더 많은 계산 및 저장 자원들을 소비할 수 있다. 또한, 미디어 타이틀의 인코딩된 버전들을 스트리밍하는 데 요구되는 대역폭이 불필요하게 클 수 있다.
예를 들어, 영화는 비교적 복잡한 액션 부분들 및 비교적 단순한 독백들을 포함할 수 있다. 독백들은 독백들이 초당 3000 킬로비트(kbps)의 비트레이트를 사용하여 인코딩되는지 또는 560 kbps의 비트레이트를 사용하여 인코딩되는지에 관계없이 동일한 시각적 품질을 가질 수 있다. 대조적으로, 3000 kbps의 비트레이트를 사용하여 독백들을 인코딩하는 것에 연관된 요구되는 자원들(예를 들어, 계산 자원, 저장 자원, 대역폭 등)은 560 kbps의 비트레이트를 사용하여 독백들을 인코딩하는 것에 연관된 요구되는 자원들을 초과한다. 따라서, 3000 kbps의 비트레이트를 사용하여 전체 영화를 인코딩하면 계산 및 저장 자원들이 불필요하게 낭비되고, 영화의 인코딩된 버전을 엔드포인트 디바이스들에 스트리밍하는 데 요구되는 대역폭이 불필요하게 증가한다.
전형적으로 모놀리식 인코딩 기술들에 연관된 인코딩 비효율성들을 감소시키기 위해, 일부 미디어 스트리밍 서비스 제공자들은 종래의 서브시퀀스-기반 인코딩 애플리케이션을 사용하여, 주어진 미디어 타이틀의 상이한 인코딩된 버전들을 생성한다. 종래의 서브시퀀스-기반 애플리케이션은 목표 시각적 품질 또는 목표 비트레이트와 같은 목표 메트릭 값에 기초하여, 미디어 타이틀에 걸쳐 해상도 및 레이트 제어 값을 변경한다. 이러한 방식으로, 미디어 타이틀의 각각의 인코딩된 버전은 상이한 목표 메트릭 값에 연관된다.
전형적으로, 종래의 서브시퀀스-기반 인코딩 애플리케이션은 미디어 타이틀을 상이한 서브시퀀스들로 분할하며, 여기서 각각의 서브시퀀스는 주어진 카메라 또는 다른 캡처 포인트로부터 연속적으로 캡처된 미디어 콘텐츠를 포함하는 샷이다. 다음으로, 종래의 서브시퀀스-기반 인코딩 애플리케이션은 인코딩된 서브시퀀스들을 생성하기 위해 여러 상이한 인코딩 포인트들에서 각각의 서브시퀀스를 여러 번 인코딩한다. 각각의 인코딩 포인트는 해상도와 레이트 제어 값의 상이한 조합을 지정한다. 후속하여, 종래의 서브시퀀스-기반 인코딩 애플리케이션은 미디어 타이틀의 상이한 인코딩된 버전들을 생성하기 위해 최적화 동작들을 수행한다.
마지막으로, 종래의 서브시퀀스-기반 인코딩 애플리케이션은 목표 메트릭 값에 기초하여, 미디어 타이틀의 인코딩된 버전들 중 하나를 미디어 타이틀의 최적화된 인코딩된 버전으로서 선택한다. 미디어 타이틀의 최적화된 인코딩된 버전은 미디어 타이틀의 길이에 걸쳐 있는 인코딩된 서브시퀀스들의 상이한 조합을 포함하고, 해상도 및 레이트 제어 값은 구성요소인 인코딩된 서브시퀀스들 사이에서 달라질 수 있다. 결과적으로, 종래의 서브시퀀스-기반 인코딩 애플리케이션은 위에서 설명된 모놀리식 인코딩 기술들에 전형적으로 연관된 인코딩 비효율성들을 감소시킨다.
이러한 유형의 서브시퀀스-기반 인코딩 기술의 한 가지 단점은 미디어 시퀀스의 최적화된 인코딩된 버전이 엔드포인트 디바이스들로의 전송 및 엔드포인트 디바이스들에서의 버퍼링에 종종 연관되는 전송 버퍼 제약들을 반드시 준수하지는 않는다는 점이다. 미디어 시퀀스의 인코딩된 버전이 관련 전송 버퍼 제약들을 준수하는 경우, 연관된 엔드포인트 디바이스가 미디어 타이틀을 적절하게 버퍼링하고 재생하는 것이 더 가능할 것이다. 그러나, 미디어 시퀀스의 인코딩된 버전이 관련 전송 버퍼 제약들을 준수하지 않는 경우, 엔드포인트 디바이스가 중단 없는 방식으로 미디어 타이틀을 적절하게 버퍼링하고 재생하는 것이 덜 가능할 것이다.
공통 전송 버퍼 제약의 일례는 일정 비트레이트(CBR) 비디오 버퍼 검증기(VBV) 제약이다. CBR VBV 제약은 일정 대역폭 채널에 연관된 전송 레이트, 및 엔드포인트 디바이스에 연관된 버퍼 크기를 지정한다. 인코딩된 비트들은 전송 레이트에서 일정 대역폭 채널을 통해 엔드포인트 디바이스로 스트리밍된다. 인코딩된 비트들이 엔드포인트 디바이스에 연관된 디코더에 도달함에 따라, 인코딩된 비트들은 버퍼 크기를 갖는 전송 버퍼에 저장된다. 미디어 타이틀의 특정 프레임을 디스플레이하는 것의 일부로서, 디코더는 전송 버퍼로부터 연관된 인코딩된 비트들을 제거한다.
각각의 프레임을 인코딩하기 위해 사용되는 비트들의 수는 미디어 타이틀에 따라 달라질 수 있기 때문에, 전송 버퍼가 저장하는 인코딩된 비트들의 수 또한 미디어 타이틀의 재생 동안 달라질 수 있다. 최적화된 인코딩된 미디어 시퀀스가 CBR VBV 제약 조건을 준수하는 경우, 각각의 프레임을 인코딩하기 위해 사용되는 비트 수의 변동이 제한되고, 엔드포인트 디바이스가 미디어 타이틀을 적절하게 버퍼링하고 재생하는 것이 더 가능할 것이다.
그러나, 최적화된 인코딩된 미디어 시퀀스가 CBR VBV 제약을 준수하지 않는 경우, 각각의 프레임을 인코딩하기 위해 사용되는 비트 수의 변동은 미디어 타이틀의 재생 동안 전송 버퍼가 언더플로 및/또는 오버플로되게 할 수 있다. 결과적으로, 연관된 시청 경험에 부정적인 영향을 미치는 재생 중단이 발생할 수 있다. 예를 들어, 미디어 타이틀을 재생하는 동안의 상이한 시점들에서, 전송 버퍼는 전송 버퍼가 드레인되는 것보다 더 빨리 채워질 수 있고, 결과적으로 오버플로할 수 있다. 전송 버퍼가 오버플로되는 경우, 후속 프레임들이 드롭되어 미디어 타이틀의 재생이 중단될 수 있다.
그러나, 개시된 기술들로, 미디어 스트리밍 서비스 제공자는 전송 버퍼 제약에 종속하는 주어진 미디어 타이틀의 서브시퀀스-기반 인코딩을 수행할 수 있다. 최적화된 인코딩된 미디어 시퀀스에 포함된 각각의 인코딩된 서브시퀀스는 전송 버퍼 제약에 종속하는 잠재적으로 상이한 최적화된 인코딩 포인트에서 개별적으로 인코딩된다. 결과적으로, 개시된 기술들은 모놀리식 인코딩 기술들에 연관된 인코딩 비효율성들을 감소시키면서 종래 기술의 서브시퀀스-기반 인코딩 기술들에 비해 재생 중단 가능성을 감소시킬 수 있다.
일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션은 복수의 인코딩 포인트에 기초하여 각각의 서브시퀀스에 대한 복수의 인코딩된 서브시퀀스를 생성한다. 다음으로, 버퍼-기반 인코딩 애플리케이션은 인코딩된 서브시퀀스들 및 미디어 타이틀에 대한 전송 버퍼 제약에 기초하여, 인코딩된 미디어 시퀀스들을 재생 순서로 증분적으로 생성한다. 보다 정확하게는, n번째 반복 동안, 버퍼-기반 인코딩 애플리케이션은 0번째 서브시퀀스로부터 (n-1)번째 서브시퀀스에 걸쳐 있는 이전에 생성된 인코딩된 미디어 시퀀스들을 n번째 서브시퀀스에 연관된 인코딩된 서브시퀀스들과 결합한다. 결과적인 인코딩된 미디어 시퀀스들은 0번째 서브시퀀스로부터 n번째 서브시퀀스까지 걸쳐 있다.
버퍼-기반 인코딩 애플리케이션이 각각의 인코딩된 미디어 시퀀스를 생성함에 따라, 버퍼-기반 인코딩 애플리케이션은 전송 버퍼의 버퍼 점유율을 추적한다. 버퍼-기반 인코딩 애플리케이션이 특정 인코딩된 미디어 시퀀스에 대한 버퍼 점유율의 변동이 전송 버퍼의 크기를 초과한다고 결정하는 경우, 버퍼-기반 인코딩 애플리케이션은 그 인코딩된 미디어 시퀀스를 폐기한다. 버퍼-기반 인코딩 애플리케이션은 또한 평균 비트레이트와 전체 시각적 품질 사이의 차선의 절충안에 연관된 임의의 인코딩된 미디어 시퀀스들을 폐기한다. 각각이 미디어 타이틀의 길이에 걸쳐 있는 인코딩된 미디어 시퀀스들을 생성한 후, 버퍼-기반 인코딩 애플리케이션은 가장 높은 전체 시각적 품질을 갖는 인코딩된 미디어 시퀀스를 최적화된 인코딩된 미디어 시퀀스로서 선택한다.
종래 기술들에 비교하여, 개시된 기술들의 한 가지 이점 및 기술적 진보는 최적화된 인코딩된 미디어 시퀀스가 개별적으로 인코딩된 서브시퀀스들의 세트들 및 전송 버퍼 제약에 기초하여 재생 순서로 증분적으로 생성된다는 것이다. 각각의 구성요소인 인코딩된 서브시퀀스가 상이한 인코딩 포인트에 연관될 수 있기 때문에, 미디어 타이틀의 최적화된 인코딩된 버전의 전체 시각적 품질 레벨은, 동일한 평균 비트레이트에 연관된 미디어 타이틀의 모놀리식 인코딩된 버전에 비해 통상적으로 증가된다. 또한, 전송 버퍼 제약을 준수하지 않는 인코딩된 미디어 시퀀스들을 폐기하면, 최적화된 인코딩된 미디어 시퀀스가 전송 버퍼 제약 조건을 준수하는 것이 효율적으로 보장된다. 결과적으로, 미디어 타이틀을 엔드포인트 디바이스들에 스트리밍할 때 전송 버퍼 제한으로 인해 시청 경험들이 저하될 가능성이 종래 기술의 서브시퀀스-기반 인코딩 기술들에 비해 감소된다.
시스템 개요
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성되는 시스템(100)의 개념도이다. 도시된 바와 같이, 시스템(100)은 제한 없이, 임의의 수의 컴퓨팅 인스턴스(110) 및 클라우드(160)를 포함한다. 일반적으로, 클라우드(160)는 캡슐화된 공유 자원, 소프트웨어, 데이터 등을 포함한다. 설명의 목적으로, 유사한 객체들의 복수의 인스턴스는 객체를 식별하는 참조 번호들, 및 필요한 경우, 인스턴스를 식별하는 괄호 번호들로 표기된다.
임의의 수의 컴퓨팅 인스턴스(110)가 클라우드(160) 외부에 상주할 수 있는 반면, 다른 컴퓨팅 인스턴스들(110)은 클라우드(160)의 내부에 상주할 수 있다. 다양한 실시예들에서, 시스템(100)의 임의의 수의 컴포넌트들은 복수의 지리적 위치에 걸쳐 분산될 수 있다. 또한, 시스템(100)의 임의의 수의 컴포넌트는 임의의 조합으로 하나 이상의 독립형 디바이스, 분산 컴퓨팅 환경, 또는 클라우드(160)에 포함되거나 이들에 걸쳐 분산될 수 있다.
도시된 바와 같이, 컴퓨팅 인스턴스들(110) 각각은, 제한 없이, 프로세서(112) 및 메모리(116)를 포함한다. 프로세서(112)는 명령어들을 실행할 수 있는 임의의 명령어 실행 시스템, 장치, 또는 디바이스일 수 있다. 예를 들어, 프로세서(112)는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 컨트롤러, 마이크로컨트롤러, 상태 머신, 또는 이들의 임의의 조합을 포함할 수 있다. 대안적인 실시예들에서, 컴퓨팅 인스턴스들(110) 각각은 임의의 수의 프로세서(112)를 포함할 수 있다.
메모리(116)는 컴퓨팅 인스턴스(110)의 프로세서(112)에 의해 사용될 소프트웨어 애플리케이션들 및 데이터와 같은 콘텐츠를 저장한다. 메모리(116)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플로피 디스크, 하드 디스크, 또는 로컬 또는 원격인 임의의 다른 형태의 디지털 저장소와 같은 쉽게 이용가능한 메모리 중 하나 이상일 수 있다. 일부 실시예들에서, 저장소(도시되지 않음)는 메모리(116)를 보완하거나 대체할 수 있다. 저장소는 프로세서(112)가 액세스할 수 있는 임의의 수 및 유형의 외부 메모리들을 포함할 수 있다. 예를 들어, 제한 없이, 저장소는 보안 디지털 카드, 외부 플래시 메모리, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 이들의 임의의 적절한 조합을 포함할 수 있다.
일반적으로, 컴퓨팅 인스턴스들(110)은 하나 이상의 애플리케이션을 구현하도록 구성된다. 설명의 목적으로만, 각각의 애플리케이션은 단일 컴퓨팅 인스턴스(110)의 메모리(116)에 상주하고 단일 컴퓨팅 인스턴스(110)의 프로세서(112)에서 실행되는 것으로서 도시된다. 그러나, 본 기술분야의 통상의 기술자가 인식하는 바와 같이, 각각의 애플리케이션의 기능은 임의의 조합으로 임의의 수의 컴퓨팅 인스턴스(110)의 메모리들(116)에 상주하고 임의의 수의 컴퓨팅 인스턴스(110)의 프로세서들(112)에서 실행되는 임의의 수의 다른 애플리케이션에 걸쳐 분산될 수 있다. 또한, 임의의 수의 애플리케이션의 기능은 단일 애플리케이션 또는 서브시스템으로 통합될 수 있다.
도시되지는 않았지만, 미디어 스트리밍 서비스는 여러 상이한 엔드포인트 디바이스들에서 보여질 수 있는 미디어 타이틀들의 라이브러리에 대한 액세스를 제공한다. 미디어 타이틀들의 라이브러리는 제한 없이, 소스 미디어 시퀀스(122)에 연관된 미디어 타이틀을 포함한다. 각각의 엔드포인트 디바이스는 제한 없이, 대역폭 및 대기 시간에 영향을 미치는 상이한 접속 조건들 하에서 미디어 스트리밍 서비스에 접속할 수 있다. 추가로, 각각의 상이한 엔드포인트 디바이스는 미디어 타이틀을 최종 사용자(들)에게 출력하기 위한 상이한 하드웨어를 포함할 수 있다. 예를 들어, 주어진 엔드포인트 디바이스는 특정 화면 크기와 특정 화면 해상도를 가진 디스플레이 화면을 포함할 수 있다.
본 명세서에서 앞에서 설명된 바와 같이, 많은 실시예들에서, 미디어 스트리밍 서비스에 접속하는 엔드포인트 디바이스는 주어진 미디어 타이틀에 대해, 접속 조건들 및 엔드포인트 디바이스의 속성들에 기초하여, 엔드포인트 디바이스에 스트리밍할 미디어 타이틀의 적절한 인코딩된 버전을 결정하는 엔드포인트 애플리케이션을 실행한다. 더 구체적으로, 엔드포인트 애플리케이션은 버퍼링 또는 재버퍼링으로 인한 재생 중단을 피하면서, 엔드포인트 디바이스에서 미디어 타이틀을 재생하는 동안 최상의 시각적 품질에 연관된 미디어 타이틀의 특정 인코딩된 버전을 선택하려고 시도한다.
컴퓨팅 인스턴스들(110)은 스트리밍을 위한 미디어 타이틀의 인코딩된 버전들을 생성하도록 구성된다. 보다 정확하게는, 컴퓨팅 인스턴스들(110)은 소스 미디어 시퀀스(122)에 기초하여 최적화된 인코딩된 미디어 시퀀스(180)를 생성하도록 구성된다. 소스 미디어 시퀀스(122)는 제한 없이, 미디어 타이틀에 연관된 임의의 양 및 유형의 미디어 콘텐츠를 포함한다. 미디어 콘텐츠의 예들은 제한 없이, 몇몇 예를 들자면, 장편 영화의 임의의 부분(전체 포함), 텔레비전 프로그램의 에피소드들, 및 뮤직 비디오들을 포함한다. 최적화된 인코딩된 미디어 시퀀스(180)는 미디어 타이틀의 미리 생성된 인코딩된 버전이며, 제한 없이, 소스 미디어 시퀀스(122)에 포함된 미디어 콘텐츠로부터 도출된 인코딩된 미디어 콘텐츠를 포함한다.
본 명세서에서 앞에서 상세히 설명된 바와 같이, 주어진 미디어 타이틀에 연관된 미디어 콘텐츠의 복잡성 및 유형은 종종 미디어 타이틀에 걸쳐 달라진다. 종래의 모놀리식 인코딩 기술들을 사용하면, 미디어 콘텐츠를 인코딩하기 위해 사용되는 해상도 및 레이트 제어 값은 미디어 타이틀에 걸쳐 달라지지 않는다. 본 명세서에서 언급된 바와 같이, "레이트 제어 값"은 연관된 레이트 제어 모드에서 미디어 콘텐츠에 대한 인코딩 동작들을 수행할 때 인코더가 비트들을 할당하는 방법을 지정하기 위해 사용되는 레이트 제어 매개변수에 대한 값이다. 레이트 제어 매개변수의 일례는 양자화 매개변수(QP)이다. 그 결과, 미디어 타이틀의 비교적 단순한 부분들을 인코딩하는 것은 목표 시각적 품질을 충족시키는 데 필요한 것보다 더 많은 계산 및 저장 자원들을 소비할 수 있다. 무엇보다도, 이러한 인코딩의 비효율성들은 계산 및 저장 자원들을 낭비하고, 미디어 타이틀들의 인코딩된 버전들을 엔드포인트 디바이스들에 스트리밍하는 데 요구되는 대역폭을 증가시킨다.
이러한 유형의 인코딩 비효율성들을 줄이기 위해, 종래의 서브시퀀스-기반 인코딩 기술들은 해상도 및 레이트 제어 값이 미디어 타이틀에 걸쳐 달라지는 미디어 타이틀들의 인코딩된 버전들을 생성한다. 그러나, 종래의 서브시퀀스-기반 인코딩 기술의 한 가지 한계는 미디어 타이틀의 인코딩된 버전들이 엔드포인트 디바이스들에의 전송 및 엔드포인트 디바이스들에서의 버퍼링에 종종 연관되는 전송 버퍼 제약들을 반드시 준수하지 않는다는 것이다. 결과적으로, 그러한 인코딩된 미디어 타이틀들이 재생을 위해 엔드포인트 디바이스들에 스트리밍될 때 시청 경험을 방해하는 프리즈 프레임 및 프리즈 드롭과 같은 재생 중단들이 발생할 수 있다.
보다 정확하게는, 미디어 타이틀의 인코딩된 버전의 스트리밍 동안, 인코딩된 비트들이 엔드포인트 디바이스에 연관된 디코더에 도달함에 따라, 인코딩된 비트는 전송 버퍼에 저장된다. 미디어 타이틀의 특정 프레임을 디스플레이하는 것의 일부로서, 디코더는 전송 버퍼로부터, 연관된 인코딩된 비트들을 제거한다. 각각의 프레임을 인코딩하기 위해 사용되는 비트들의 수는 미디어 타이틀에 따라 달라질 수 있기 때문에, 전송 버퍼가 저장하는 인코딩된 비트들의 수도 미디어 타이틀을 재생하는 동안 달라질 수 있다. 미디어 타이틀의 인코딩된 버전이 관련 연관된 전송 버퍼 제약들을 준수하는 경우, 각각의 프레임을 인코딩하기 위해 사용되는 비트 수의 변동이 제한되고 엔드포인트 디바이스가 미디어 타이틀을 적절하게 버퍼링하고 재생하는 것이 더 가능해질 것이다.
그러나, 미디어 타이틀의 인코딩된 버전이 관련 전송 버퍼 제약들을 준수하지 않는 경우, 각각의 프레임을 인코딩하는 데 사용되는 인코딩된 비트들의 수의 변동으로 인해, 전송 버퍼가 오버플로 또는 언더플로될 수 있다. 전송 버퍼의 오버플로들 및 언더플로들은, 그러한 인코딩된 미디어 타이틀들이 재생을 위해 엔드포인트 디바이스들에 스트리밍될 때 시청 경험을 방해하는 프리즈 프레임 및 프리즈 드롭과 같은 재생 중단들을 야기할 수 있다.
개별 서브시퀀스들의 인코딩
종래의 기술들에 비해 엔드포인트 디바이스에 미디어 타이틀을 스트리밍하는 동안의 시청 경험의 품질을 포괄적으로 증가시키기 위해, 시스템(100)은 제한 없이, 서브시퀀스-기반 인코딩 서브시스템(120)을 포함한다. 서브시퀀스-기반 인코딩 서브시스템(120)은 컴퓨팅 인스턴스(110(0))의 메모리(116)에 상주하고 컴퓨팅 인스턴스(110(0))의 프로세서(112)에서 실행된다.
서브시퀀스-기반 인코딩 서브시스템(120)은 전송 버퍼 제약(170)에 기초하여 최적화된 인코딩된 미디어 시퀀스(180)를 생성한다. 전송 버퍼 제약(170)은 제한 없이, 전송 레이트(172), 버퍼 크기(174), 및 제약 유형(176)을 포함한다. 전송 레이트(172)는 인코딩된 비트들이 엔드포인트 디바이스에 전송되는 레이트를 지정한다. 버퍼 크기(174)는 엔드포인트 디바이스에 연관된 전송 버퍼의 최소 크기를 지정한다. 제약 유형(176)은 스트리밍 동안 인코딩된 비트들이 전송 및/또는 저장되는 방법을 지정한다. 대안적인 실시예들에서, 시스템(100)은 임의의 기술적으로 실현가능한 방식으로 지정된 임의의 수 및 유형의 전송 버퍼 제약들(170)을 포함할 수 있다. 일부 그러한 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 모든 전송 버퍼 제약들(170)에 기초하여, 인코딩된 미디어 시퀀스(180)를 생성한다.
하나의 공통 제약 유형(176)은 일정 비트 레이트(CBR) 비디오 버퍼 검증기(VBV) 제약이다. CBR VBV 제약은 인코딩된 비트들을 전송 레이트(172)에서 최소 버퍼 크기(174)의 전송 버퍼로 연속적으로 전송할 것을 지정한다. 결과적으로, 전송 버퍼가 가득 차면, 엔드포인트 디바이스는 전송된 인코딩된 비트들 중 일부를 저장할 수 없다. 본 기술분야의 통상의 기술자가 인식하는 바와 같이, CBR VBV 제약은 통상적으로 방송 텔레비전에서 사용되는 것들과 같은 일정 대역폭 채널을 통해 스트리밍될 미디어 타이틀의 인코딩된 버전에 대한 요건이다.
다른 공통 제약 유형(176)은 가변 비트 레이트(VBR) VBV 제약이다. VBR VBV 제약은 인코딩된 비트들을 전송 레이트(172)에서 최소 버퍼 크기(174)의 전송 버퍼에 조건부 전송하는 것을 지정한다. 전송 버퍼가 가득 차지 않은 경우, 인코딩된 비트들의 전송이 진행된다. 그러나, 전송 버퍼가 가득 차면, 전송 버퍼가 더 이상 가득 차 있지 않을 때까지 인코딩된 비트들의 전송이 일시중지된다. 광 디스크 저장소를 포함하는 일부 엔드포인트 디바이스들(예를 들어, 블루레이 플레이어)은 미디어 타이틀의 끊김없는 재생(seamless playback)을 보장하기 위해 미디어 타이틀의 인코딩된 버전이 VBR VBV 제약을 준수할 것을 요구한다.
특히, 적응형 스트리밍에 사용되는 일부 하드웨어 기반 엔드포인트 디바이스들은 전송 버퍼들의 사전 버퍼링 능력들의 레벨의 제한으로 인해, 미디어 타이틀들의 인코딩된 버전들이 VBV 제약을 준수할 것을 요구한다. 적응형 스트리밍에서, 엔드포인트 디바이스는 미디어 타이틀의 재생 동안 미디어 타이틀의 상이한 인코딩된 버전들 간에 전환할 수 있다. 적응 스트리밍을 용이하게 하기 위해, 여기에 설명된 임의의 수의 기술들은 복수의 최적화된 인코딩된 미디어 시퀀스(160)를 생성하기 위해, 상이한 전송 버퍼 제약들(170)에 기초하여 복수 회 실행될 수 있다. 대안적인 실시예들에서, 서브시퀀스-기반 인코딩 서브시스템(120)은 전송 버퍼 제약들(170)의 세트에 기초하여, 최적화된 인코딩된 미디어 시퀀스들(180)의 세트를 생성하도록 수정될 수 있다. 이러한 실시예들에서, 각각의 최적화된 인코딩된 미디어 시퀀스(180(x))는 상이한 전송 버퍼 제약(170(x))을 준수한다.
도시된 바와 같이, 서브시퀀스-기반 인코딩 서브시스템(120)은 제한 없이, 서브시퀀스 분석기(130) 및 버퍼-기반 인코딩 애플리케이션(140)을 포함한다. 서브시퀀스 분석기(130)는 소스 미디어 시퀀스(122)를 임의의 수의 서브시퀀스(132(0)-132(S))로 분할한다. 서브시퀀스들(132)은 소스 미디어 시퀀스(122)에 함께 걸쳐 있는 프레임들의 비중첩 연속 세트들이다. 프레임들의 각각의 세트는 픽쳐들의 그룹(group of picture)(GOP), 프레임들의 시퀀스, 복수의 프레임 시퀀스 등을 포함하는 다양한 상이한 구성들을 표현할 수 있다. 예를 들어, 일부 실시예들에서, 각각의 서브시퀀스(132)는 소스 미디어 시퀀스(122)에 포함된 상이한 샷이다. 여기에서 언급될 때, "샷"은 통상적으로 유사한 공간-시간적 속성들을 가지며, 중단되지 않은 기간 동안 실행되는 프레임들의 시퀀스이다.
소스 미디어 시퀀스(122)를 수신하면, 서브시퀀스 분석기(130)는 임의의 수 및 유형의 기준에 기초하여 서브시퀀스들(132)을 결정하기 위해, 소스 미디어 시퀀스(122)에 대해 임의의 수의 분석 동작을 수행한다. 예를 들어, 다양한 실시예들에서, 서브시퀀스 분석기(130)는 일관성 메트릭이 지정된 범위 내에 있는 프레임들의 세트들을 식별하도록 구성될 수 있다. 다른 실시예들에서, 그리고 도 1에 도시된 바와 같이, 서브시퀀스 분석기(130)는 임의의 수의 샷 변경들(134)에 기초하여 서브시퀀스들(132)을 결정한다.
보다 구체적으로, 서브시퀀스 분석기(130)는 소스 미디어 시퀀스(122)를 클라우드(160)에 상주하는 샷 검출기(124)에 전송한다. 샷 검출기(124)는 샷 변경들(134)을 식별하기 위해 소스 미디어 시퀀스(122)에 기초하여 임의의 수의 샷 검출 알고리즘들을 실행한다. 샷 검출 알고리즘들의 일부 예들은 제한 없이, 다중-스케일 절대차 합계 알고리즘(multi-scale sum-of-absolute-differences algorithm), 모션 보상 잔여 에너지 알고리즘(motion-compensated residual energy algorithm), 차이 히스토그램 알고리즘(histogram of differences algorithm), 히스토그램 차이 알고리즘(difference of histograms algorithm) 등을 포함한다. 샷 변경들(134) 각각은 상이한 샷 쌍 사이의 경계를 지정한다. 다음으로, 샷 검출기(124)는 샷 변경들(134)을 서브시퀀스 분석기(130)에 전송한다. 후속하여, 서브시퀀스 분석기(130)는 서브시퀀스들(132)을 결정하기 위해 샷 변경들(134)에 기초하여 소스 미디어 시퀀스(122)에 대한 분할 동작들을 수행한다.
일부 실시예들에서, 서브시퀀스 분석기(130) 및/또는 서브시퀀스-기반 인코딩 서브시스템(120)은 서브시퀀스들(134)을 생성하는 것의 일부로서 임의의 수의 유형의 추가 동작들을 수행할 수 있다. 예를 들어, 다양한 실시예들에서, 서브시퀀스 분석기(130)는 소스 미디어 시퀀스(122)로부터 이질적인 픽셀들을 제거한다. 예를 들어, 서브시퀀스 분석기(130)는 소스 미디어 시퀀스(122)의 경계 섹션들을 따르는 블랙 바(black bar)에 포함된 픽셀들을 제거할 수 있다.
다양한 실시예들에서, 서브시퀀스-기반 인코딩 서브시스템(120)은 각각의 서브시퀀스(132)의 초기 프레임이 인코딩 동작들 동안의 키 프레임으로서 인코딩되는 것을 보장한다. 일반적으로, 인코딩된 미디어 시퀀스에 포함된 동일한 서브시퀀스(132)로부터의 "키 프레임" 및 모든 후속 프레임들은 인코딩된 미디어 시퀀스에 포함된 임의의 진행 프레임들과 독립적으로 디코딩된다.
서브시퀀스-기반 인코딩 서브시스템(120)은 상이한 서브시퀀스들(132)의 상이한 초기 프레임들이 임의의 기술적으로 실현가능한 방식으로 키 프레임들로서 인코딩되는 것을 보장할 수 있다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 미디어 콘텐츠를 인코딩할 때 키 프레임 위치 목록(도시되지 않음)에 기초하여 프레임들을 키 프레임들로서 인코딩하도록 인코딩 애플리케이션(162)을 구성한다. 다른 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140) 및/또는 인코딩 애플리케이션(162)은 미디어 콘텐츠를 인코딩할 때 상이한 서브시퀀스들(132)의 상이한 초기 프레임을 키 프레임들로서 인코딩하기 위해 임의의 수의 인코딩 동작을 수행할 수 있다.
본 기술분야의 통상의 기술자가 인식하는 바와 같이, 재생 동안, 소스 미디어 시퀀스(122)에 연관된 미디어 타이틀은 임의의 수의 관련 기준에 기초하여 시청 경험을 최적화하기 위해, 정렬된 키 프레임들에서 상이한 최적화된 인코딩된 미디어 시퀀스들(180)의 디코딩된 버전들 간에 전환가능할 수 있다. 관련 기준의 예들은 현재 접속 대역폭, 현재 접속 대기 시간, 다가오는 서브시퀀스(132)의 콘텐츠 등을 포함한다.
도시된 바와 같이, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스들(132) 및 전송 버퍼 제약(170)에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 생성한다. 최적화된 인코딩된 미디어 시퀀스(180)는 제한 없이, 서브시퀀스들(132(0)-132(S))에 각각 연관되는 S+1개의 인코딩된 서브시퀀스(도 1에 도시되지 않음)를 포함한다. 인코딩된 서브시퀀스들 각각은 연관된 서브시퀀스(132)에 포함된 미디어 콘텐츠로부터 도출되는 인코딩된 미디어 콘텐츠를 포함한다.
도 2와 관련하여 더 상세히 설명되는 바와 같이, 서브시퀀스들(132) 각각에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩 포인트 목록에 기초하여 복수의 인코딩된 서브시퀀스를 생성한다. 인코딩 포인트 목록은 임의의 수의 인코딩 포인트를 포함할 수 있다. 각각의 인코딩 포인트는 제한 없이, 해상도 및 레이트 제어 값을 포함한다. 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 인코딩된 서브시퀀스들을 생성할 수 있다. 또한, 일반적으로, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 주어진 해상도 및 주어진 레이트 제어 값에 기초하여 비디오 콘텐츠로부터 도출되는 인코딩된 비디오 콘텐츠를 생성할 수 있다.
예를 들어, 일부 실시예들에서, 주어진 서브시퀀스(132) 및 주어진 인코딩 포인트에 대응하는 인코딩된 서브시퀀스를 생성하기 위해, 버퍼-기반 인코딩 애플리케이션(140)은 샘플링된 서브시퀀스를 생성하기 위해 해상도에 기초하여 서브시퀀스에 대한 샘플링 동작들을 수행한다. 다음으로, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스를 생성하기 위해 레이트 제어 값에서 샘플링된 서브시퀀스를 인코딩하도록 인코딩 애플리케이션(162)을 구성한다.
도시된 바와 같이, 인코딩 애플리케이션(162)은 클라우드(160)에 상주하고, 하나 이상의 병렬 인코더(164)를 통해 인코딩 동작들을 효율적으로 수행하도록 구성된다. 병렬 인코더들(164) 각각은 임의의 수의 컴퓨팅 인스턴스(110)를 포함할 수 있다. 대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩 동작들을 수행할 수 있고, 시스템(100)은 인코딩 애플리케이션(162)을 생략할 수 있다. 동일 또는 다른 실시예들에서, 시스템(100)은 샘플링 애플리케이션을 포함할 수 있고, 버퍼-기반 인코딩 애플리케이션(140)은 샘플링 동작들을 수행하도록 샘플링 애플리케이션을 구성할 수 있다.
다양한 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 조합으로, 그리고 임의의 기술적으로 실현가능한 방식으로, 임의의 입도 레벨에서(예를 들어, 프레임당, 서브시퀀스(132) 당, 소스 미디어 시퀀스(122) 당 등) 샘플링 동작들 및 인코딩 동작들을 수행할 수 있다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 샘플링된 미디어 시퀀스를 생성하기 위해, 주어진 해상도에 기초하여 소스 미디어 시퀀스(122)에 대한 샘플링 동작들을 수행할 수 있다. 후속하여, 해상도에 연관된 각각의 인코딩 포인트에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 연관된 레이트 제어 값에서 연관된 서브시퀀스(132)에 대응하는 샘플링된 미디어 콘텐츠를 인코딩하도록 인코딩 애플리케이션(162)을 구성할 수 있다.
각각의 인코딩된 서브시퀀스에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 비트레이트, 품질 점수 및 왜곡 레벨을 계산한다. 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 주어진 인코딩된 서브시퀀스에 대한 비트레이트, 품질 점수, 및 왜곡 레벨을 계산할 수 있다. 다음으로, 각각의 인코딩된 서브시퀀스에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스 인코드 포인트(도 1에 도시되지 않음)를 생성한다. 도 4와 관련하여 더 상세하게 설명된 바와 같이, 각각의 서브시퀀스 인코드 포인트는 제한 없이, 인코딩된 서브시퀀스, 연관된 인코딩 포인트, 인코딩된 서브시퀀스의 비트레이트, 인코딩된 서브시퀀스의 품질 점수, 및 인코딩된 서브시퀀스의 왜곡 레벨을 포함한다.
서브시퀀스들 각각(132(x))에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스(132(x))에 연관된 서브시퀀스 인코드 포인트들에 기초하여 상이한 컨벡스 헐을 생성한다. 이러한 방식으로, 주어진 서브시퀀스(132(x))에 연관된 컨벡스 헐은 서브시퀀스(132(x))에 연관된 임의의 수의 서브시퀀스 인코드 포인트를 포함한다. 일반적으로, 주어진 서브시퀀스(132)에 대해, 연관된 컨벡스 헐에 포함된 서브시퀀스 인코드 포인트들은 상이한 왜곡 레벨들에 대해 비트레이트를 최소화한다.
도 2 및 도 7과 관련하여 더 상세하게 설명된 바와 같이, 버퍼-기반 인코딩 애플리케이션(140)은 미디어 인코드 포인트들의 상이한 연관된 글로벌 컨벡스 헐들을 생성하기 위해, 시간적 재생 순서로 컨벡스 헐들 각각을 반복적으로 처리한다. 설명의 목적으로만, "재생 순서"는 엔드포인트 디바이스가 서브시퀀스들(132)을 재생하는 순서 - 서브시퀀스(132(0))로부터 서브시퀀스(132(S))까지 - 에 대응한다.
i번째 글로벌 컨벡스 헐 내의 각각의 미디어 인코드 포인트는 0번째 서브시퀀스로부터 i번째 서브시퀀스까지에 걸쳐 있는 미디어 타이틀의 부분에 연관된다. 특히, 각각의 미디어 인코드 포인트는 상이한 인코딩된 미디어 시퀀스에 연관된다. 각각의 인코딩된 미디어 시퀀스는 제한 없이, (i+1)개의 인코딩된 서브시퀀스를 포함하며, 여기서 각각의 인코딩된 서브시퀀스는 서브시퀀스들(132(0)-132(i))에 연관된 컨벡스 헐들 중 상이한 것에 포함된다. 중요하게도, i번째 글로벌 컨벡스 헐에 포함된 미디어 인코드 포인트들 각각은 전송 버퍼 제약(170)에 종속하는 상이한 전체 왜곡 레벨에 대한 평균 비트레이트를 최소화한다.
버퍼-기반 인코딩 애플리케이션(140)은 재생 순서에서 마지막으로 발생하는 서브시퀀스(132(S))에 연관된 글로벌 컨벡스 헐(global convex hull)에 기초하여 최적화된 인코딩된 미디어 시퀀스(180)를 결정한다. 서브시퀀스(132(S))에 연관된 글로벌 컨벡스 헐은 또한 본 명세서에서 "최종" 컨벡스 헐로 지칭된다. 버퍼-기반 인코딩 애플리케이션(140)은 최종 글로벌 컨벡스 헐에 연관된 인코딩된 미디어 시퀀스의 평균 비트레이트들을 비교하고, 최적화된 인코딩된 미디어 시퀀스(180)를 가장 높은 평균 비트레이트를 갖는 인코딩된 미디어 시퀀스와 동일하게 설정한다.
본 기술분야의 통상의 기술자가 인식하는 바와 같이, 최적화된 인코딩된 미디어 시퀀스(180)는 최종 글로벌 컨벡스 헐에 연관된 임의의 다른 인코딩된 미디어 시퀀스보다 높은 전체 품질 레벨을 갖는다. 결과적으로, 최적화된 미디어 시퀀스(180)는 전송 버퍼 제약(170)을 준수하는 동시에 엔드포인트 디바이스에서 미디어 타이틀을 재생하는 동안 전체 시각적 품질을 최적화하는, 미디어 타이틀의 인코딩된 버전이다. 대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 최종 글로벌 컨벡스 헐, 및 임의의 수 및 유형의 미디어 메트릭에 연관된 임의의 수 및 유형의 기준에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 선택할 수 있다.
본 명세서에서 언급되는 바와 같이, 미디어 메트릭은 인코딩된 비디오 콘텐츠, 비디오 콘텐츠, 오디오 콘텐츠, 및/또는 인코딩된 오디오 콘텐츠의 하나 이상의 속성에 대응하는 임의의 측정일 수 있다. 미디어 메트릭의 일부 예들은 제한 없이, 비트레이트, 왜곡 메트릭, 오디오 품질 메트릭, 시각적 품질 메트릭 등을 포함한다. 시각적 품질 메트릭의 예는 제한 없이, 몇몇을 들자면 피크 신호-대-잡음비(PSNR), 선형 비디오 다중 방법 평가 융합(video multimethod assessment fusion)(VMAF) 메트릭 및 고조파 VMAF(harmonic VMAF)(VMAFh)를 포함한다.
도 2와 관련하여 더 상세히 설명된 바와 같이, 버퍼-기반 인코딩 애플리케이션(140)은 최적화된 인코딩된 미디어 시퀀스(180) 및 전송 버퍼 제약(170)에 기초하여, 최적화된 사전 버퍼링 시간(182)을 임의로(optionally) 계산한다. 일반적으로, 스트리밍 동안, 사전 버퍼링 시간은 미디어 타이틀의 스트리밍이 시작된 후 미디어 타이틀의 재생을 시작하기 전에 엔드포인트 디바이스가 기다리는 총 시간량을 지정한다. 사전 버퍼링 시간 동안, 전송 버퍼는 인코딩된 비트들을 저장하고, 결과적으로 엔드포인트 디바이스가 미디어 타이틀의 재생을 시작할 때, 전송 버퍼는 사전 버퍼링 시간에 의해 결정되는 초기 점유율을 갖는다.
마지막으로, 버퍼-기반 인코딩 애플리케이션(140)은 최적화된 인코딩된 미디어 시퀀스(180), 및 임의로, 최적화된 사전 버퍼링 시간(182)을 엔드포인트 디바이스들로의 배포를 위해 CDN(190)을 전송한다. 대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 최적화된 사전 버퍼링 시간(182), 최적화된 인코딩된 미디어 시퀀스(180), 및/또는 임의의 수의 인코딩된 서브시퀀스가 엔드포인트 디바이스들에 전달되게 할 수 있다. 동일 또는 다른 실시예들에서, 서브시퀀스-기반 인코딩 애플리케이션에 연관된 기능의 임의의 양 및 유형은 임의의 기술적으로 실현가능한 방식으로 임의의 수의 컴퓨팅 인스턴스(110) 및/또는 임의의 수의 엔드포인트 디바이스에서 구현되거나 이에 걸쳐 분산될 수 있다.
설명의 목적으로만, 본 명세서에 설명된 기술들은 비디오 인코딩의 맥락에서 설명된다. 그러나, 본 기술분야의 통상의 기술자가 인식하는 바와 같이, 여기에 설명된 기술들은 비디오 인코딩을 대신하여 또는 비디오 인코딩에 추가하여 오디오 인코딩을 최적화하도록 수정될 수 있다. 예를 들어, 일부 실시예들에서, 오디오 트랙은 "오디오 장면들"로 분할될 수 있다. 오디오 장면들은 오디오 렌더링 하드웨어를 통해 샘플링될 수 있다. 샘플링된 오디오 장면들은 양자화 매개변수 및/또는 비트레이트 세팅을 통해 구성된 오디오 인코더를 통해 인코딩될 수 있다. 인코딩된 오디오 장면들의 품질 점수들은 오디오 품질의 지각 평가(Perceptual Evaluation of Audio Quality)(PEAQ) 알고리즘과 같은 지각 오디오 품질 메트릭을 통해 계산될 수 있다. 특히, 오디오 인코더, 임의의 수의 연관된 구성 매개변수, 해상도 및/또는 레이트 제어 값은 임의의 조합으로 본 명세서에 설명된 기술들 중 임의의 것에 기초하여 각각의 오디오 장면에 대해 최적화될 수 있다.
또한, 본 명세서에 설명된 기술들은 미디어 스트리밍의 맥락에서 설명되지만, 본 명세서에 설명된 기술들은 임의의 유형의 미디어 소비에 대한 인코딩을 최적화하도록 수정될 수 있다. 예를 들어, 기술들은 온라인 비디오 게임, 화면 콘텐츠 공유, 양방향 화상 회의, 전자 통신 등에 대한 인코딩을 최적화하도록 변경될 수 있다.
본 명세서에 기술된 기술들은 제한적이라기보다는 예시적이며, 본 발명의 더 넓은 취지 및 범위를 벗어나지 않고 변경될 수 있음을 주목한다. 본 기술분야의 통상의 기술자에게는, 설명된 실시예들의 범위 및 취지를 벗어나지 않고서, 서브시퀀스-기반 인코딩 서브시스템(120), 서브시퀀스 분석기(130), 버퍼-기반 인코딩 애플리케이션(140), 샷 검출기(124), 인코딩 애플리케이션(162), 및 콘텐츠 전달 네트워크(190)에 의해 제공되는 기능에 대한 많은 수정 및 변형이 명백할 것이다. 일반적으로, 본 명세서에 개략적으로 설명된 기술들은 임의의 기술적으로 실현가능한 방식으로, 개별적으로 인코딩된 서브시퀀스들, 및 임의의 수 및 유형의 전송 버퍼 제약에 기초하여, 인코딩된 미디어 시퀀스를 생성하는 데 적용가능할 수 있다.
본 명세서에 도시된 시스템(100)은 예시적이며 변형 및 수정이 가능하다는 것이 이해될 것이다. 예를 들어, 본 명세서에 기술된 바와 같은 서브시퀀스-기반 인코딩 서브시스템(120), 서브시퀀스 분석기(130), 버퍼-기반 인코딩 애플리케이션(140), 샷 검출기(124), 인코딩 애플리케이션(162), 및 콘텐츠 전달 네트워크(190)에 의해 제공되는 기능은 임의의 수의 소프트웨어 애플리케이션(하나 포함), 하드웨어 디바이스(예를 들어, 하드웨어-기반 인코더), 및 시스템(100)의 임의의 수의 컴포넌트로 통합되거나 그들에 걸쳐 분산될 수 있다. 또한, 도 1의 다양한 유닛들 사이의 접속 토폴로지는 원하는 대로 수정될 수 있다.
도 2는 본 발명의 다양한 실시예에 따른 도 1의 버퍼-기반 인코딩 애플리케이션(140)의 더 상세한 도시이다. 도시된 바와 같이, 버퍼-기반 인코딩 애플리케이션(140)은 제한 없이, 인코딩 포인트 목록(210), 서브시퀀스 인코드 세트들(220), 컨벡스 헐 생성기(230), 컨벡스 헐들(240), 서브시퀀스 반복기(250), 글로벌 컨벡스 헐들(260), 및 선택 엔진(290)을 포함한다. 서브시퀀스 인코드 세트들(220)의 수는 서브시퀀스들(132)의 수와 동일하다. 마찬가지로, 컨벡스 헐들(240)의 수는 서브시퀀스들(132)의 수와 동일하다. 일반적으로, 서브시퀀스(132(x))는 서브시퀀스 인코드 세트(220(x)) 및 컨벡스 헐(240(x))에 연관된다.
도시된 바와 같이, 인코딩 포인트 목록(210)은 임의의 수의 인코딩 포인트(212(0)-212(P))를 포함한다. 도 3과 관련하여 더 상세히 설명되는 바와 같이, 인코딩 포인트들(212) 각각은 제한 없이, 해상도 및 레이트 제어 값을 포함한다. 대안적인 실시예들에서, 인코딩 포인트들(212) 각각은 임의의 기술적으로 실현가능한 방식으로 인코딩 동작들에 영향을 미치는 임의의 수 및 유형의 매개변수를 지정할 수 있다. 예를 들어, 일부 실시예들에서, 인코딩 포인트들(212) 각각은 인코딩 애플리케이션(162)에 연관된 "속도" 구성 매개변수에 대한 값을 지정할 수 있다.
동작에서, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스들(132(0)-132(S)) 및 인코딩 포인트 목록(210)에 기초하여 서브시퀀스 인코드 세트들(220(0)-220(S))을 생성한다. 서브시퀀스 인코드 세트들(220(0)-220(S)) 각각은 제한 없이, 서브시퀀스 인코드 포인트들(222(0)-222(P))을 포함한다. 서브시퀀스 인코드 세트들(220) 각각에 포함된 서브시퀀스 인코드 포인트들(222)의 수는 인코딩 포인트 목록(210)에 포함된 인코딩 포인트들(212)의 수와 동일하다. 도 4와 관련하여 더 상세히 설명된 바와 같이, 서브시퀀스 인코드 포인트들 각각(222(x))은 제한 없이, 연관된 인코딩 포인트(212(x)), 인코딩된 서브시퀀스, 비트레이트, 품질 점수, 및 왜곡 레벨을 포함한다.
서브시퀀스(132(x)) 및 인코딩 포인트(212(y))의 각각의 조합에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 대응하는 서브시퀀스 인코드 포인트(222(y))를 생성하고, 서브시퀀스 인코드 포인트(222(y))를 서브시퀀스 인코드 세트(220(x))에 추가한다. 더 구체적으로, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩 포인트(212(y))에 포함된 해상도 및 레이트 제어 값에서 서브시퀀스(132(x))를 인코딩하도록 인코딩 애플리케이션(162)을 구성한다. 다음으로, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스의 비트레이트, 인코딩된 서브시퀀스의 품질 점수, 및 인코딩된 서브시퀀스의 왜곡 레벨을 계산한다. 결과적으로, 버퍼-기반 인코딩 애플리케이션(140)은 (S+1)×(P+1)개의 상이한 서브시퀀스 인코드 포인트(222)를 생성한다.
대안적인 실시예들에서, 서브시퀀스들(132(x)) 각각은 상이한 인코딩 포인트 목록(210(x))에 연관될 수 있고, 인코딩 포인트 목록(210(x)) 내의 인코딩 포인트들(212)의 수는 다른 인코딩 포인트 목록들(210) 중 임의의 것에서의 인코딩 포인트들(212)의 수와 상이할 수 있다. 상보적인 방식으로, 서브시퀀스 인코드 세트(220(x))에 포함된 서브시퀀스 인코드 포인트들(222)의 수는 다른 서브시퀀스 인코드 세트들(220) 중 임의의 것에 포함된 서브시퀀스 인코드 포인트들(222)의 수와 상이할 수 있다.
버퍼-기반 인코딩 애플리케이션(140)은 각각의 인코딩된 서브시퀀스를 생성할 수 있고, 임의의 기술적으로 실현가능한 방식으로, 연관된 비트레이트, 연관된 품질 점수, 및 연관된 왜곡 레벨을 결정할 수 있다. 예를 들어, 일부 실시예들에서, 서브시퀀스(132(x)) 및 인코딩 포인트(212(y)) 둘 다에 연관된 인코딩된 서브시퀀스를 생성하기 위해, 버퍼-기반 인코딩 애플리케이션(140)은 먼저, 샘플링된 서브시퀀스를 생성하기 위해 샘플링 동작들을 수행한다. 보다 구체적으로, 버퍼-기반 인코딩 애플리케이션(140)은 샘플링된 서브시퀀스를 생성하기 위해, 인코딩 포인트(212(y))에 포함된 해상도에 기초하여 서브시퀀스(132(x))를 샘플링한다. 후속하여, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩 애플리케이션(162)으로 하여금 인코딩된 서브시퀀스를 생성하기 위해 인코딩 포인트(212(y))에 포함된 레이트 제어 값을 사용하여 샘플링된 서브시퀀스를 인코딩하게 한다.
일부 실시예들에서, 인코딩된 서브시퀀스의 품질 점수를 결정하기 위해, 버퍼-기반 인코딩 애플리케이션(140)은 디코딩된 서브시퀀스를 생성하기 위해 인코딩된 서브시퀀스를 디코딩한다. 다음으로, 버퍼-기반 인코딩 애플리케이션(140)은 디코딩된 서브시퀀스를 목표 해상도로 재샘플링(즉, 업샘플링 또는 다운샘플링)하여 엔드포인트 디바이스들의 클래스의 디스플레이 특성에 관련된 재구성된 서브시퀀스를 생성한다.
대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 수의 해상도에 대해 임의의 수의 품질 점수를 계산할 수 있다. 예를 들어, 특정 비디오는 3840×2160 해상도로 전달되지만, 다수의 디스플레이에 의해 1920×1080 해상도로 소비되도록 의도될 수 있다. 다른 종류의 엔드포인트 디바이스들, 예를 들어 랩톱 컴퓨터는 동일한 비디오를 1280×720 해상도에서 디스플레이할 것으로 예상된다. 또 다른 종류의 엔드포인트 디바이스들, 예를 들어 태블릿 또는 스마트폰 디바이스들은 동일한 비디오를 960×540 해상도로 디스플레이할 것으로 예상된다. 버퍼-기반 인코딩 애플리케이션(140)은 대응하여, 상이한 클래스들의 엔드포인트 디바이스 중 하나를 고려할 때 품질을 평가하기 위해, 디코딩된 서브시퀀스를 이러한 모든 목표 해상도로 업샘플링할 수 있다.
다음으로, 버퍼-기반 인코딩 애플리케이션(140)은 품질 메트릭(QM)에 대한 품질 점수를 생성하기 위해, 재구성된 서브시퀀스를 분석한다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 연관된 재구성된 서브시퀀스에 기초하여, 각각의 인코딩된 서브시퀀스에 대한 VMAF 점수를 생성하기 위해 VMAF(또는 고조파 VMAF) 알고리즘을 구현한다. VMAF 점수들과 같은 다수의 비디오 품질 메트릭이 상이한 목표 해상도들에서 계산될 수 있지만, 상이한 해상도들에 연관된 인코딩된 서브시퀀스들 사이에서 품질을 비교할 때, 디코딩 후에, 애플리케이션들은 재샘플링을 위해 동일한 목표 해상도를 사용해야 한다는 점이 분명할 것이다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 재구성된 서브시퀀스를 생성하기 위해, 디코딩된 서브시퀀스를 1920×1080로 재샘플링한다. 후속하여, 버퍼-기반 인코딩 애플리케이션(140)은 연관된 재구성된 서브시퀀스에 기초하여, 인코딩된 서브시퀀스에 대한 품질 점수를 계산한다.
버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로 비트레이트를 생성할 수 있다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스에 포함된 인코딩된 비트들의 총 수를 연관된 서브시퀀스(132)의 길이로 나눌 수 있다. 동일하거나 다른 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 품질 점수, 및 품질 점수들을 왜곡 레벨들로 변환하기 위한 임의의 기술적으로 실현가능한 기술에 기초하여 왜곡 레벨을 계산할 수 있다. 예를 들어, 버퍼-기반 인코딩 애플리케이션(140)은 품질 점수를 반전시켜 왜곡 레벨을 결정할 수 있다. 다른 예에서, 버퍼-기반 인코딩 애플리케이션(140)은 왜곡 레벨을 결정하기 위해 상수 값으로부터 품질 점수를 감산할 수 있다.
서브시퀀스들(132(x)) 각각에 대해, 컨벡스 헐 생성기(230)는 서브시퀀스 인코드 세트(220(x))에 기초하여 컨벡스 헐(240(x))을 생성한다. 컨벡스 헐들 각각(240(x))은 제한 없이, 주어진 왜곡 레벨에 대한 비트레이트를 최소화하는 서브시퀀스 인코드 세트(220(x))에 포함된 서브시퀀스 인코드 포인트들(222)을 포함한다. 컨벡스 헐 생성기(230)가 서브시퀀스 인코드 세트(220(0))에 기초하여 컨벡스 헐(240(0))을 생성하는 방법의 상세한 예가 도 5와 관련하여 설명된다.
서브시퀀스 반복기(250)는 미디어 타이틀에 대한 재생 순서로 컨벡스 헐들(240)을 순차적으로 처리한다. 보다 구체적으로, 0에서 시작하고 S에서 끝나는 인덱스 i에 대해, 서브시퀀스 반복기(250(i))의 인스턴스는 서브시퀀스(132(i))에 연관된 컨벡스 헐(240(i))을 처리한다. 도 7과 관련하여 더 상세하게 설명된 바와 같이, 서브시퀀스 반복기(250(i))는 글로벌 컨벡스 헐(260(i-1)) 및 컨벡스 헐(240(i))에 기초하여 글로벌 컨벡스 헐(260(i))을 생성한다. 글로벌 컨벡스 헐(260(i))은 서브시퀀스들(132(0)-132(i))에 연관되고, 제한 없이, 임의의 수의 미디어 인코드 포인트(270)를 포함한다. 글로벌 컨벡스 헐(260(i))에 포함된 미디어 인코드 포인트들(270)의 수는 다른 글로벌 컨벡스 헐들(260) 중 임의의 것에서 미디어 인코드 포인트들(270)의 수와 다를 수 있다.
도 6과 관련하여 더 상세하게 설명된 바와 같이, 미디어 인코드 포인트들(270) 각각은 제한 없이, 서브시퀀스 인코드 목록, 인코딩된 미디어 시퀀스, 평균 비트레이트, 전체 왜곡 레벨, 현재 버퍼 점유율, 최소 버퍼 점유율 및 최대 버퍼 점유율을 포함한다. 글로벌 컨벡스 헐(260(i))에 포함된 미디어 인코드 포인트들(270) 각각에 대해, 서브시퀀스 인코드 목록은 (i+1)개의 서브시퀀스 인코드 포인트를 지정한다. 보다 정확하게는, 서브시퀀스 인코드 목록은 서브시퀀스들(132(0)-132(i)) 각각에 대해 상이한 서브시퀀스 인코드 포인트를 지정한다. 인코딩된 미디어 시퀀스는 제한 없이, 서브시퀀스 인코드 목록에 지정된 (i+1)개의 서브시퀀스 인코드 포인트에 포함된 (i+1)개의 인코딩된 서브시퀀스를 포함한다. 평균 비트레이트 및 전체 왜곡 레벨은 인코딩된 미디어 시퀀스의 비트레이트와 인코딩된 미디어 시퀀스의 왜곡 레벨을 각각 지정한다.
현재 버퍼 점유율, 최소 버퍼 점유율, 및 최대 버퍼 점유율은 전송 버퍼 제약(170)에 따라 인코딩된 미디어 시퀀스를 예시적인 엔드포인트 디바이스에 스트리밍할 때의 예시적인 전송 버퍼의 특성을 지정한다. 현재 버퍼 점유율은 인코딩된 미디어 시퀀스가 예시적인 엔드포인트 디바이스에서의 재생을 위해 디코딩될 때 예시적인 전송 버퍼에 저장되는 비트들의 수를 지정한다. 최소 버퍼 점유율 및 최대 버퍼 점유율은 인코딩된 미디어 시퀀스를 예시적인 엔드포인트 디바이스에 스트리밍하는 동안 예시적인 전송 버퍼에 저장되는 비트들의 최소 및 최대 수를 각각 지정한다.
도시되지는 않았지만, 글로벌 컨벡스 헐(260(0))을 생성하기 위해, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스 반복기(250(0))를 초기화한다. 보다 정확하게는, 버퍼-기반 인코딩 애플리케이션(140)은 단일 초기화 미디어 인코드 포인트(270)를 포함하는 초기 글로벌 컨벡스 헐(260(-1))을 생성한다. 버퍼-기반 인코딩 애플리케이션(140)은 초기화 미디어 인코드 포인트(270)에 포함된 서브시퀀스 인코드 목록을 비어 있는 세트와 동일하게, 그리고 초기화 미디어 인코드 포인트(270)에 포함된 인코딩된 서브시퀀스를 NULL과 동일하게 설정한다. 버퍼-기반 인코딩 애플리케이션(140)은 초기화 미디어 인코드 포인트(270)에 포함된 현재 버퍼 점유율, 최소 버퍼 점유율, 및 최대 버퍼 점유율 각각을 버퍼 크기(174)와 동일하게 설정한다. 대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 서브시퀀스 반복기(250(0))를 임의의 기술적으로 실현가능한 모든 방식으로 초기화할 수 있다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 지정된 사전 버퍼링 시간에 기초하여 서브시퀀스 반복기(250(0))를 초기화할 수 있다.
동작에서, 글로벌 컨벡스 헐(260(i))을 생성하기 위해, 서브시퀀스 반복기(250(i))는 새로운 서브시퀀스 인코드 목록들을 생성하기 위해, 글로벌 컨벡스 헐(260(i-1))에 연관된 서브시퀀스 인코드 목록들 각각을 컨벡스 헐(240(i))에 포함된 서브시퀀스 인코드 포인트들 각각과 결합한다. 따라서, 글로벌 컨벡스 헐(260(i-1))이 N개의 미디어 인코드 포인트(270)를 포함하고, 컨벡스 헐(240(i))이 M개의 서브시퀀스 인코드 포인트를 포함하는 경우, 서브시퀀스 반복기(250(i))는 (N×M)개의 새로운 서브시퀀스 인코드 목록을 생성한다.
각각의 새로운 서브시퀀스 인코드 목록에 대해, 서브시퀀스 반복기(250(i))는 새로운 미디어 인코드 포인트(270)를 생성한다. 보다 정확하게는, 주어진 새로운 서브시퀀스 인코드 목록에 대해, 서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스를 생성하기 위해, 서브시퀀스 인코드 목록에 지정된 서브시퀀스 인코드 포인트들에 포함된 상이한 인코딩된 서브시퀀스들을 집계한다. 서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스에 기초하여 평균 비트레이트 및 전체 왜곡 레벨을 계산한다. 다음으로, 서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스 및 전송 버퍼 제약(170)에 기초하여 현재 버퍼 점유율, 최소 버퍼 점유율, 및 최대 버퍼 점유율을 계산한다. 후속하여, 서브시퀀스 반복기(250(i))는 새로운 서브시퀀스 인코드 목록, 연관된 인코딩된 미디어 시퀀스, 평균 비트레이트, 전체 왜곡 레벨, 현재 버퍼 점유율, 최소 버퍼 점유율, 및 최대 버퍼 점유율을 포함하는 새로운 미디어 인코드 포인트(270)를 생성한다. 서브시퀀스 반복기(250(i))는 새로운 미디어 인코드 포인트(270)를 미디어 인코드 세트(도 2에 도시되지 않음)에 추가한다.
후속하여, 서브시퀀스 반복기(250(i))는 순응하는 미디어 인코드 세트(도 1에 도시되지 않음)를 생성하기 위해, 전송 버퍼 제약(170)에 기초하여 미디어 인코드 세트에 대한 필터링 동작들을 수행한다. 필터링 동작들의 일부로서, 서브시퀀스 반복기(250(i))는 전송 버퍼 제약(170)을 준수하지 않는, 미디어 인코드 세트에 포함된 임의의 미디어 인코드 포인트들(270)을 폐기한다. 다음으로, 서브시퀀스 반복기(250(i))는 글로벌 컨벡스 헐(260(i))을 생성하기 위해, 평균 비트레이트와 전체 시각적 품질 간의 차선의 절충안에 연관된 순응적 미디어 인코드 세트에 포함된 임의의 미디어 인코드 포인트들(270)을 폐기한다.
중요하게도, 서브시퀀스들(132(0)-132(i))을 포함하는 미디어 타이틀의 부분에 대해, 글로벌 컨벡스 헐(260(i))에 포함된 미디어 인코드 포인트들(270) 각각은 전송 버퍼 제약들(170)에 종속되는 상이한 전체 왜곡 레벨에 대한 평균 비트레이트를 최소화한다. 또한, 글로벌 컨벡스 헐(260(i))은 전형적으로 연관된 미디어 인코드 세트보다 훨씬 적은 미디어 인코드 포인트를 포함하기 때문에, 후속 서브시퀀스 미디어 인코드 세트들 각각에 포함된 서브시퀀스 인코드 포인트들의 수가 감소된다. 결과적으로, 후속 글로벌 컨벡스 헐들(260)을 생성하는 데 요구되는 시간이 최적화된다.
예를 들어, 미디어 인코드 세트가 100개의 미디어 인코드 포인트(270)를 포함하고 서브시퀀스 반복기(250(i))가 전송 버퍼 제약(170)에 기초하여 미디어 인코드 포인트들(270) 중 60개를 폐기한다고 가정한다. 또한, 서브시퀀스 반복기(250(i))는 40개의 나머지 미디어 인코드 포인트(270) 중 30개가 평균 비트레이트와 전체 시각적 품질 사이의 차선의 절충안에 연관되어 있다고 결정한다고 가정한다. 결과적인 글로벌 컨벡스 헐(260(i))은 10개의 미디어 인코드 포인트(270)를 포함할 것이다. 후속하여, 서브시퀀스 반복기(250(i+1))는 (10×A)개의 미디어 인코드 포인트(270)를 포함하는 새로운 미디어 인코드 세트를 생성하기 위해, 글로벌 컨벡스 헐(260(i))에 포함된 10개의 미디어 인코드 포인트(270)를 컨벡스 헐(240(i+1))에 포함된 A개의 포인트와 결합할 것이다.
도시된 바와 같이, 선택 엔진(290)은 글로벌 컨벡스 헐(260(S))에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 결정한다. 본 명세서에서 이전에 설명된 바와 같이, 글로벌 컨벡스 헐(260(S))은 모든 서브시퀀스(132(0)-132(S))에 연관된다. 최적화된 미디어 시퀀스(180)를 결정하기 위해, 선택 엔진(290)은 글로벌 컨벡스 헐(260(S))에 포함된 미디어 인코드 포인트들(270)의 평균 비트레이트들을 비교하여 가장 높은 평균 비트레이트를 갖는 최적화된 미디어 인코드 포인트(270)를 결정한다. 다음으로, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 최적화된 미디어 인코드 포인트(270)에 포함된 인코딩된 미디어 시퀀스와 동일하게 설정한다.
본 기술분야의 통상의 기술자가 인식하는 바와 같이, 최적화된 인코딩된 미디어 시퀀스(180)는 글로벌 컨벡스 헐(260(S))에 연관된 임의의 다른 인코딩된 미디어 시퀀스보다 높은 전체 품질 레벨을 갖는다. 결과적으로, 최적화된 미디어 시퀀스(180)는 전송 버퍼 제약(170)을 준수하고 엔드포인트 디바이스에서 미디어 타이틀을 재생하는 동안 전체 시각적 품질을 최적화하는 미디어 타이틀의 인코딩된 버전이다. 대안적인 실시예들에서, 선택 엔진(290)은 임의의 기술적으로 실현가능한 방식으로, 글로벌 컨벡스 헐(260(S)), 및 임의의 수 및 유형의 미디어 메트릭에 연관된 임의의 수 및 유형의 기준에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 선택할 수 있다.
일부 실시예들에서, 서브시퀀스 반복기(250)는 미디어 인코드 포인트들(270)에 포함되는 인코딩된 미디어 시퀀스들을 생성하지 않는다. 각각의 미디어 인코드 포인트(270)에 대해, 서브시퀀스 반복기(250)는 연관된 서브시퀀스 인코드 목록에 기초하여, 연관된 인코딩된 미디어 서브시퀀스의 속성들을 결정한다. 구체적으로, 서브시퀀스 반복기(250)는 서브시퀀스 인코드 목록에 기초하여, 평균 비트레이트, 전체 왜곡 레벨, 현재 버퍼 점유율, 최소 버퍼 점유율 및 최대 버퍼 점유율을 계산한다. 최적화된 미디어 인코드 포인트(270)를 선택한 후, 선택 엔진(290)은 최적화된 미디어 인코드 포인트(270)에 포함된 서브시퀀스 인코드 목록에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 생성한다. 보다 정확하게는, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 생성하기 위해, 최적화된 미디어 인코드 포인트(270)에 포함된 서브시퀀스 인코드 목록에 지정된 상이한 인코딩된 서브시퀀스들을 집계한다. 이러한 방식으로, 각각의 서브시퀀스 인코드 목록은 연관된 인코딩된 미디어 서브시퀀스가 생성되는 방법을 지정하는 "인코딩 레시피"이다.
선택 엔진(290)이 최적화된 인코딩된 미디어 시퀀스(180)를 결정한 후, 선택 엔진(290)은 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되는지를 결정한다. 일반적으로, 사전 버퍼링 시간은 엔드포인트 디바이스가 미디어 타이틀의 재생을 시작하기 전에 저장할 인코딩된 비트들의 총 수를 지정한다. 선택 엔진(290)은 임의의 기술적으로 실현가능한 방식으로, 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되는지를 결정할 수 있다.
예를 들어, 일부 실시예들에서, 제약 유형(176)이 CRB VBV이면, 선택 엔진(290)은 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관된다고 결정한다. 그렇지 않으면, 선택 엔진(290)은 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되지 않는다고 결정한다. 다른 실시예들에서, 선택 엔진(290)은 그래픽 사용자 인터페이스(도시되지 않음)를 통해 수신된 사용자 입력에 기초하여, 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되는지를 결정한다.
선택 엔진(290)이 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관된다고 결정하면, 선택 엔진(290)은 최적화된 미디어 인코드 포인트(270)에 기초하여, 최적화된 사전 버퍼링 시간(182)을 계산한다. 보다 정확하게는, 선택 엔진(290)은 초기 버퍼 점유율을 버퍼 크기(174)와 최적화된 미디어 인코드 포인트(270)에 포함된 최소 버퍼 점유율 사이의 차이와 동일하게 설정한다. 다음으로, 선택 엔진(290)은 최적화된 사전 버퍼링 시간(182)을 초기 버퍼 점유율과 전송 레이트(172)의 비율(quotient)과 동일하게 설정한다. 대안적인 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 최적화된 사전 버퍼링 시간(182) 및/또는 초기 버퍼 점유율을 계산할 수 있다. 다음으로, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)와 함께 엔드포인트 디바이스들에 배포하기 위해 최적화된 사전 버퍼링 시간(182)을 콘텐츠 전달 네트워크(CDN)(190)에 전송한다.
전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되는지에 관계없이, 선택 엔진(290)은 엔드포인트 디바이스들로의 배포를 위해, 최적화된 인코딩된 미디어 시퀀스(180)를 CDN(190)에 전송한다. 다양한 실시예들에서, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스들(180)에 포함된 개별 인코딩된 서브시퀀스들 각각을 식별하도록 구성될 수 있다. 다음으로, 선택 엔진(290)은 엔드포인트 디바이스들로의 배포를 위해, 식별된 인코딩된 서브시퀀스들을 CDN(190)에 전송할 수 있다.
대안적인 실시예들에서, 선택 엔진(290)은 임의의 기술적으로 실현가능한 방식으로, 임의의 수 및 유형의 인코딩된 서브시퀀스들, 구성 매개변수들, 등을 계산하고 CDN(190) 또는 임의의 수의 엔드포인트 디바이스에 전송할 수 있다. 예를 들어, 일부 실시예들에서, 선택 엔진(190)은 최적화된 사전 버퍼링 시간(182) 대신에 초기 버퍼 점유율을 CDN(190)에 전송할 수 있다. 다른 실시예들에서, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 전송할 수 있고, 임의로, 임의의 기술적으로 실현가능한 방식으로 임의의 수의 엔드포인트 디바이스에 최적화된 사전 버퍼링 시간(182)을 전송할 수 있다. 예를 들어, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 엔드포인트 디바이스들에 스트리밍하는 것의 일부로서 시스템 헤더를 통해 사전 버퍼링 시간을 시그널링할 수 있다.
도 3은 본 발명의 다양한 실시예들에 따른 도 2의 인코딩 포인트 목록(210)의 보다 상세한 도시이다. 도시된 바와 같이, 인코딩 포인트 목록(210)은 임의의 수의 인코딩 포인트(212(0)-212(P))를 포함한다. 인코딩 포인트들(212) 각각은 제한 없이, 해상도(314) 및 레이트 제어 값(316)을 포함한다. 레이트 제어 값(316)은 인코딩 동안 비트레이트와 왜곡 레벨 또는 품질 사이의 절충안을 지정하는 임의의 매개변수에 대한 값일 수 있다. 예를 들어, 일부 실시예들에서, 레이트 제어 값(316)은 비디오 콘텐츠를 인코딩할 때 비트레이트 및 왜곡 레벨의 관점에서 단조 수행(monotonic performance)을 허용하는 양자화 매개변수(QP)에 대한 값이다. "QP"가 높을수록, 품질이 저하되는 대신 결과적인 비트레이트가 낮아진다.
설명의 목적으로만, 인코딩 포인트들(212(0)-212(3), 212(P-1), 212(P))에 대한 해상도들(314) 및 레이트 제어 값들(316)은 이탤릭체로 도시된다. 도시된 바와 같이, 인코딩 포인트(212(0))는 640×360의 해상도(314) 및 레이트 제어 값(316) QP=51을 포함한다. 인코딩 포인트(212(1))는 960×540의 해상도(314) 및 레이트 제어 값(316) QP=51을 포함한다. 인코딩 포인트(212(2))는 1280×720의 해상도(314) 및 레이트 제어 값(316) QP=51을 포함한다. 인코딩 포인트(212(3))는 1920×1080의 해상도(314) 및 레이트 제어 값(316) QP=51을 포함한다. 인코딩 포인트(212(P-1))는 1280×720의 해상도(314) 및 레이트 제어 값(316) QP=0을 포함한다. 인코딩 포인트(212(P))는 1920x1080의 해상도(314) 및 레이트 제어 값(316) QP=0을 포함한다.
도시된 예시적인 인코딩 포인트들(212)이 도시하는 바와 같이, 해상도(314) 및 레이트 제어 값(316)의 임의의 조합은 임의의 2개의 인코딩 포인트(212) 사이에서 상이할 수 있다. 일반적으로, 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로 인코딩 목록(210)을 취득하거나 생성할 수 있다. 예를 들어, 일부 실시예들에서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩 애플리케이션(162)에 의해 허용되는 모든 레이트 제어 값(316) 및 8개의 해상도(314)의 순열들에 기초하여 인코딩 목록(210)을 생성할 수 있다. 유리하게는, 광범위하게 다양한 인코딩 포인트들(212)로 인해, 버퍼-기반 인코딩 애플리케이션(140)은 각각의 서브시퀀스(132)에 대해 광범위하게 다양한 상이한 인코딩된 서브시퀀스들을 생성한다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 2의 서브시퀀스 인코드 세트들(220) 중 하나의 더 상세한 도시이다. 서브시퀀스 인코드 세트(220(0))는 서브시퀀스(132(0))에 연관된다. 도시된 바와 같이, 서브시퀀스 인코드 세트(220(0))는 제한 없이, 서브시퀀스 인코드 포인트들(222(0)-222(P))을 포함한다. 일반적으로, 서브시퀀스 인코드 세트(220)에 포함된 서브시퀀스 인코드 포인트들(222)의 수는 인코딩 포인트 목록(210)에 포함된 인코딩 포인트들(212)의 수와 동일하다. 또한, 서브시퀀스 인코드 포인트(222(x))는 인코딩 포인트(212(x))에 연관된다.
각각의 서브시퀀스 인코드 포인트(212)는 제한 없이, 연관된 인코딩 포인트(212), 인코딩된 서브시퀀스(430), 인코딩된 서브시퀀스(430)의 비트레이트(432), 인코딩된 서브시퀀스(430)의 품질 점수(434), 및 인코딩된 서브시퀀스(430)의 왜곡 레벨(436)을 포함한다. 도 2와 관련하여 본 명세서에서 앞에서 설명된 바와 같이, 버퍼-기반 인코딩 애플리케이션(140)은 연관된 인코딩 포인트(212) 및 연관된 서브시퀀스(132)에 기초하여 임의의 기술적으로 실현가능한 방식으로, 인코딩된 서브시퀀스(430)를 생성할 수 있다. 후속하여, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스(430)에 기초하여 임의의 기술적으로 실현가능한 방식으로 비트레이트(432), 품질 점수(434), 및 왜곡 레벨(436)을 결정할 수 있다. 품질 점수(434)는 임의의 품질 메트릭에 대한 값일 수 있다.
설명의 목적으로만, 서브시퀀스 인코드 포인트(222(0))에 포함된 인코딩 포인트(212(0)) 및 서브시퀀스 인코드 포인트(222(P))에 포함된 인코딩 포인트(212(P))에 대한 예시적인 값들은 이탤릭체로 도시된다. 인코딩 포인트(212(0))는 제한 없이, 640×360의 해상도(314) 및 레이트 제어 값(316) QP=51을 포함한다. 따라서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스(430(0))를 생성하기 위해, 640×360의 해상도(314) 및 레이트 제어 값(316) QP=51에서 서브시퀀스(132(0))를 인코딩하도록 인코딩 애플리케이션(162)을 구성한다. 대조적으로, 인코딩 포인트(212(P))는 제한 없이, 1920×1080의 해상도(314) 및 레이트 제어 값(316) QP=0을 포함한다. 따라서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스(430(P))를 생성하기 위해, 1920×1080의 해상도(314) 및 레이트 제어 값(316) QP=0에서 서브시퀀스(132(0))를 인코딩하도록 인코딩 애플리케이션(162)을 구성한다.
도 5는 본 발명의 다양한 실시예에 따른, 도 2의 컨벡스 헐 생성기(230)에 의해 생성되는 예시적인 컨벡스 헐(240(0))을 도시한다. 특히, 컨벡스 헐 생성기(230)는 서브시퀀스 인코드 세트(220(0))에 기초하여 컨벡스 헐(240(0))을 생성한다. 도시된 바와 같이, 그래프(500)는 제한 없이, 비트레이트 축(510) 및 왜곡 축(520)을 포함한다.
동작 시에, 서브시퀀스 인코드 세트(220(0))에 포함된 서브시퀀스 인코드 포인트들(222) 각각에 대해, 컨벡스 헐 생성기(230)는 그래프(500)에서 대응하는 플롯팅된 서브시퀀스 인코드 포인트(222)를 생성한다. 컨벡스 헐 생성기(230)는 비트레이트 축(510)을 따라 비트레이트(432)를 위치시키고 왜곡 축(520)을 따라 왜곡 레벨(436)을 위치시킴으로써 주어진 서브시퀀스 인코드 포인트(222)를 플롯팅한다. 다음으로, 컨벡스 헐 생성기(230)는 컨벡스 헐(240(0))을 결정하기 위해, 플롯팅된 서브시퀀스 인코드 포인트들(222)을 평가한다.
보다 구체적으로, 컨벡스 헐 생성기(230)는 경계를 형성하는 플롯팅된 서브시퀀스 인코드 포인트들(222)을 식별하고, 여기서 모든 플롯팅된 서브시퀀스 인코드 포인트들(222)은 경계의 한쪽(이 경우, 경계의 오른쪽)에 상주하며, 또한 임의의 2개의 연속적으로 식별된 플롯팅된 서브시퀀스 인코드 포인트(222)를 직선으로 연결하면, 모든 나머지 플롯팅된 서브시퀀스 인코드 포인트(222)가 동일한 쪽에 남게 된다. 컨벡스 헐(240(0))은 식별된 서브시퀀스 인코드 포인트들(222)의 세트를 포함한다.
설명의 목적으로만, 컨벡스 헐(240(0))에 포함되는 서브시퀀스 인코드 포인트들(222)은 그래프(500)에서 십자형으로 도시되는 반면, 나머지 서브시퀀스 인코드 포인트들(222)은 그래프(500)에서 채워진 원으로 도시된다. 특히, 서브시퀀스 인코드 포인트(222(P))는 컨벡스 헐(240(0))에 포함되는 반면, 서브시퀀스 인코드 포인트(222(0))는 컨벡스 헐(240(0))에 포함되지 않는다.
본 기술분야의 통상의 기술자는 컨벡스 헐들을 생성하기 위한 많은 기술이 수학 분야에 잘 알려져 있고, 모든 이러한 기술들이 컨벡스 헐들(240)을 생성하도록 구현될 수 있음을 이해할 것이다. 일 실시예에서, 컨벡스 헐 생성기(230)는 연관된 서브시퀀스(132) 및/또는 소스 미디어 시퀀스(122)의 다양한 매개변수들에 기초하여, 컨벡스 헐(240)에 포함된 서브시퀀스 인코드 포인트들(222)을 추정하기 위해 머신 러닝 기술들을 적용한다. 이러한 방식으로, 지금까지 논의된 계산들 중 일부는 간소화될 수 있고 및/또는 완전히 회피될 수 있다.
상이한 인코딩된 서브시퀀스들의 결합
도 6은 본 발명의 다양한 실시예들에 따른, 도 2의 미디어 인코드 포인트들(270) 중 하나의 더 상세한 도시이다. 설명의 목적으로만, 도 6에 도시된 미디어 인코드 포인트(270(k))는 서브시퀀스들(132(0)-132(i))에 연관된 글로벌 컨벡스 헐(260(i))에 포함된다. 도시된 바와 같이, 미디어 인코드 포인트(270(k))는 제한 없이, 서브시퀀스 인코드 목록(610), 인코딩된 미디어 시퀀스(630), 평균 비트레이트(632), 전체 왜곡 레벨(636), 현재 버퍼 점유율(650), 최소 버퍼 점유율(652), 및 최대 버퍼 점유율(654)을 포함한다.
서브시퀀스 인코드 목록(610)은 제한 없이, 인코딩 선택들(620(0)-620(i))을 포함하며, 여기서 인코딩 선택들(620)의 수는 글로벌 컨벡스 헐(260(i))에 연관된 서브시퀀스들(132)의 수와 동일하다. 더 구체적으로, 서브시퀀스 인코드 목록(610)은 글로벌 컨벡스 헐(260(i))에 연관된 각각의 서브시퀀스(132(x))에 대한 상이한 인코드 선택(620(x))을 포함한다. 인코드 선택들(620) 각각은 상이한 서브시퀀스 인코드 포인트(222)를 지정한다. 일반적으로, 인코드 선택(620(x))은 서브시퀀스(132(x))에 연관된 서브시퀀스 인코드 세트(220(x))에 포함된 서브시퀀스 인코드 포인트들(222) 중 하나를 지정한다.
설명의 목적으로만, 인코드 선택들(620(0), 620(1), 및 620(i))에 대한 예시적인 값들은 이탤릭체로 도시된다. 인코드 선택(620(0))은 서브시퀀스 인코드 세트(220(0)) 내의 서브시퀀스 인코드 포인트(222(5))를 지정한다. 인코드 선택(620(1))은 서브시퀀스 인코드 세트(220(1)) 내의 서브시퀀스 인코드 포인트(222(0))를 지정한다. 인코드 선택(620(i))은 서브시퀀스 인코드 세트(220(i)) 내의 서브시퀀스 인코드 포인트(222(P))를 지정한다.
인코딩된 미디어 시퀀스(630)는 제한 없이, 서브시퀀스 인코드 목록(610) 내에 지정된 (i+1)개의 서브시퀀스 인코드 포인트(222)에 포함된 (i+1) 개의 인코딩된 서브시퀀스(430)를 포함한다. 평균 비트레이트(632) 및 전체 왜곡 레벨(636)은 인코딩된 미디어 시퀀스(630)의 비트레이트 및 인코딩된 미디어 시퀀스(630)의 왜곡 레벨을 각각 지정한다. 서브시퀀스 반복기(250(i)) 및/또는 버퍼-기반 인코딩 애플리케이션(140)은 임의의 기술적으로 실현가능한 방식으로, 인코딩된 미디어 시퀀스(630), 평균 비트레이트(632), 및 전체 왜곡 레벨(636)을 결정할 수 있다.
도 2와 관련하여 설명된 바와 같이, 현재 버퍼 점유율(650), 최소 버퍼 점유율(652), 및 최대 버퍼 점유율(654)은 버퍼 크기(174)와 동일한 크기를 갖는 예시적인 전송 버퍼의 특성을 지정한다. 더 정확하게는, 현재 버퍼 점유율(650)은 인코딩된 미디어 시퀀스(630)가 예시적인 엔드포인트 디바이스에서의 재생을 위해 디코딩될 때 예시적인 전송 버퍼에 저장되는 비트들의 수를 지정한다. 최소 버퍼 점유율(652)은 인코딩된 미디어 시퀀스(630)를 예시적인 엔드포인트 디바이스에 스트리밍하는 동안 예시적인 전송 버퍼에 저장되는 비트들의 최소값을 지정한다. 최대 버퍼 점유율(654)은 인코딩된 미디어 시퀀스(630)를 예시적인 엔드포인트 디바이스에 스트리밍하는 동안 예시적인 전송 버퍼에 저장되는 비트들의 최대값을 지정한다.
도 7은 본 발명의 다양한 실시예들에 따른, 도 2의 서브시퀀스 반복기(250(i))의 더 상세한 도시이다. 동작 시에, 서브시퀀스 반복기(250(i))는 글로벌 컨벡스 헐(260(i-1)), 컨벡스 헐(240(i)) 및 전송 버퍼 제약(170)에 기초하여 글로벌 컨벡스 헐(260(i))을 생성한다. 설명의 목적으로만, 글로벌 컨벡스 헐(260(i-1))은 제한 없이, V개의 미디어 인코드 포인트(270)를 포함한다. 도 6과 관련하여 설명된 바와 같이, 미디어 인코드 포인트들(270) 각각은 상이한 서브시퀀스 인코드 목록(610)을 포함한다. 따라서, 글로벌 컨벡스 헐(260(i-1))은 V개의 서브시퀀스 인코드 목록(610)에 연관된다. 컨벡스 헐(240(i))은 제한 없이, A개의 서브시퀀스 인코드 포인트들(222)을 포함한다. 도시된 바와 같이, 서브시퀀스 반복기(250(i))는 제한 없이, 결합 엔진(710), 필터링 엔진(730), 및 글로벌 컨벡스 헐 생성기(750)를 포함한다.
결합 엔진(710)은 글로벌 컨벡스 헐(260(i-1)), 컨벡스 헐(240(i)), 및 전송 버퍼 제약(170)에 기초하여 미디어 인코드 세트(720)를 생성한다. 먼저, 결합 엔진(710)은 글로벌 컨벡스 헐(260(i-1))에 연관된 V개의 서브시퀀스 인코드 목록(610) 각각을 컨벡스 헐(240(i))에 포함된 A개의 서브시퀀스 인코드 포인트(222) 각각에 결합하여, (A×V)개의 새로운 서브시퀀스 인코드 목록(610)을 생성한다. 서브시퀀스 인코드 목록(610(x))을 서브시퀀스 인코드 포인트(222(y))와 결합하기 위해, 결합 엔진(710)은 서브시퀀스 인코드 목록(610(x))에 서브시퀀스 인코드 포인트(222(y))를 첨부하여, 새로운 서브시퀀스 인코드 목록(610(z))을 생성한다. 특히, 글로벌 컨벡스 헐(260(i-1))에 연관된 서브시퀀스 인코드 목록들(610) 각각은 서브시퀀스들(132(0)-132(i-1))에 연관되고, 컨벡스 헐(240(i))에 포함된 서브시퀀스 인코드 포인트들(222) 각각은 서브시퀀스(132(i))에 연관된다. 결과적으로, 새로운 서브시퀀스 인코드 목록들(610) 각각은 서브시퀀스들(132(0)-132(i+1))에 연관된다.
각각의 새로운 서브시퀀스 인코드 목록(610)에 대해, 서브시퀀스 반복기(250(i))는 서브시퀀스 인코드 목록(610)에 기초하여 새로운 미디어 인코드 포인트(270)를 생성한 다음, 새로운 미디어 인코드 포인트(270)를 미디어 인코드 세트(720)에 추가한다. 보다 정확하게는, 새로운 서브시퀀스 인코드 목록(610(z))에 대해, 서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스(630(z))를 생성하기 위해, 서브시퀀스 인코드 목록(610(z))에 지정된 서브시퀀스 인코드 포인트들(222)에 포함된 상이한 인코딩된 서브시퀀스들(430)을 집계한다. 후속하여, 서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스(630(z))에 기초하여 평균 비트레이트(632(z)) 및 전체 왜곡 레벨(636(z))을 계산한다. 서브시퀀스 반복기(250(i))는 임의의 기술적으로 실현가능한 방식으로 평균 비트레이트(632(z)) 및 전체 왜곡 레벨(636(z))을 계산할 수 있다.
예를 들어, 일부 실시예들에서, 서브시퀀스 반복기(250(i))는 가중된 비트레이트들을 생성하기 위해, 인코딩된 미디어 시퀀스(630(z))에 포함된 인코딩된 서브시퀀스들(430) 각각의 비트레이트(432)를 연관된 지속시간만큼 가중한다. 서브시퀀스 반복기(250(i))는 가중된 비트레이트들을 합산한 다음, 결과적인 가중 합계를 인코딩된 미디어 시퀀스(630(z))의 총 지속기간으로 나누어 평균 비트레이트(632(z))를 계산한다. 서브시퀀스 반복기(250(i))는 유사한 방식으로 전체 왜곡 레벨(636(z))을 계산한다.
대안적인 실시예들에서, 서브시퀀스 반복기(250(i))는 그로부터 서브시퀀스 인코드 목록(610(z))이 도출된 서브시퀀스 인코드 목록(610(x)) 및 서브시퀀스 인코드 포인트(222(y))에 기초하여 평균 비트레이트(632(z))를 계산한다. 더 정확하게는, 서브시퀀스 반복기(250(i))는 가중된 미디어 비트레이트를 생성하기 위해, 서브시퀀스 인코드 목록(610(x))에 연관된 평균 비트레이트(632(x))를 인코딩된 미디어 시퀀스(630(x))의 지속시간만큼 가중한다. 마찬가지로, 서브시퀀스 반복기(250(i))는 가중된 서브시퀀스 비트레이트를 생성하기 위해, 서브시퀀스 인코드 포인트(222(y))에 포함된 비트레이트(432)를 인코딩된 서브시퀀스(430(y))의 지속시간만큼 가중화한다. 서브시퀀스 반복기(250(i))는 가중된 미디어 비트레이트와 가중된 서브시퀀스 비트레이트를 합산한 다음, 결과적인 가중 합계를 인코딩된 미디어 시퀀스(630(z))의 총 지속기간으로 나누어, 평균 비트레이트(632(x))를 계산한다. 서브시퀀스 반복기(250(i))는 유사한 방식으로 전체 왜곡 레벨(636(z))을 계산한다.
서브시퀀스 반복기(250(i))는 인코딩된 미디어 시퀀스(630(z)) 및 전송 버퍼 제약(170)에 기초하여, 현재 버퍼 점유율(650(z)), 최소 버퍼 점유율(652(z)), 및 최대 버퍼 점유율(654(z))을 계산한다. 현재 버퍼 점유율(650(z))은 인코딩된 미디어 시퀀스(630(z))가 예시적인 엔드포인트 디바이스에서의 재생을 위해 디코딩될 때 예시적인 전송 버퍼에 저장되는 비트들의 수를 지정한다. 최소 버퍼 점유율(652(z)) 및 최대 버퍼 점유율(654(z))은 전송 버퍼 제약(170)에 따라 인코딩된 미디어 시퀀스(630(z))를 예시적인 엔드포인트 디바이스에 스트리밍하는 동안 예시적인 전송 버퍼에 저장되는 비트들의 최소 및 최대 수를 각각 지정한다. 서브시퀀스 반복기(250(i))는 현재 버퍼 점유율(650(z)), 최소 버퍼 점유율(652(z)), 및 최대 버퍼 점유율(654(z))을 전송 버퍼 제약(170)과 일치하는 임의의 기술적으로 실현가능한 방식으로 계산할 수 있다.
예를 들어, 일부 실시예들에서, 서브시퀀스 반복기(250(i))는 먼저, 그로부터 새로운 서브시퀀스 인코드 목록(610(z))이 도출된 서브시퀀스 인코드 목록(610(x)) 및 서브시퀀스 인코드 포인트(222(y))에 기초하여 현재 버퍼 점유율(650(z))을 계산한다. 더 정확하게는, 서브시퀀스 반복기(250(i))는 드레인되는 비트들의 수를 서브시퀀스 인코드 포인트(222(y))에 포함된 인코딩된 서브시퀀스(430(y))에 포함된 인코딩된 비트들의 수와 동일하게 설정한다. 서브시퀀스 반복기(250(i))는 또한 다시 채워지는 비트 카운트의 수를 전송 레이트(172)와 인코딩된 서브시퀀스(430(y))의 재생 지속시간의 곱과 동일하게 설정한다. 다음으로, 서브시퀀스 반복기(250(i))는 서브시퀀스 델타를 결정하기 위해, 다시 채워지는 비트들의 수로부터 드레인되는 비트들의 수를 감산한다.
서브시퀀스 반복기(250(i))는 잠재적 버퍼 점유율을 서브시퀀스 인코드 목록(610(x))에 연관된 서브시퀀스 델타 및 현재 버퍼 점유율(650(x))의 합과 동일하게 설정한다. 제약 유형(176)이 CBR VBV인 경우, 서브시퀀스 반복기(250(i))는 현재 버퍼 점유율(650(z))을 잠재적 버퍼 점유율과 동일하게 설정한다. 그러나, 제약 유형(176)이 VBR VBV인 경우, 서브시퀀스 반복기(250(i))는 현재 버퍼 점유율(650(z))을 잠재적 버퍼 점유율 및 버퍼 크기(174)의 최소값과 동일하게 설정한다.
후속하여, 서브시퀀스 반복기(250(i))는 최소 버퍼 점유율(652(z))을 서브시퀀스 인코드 목록(610(x))에 연관된 최소 버퍼 점유율(652(x)) 및 현재 버퍼 점유율(650(z))의 최소값과 동일하게 설정한다. 상보적인 방식에서, 서브시퀀스 반복기(250(i))는 최대 버퍼 점유율(654(z))을 서브시퀀스 인코드 목록(610(x))에 연관된 최대 버퍼 점유율(654(x)) 및 현재 버퍼 점유율(650(z))의 최대값과 동일하게 설정한다.
대안적인 실시예들에서, 서브시퀀스 반복기(250)는 현재 버퍼 점유율(650), 최소 버퍼 점유율(652), 및 최대 버퍼 점유율(654)을 임의의 기술적으로 가능한 방식 및 임의의 입도 레벨에서 계산할 수 있다. 예를 들어, 일부 실시예들에서, 서브시퀀스 반복기(250(i))는 이하의 연속-시간 함수 (1)에 기초하여 프레임 레벨의 입도에서 현재 버퍼 점유율(650)을 계산한다:
Figure pct00001
(1)
함수 (1)에서, O(t)는 시간 t에서의 버퍼 점유율이고, O0는 시간 0에서의 초기 버퍼 점유율이고, t는 시간이고; R은 평균 프레임 레이트이고, ΔT는 연속적인 디스플레이 시간 사이의 시간 간격(즉, 프레임 레이트의 역수)이며, Si는 i번째 프레임의 압축된 프레임 크기이다.
도시된 바와 같이, 필터링 엔진(730)은 미디어 인코드 세트(720) 및 전송 버퍼 제약(170)에 기초하여 순응적 미디어 인코드 세트(740)를 생성한다. 보다 정확하게는, 필터링 엔진(730)은 순응적 미디어 인코드 세트(740)를 비어 있는 세트로 초기화한다. 후속하여, 미디어 인코드 세트(720)에 포함된 각각의 미디어 인코드 포인트(270(z))에 대해, 필터링 엔진(730)은 연관된 인코딩된 미디어 시퀀스(630(z))가 전송 버퍼 제약(170)을 준수하는지를 결정한다. 필터링 엔진(730)이 인코딩된 미디어 시퀀스(630(z))가 전송 버퍼 제약(170)을 준수한다고 결정하는 경우, 필터링 엔진(730)은 미디어 인코드 포인트(270(z))를 순응적 미디어 인코드 세트(740)에 추가한다. 대조적으로, 필터링 엔진(730)이 인코딩된 미디어 시퀀스(630(z))가 전송 버퍼 제약(170)을 준수하지 않는다고 결정하는 경우, 필터링 엔진(730)은 미디어 인코드 포인트(270(z))를 순응적 미디어 인코드 세트(740)에 추가하지 않는다.
필터링 엔진(730)은 인코딩된 미디어 시퀀스(630(z))가 임의의 기술적으로 실현가능한 방식으로 전송 버퍼 제약(170)을 준수하는지를 결정할 수 있다. 예를 들어, 일부 실시예들에서, 필터링 엔진(730)은 최대 버퍼 점유율(654(z))과 최소 버퍼 점유율(652(z)) 사이의 버퍼 차이를 계산한다. 버퍼 차이가 버퍼 크기(174)를 초과하지 않는 경우, 필터링 엔진(730)은 인코딩된 미디어 시퀀스(630(z))가 전송 버퍼 제약(170)을 준수한다고 결정한다. 그렇지 않으면, 필터링 엔진은 인코딩된 미디어 시퀀스(630(z)가 전송 버퍼 제약(170)을 준수하지 않는다고 결정한다.
글로벌 컨벡스 헐 생성기(750)는 순응적 미디어 인코드 세트(740)에 포함된 미디어 인코드 포인트들(270)에 걸쳐 컨벡스 헐 연산들을 수행하여 글로벌 컨벡스 헐(260(i))을 생성한다. 일반적으로, 글로벌 컨벡스 헐(260(i))에 포함된 미디어 인코드 포인트들(270) 각각은 상이한 전체 왜곡 레벨(636)에 대한 평균 비트레이트(632)를 최소화한다. 글로벌 컨벡스 헐 생성기(750)는 글로벌 컨벡스 헐(260(i))을 생성하기 위해, 임의의 기술적으로 실현가능한 방식으로 임의의 수 및 유형의 컨벡스 헐 연산들을 수행할 수 있다. 본 기술분야의 통상의 기술자는 컨벡스 헐을 생성하기 위한 많은 기술이 수학 분야에 잘 알려져 있고, 이러한 모든 기술이 글로벌 컨벡스 헐(260(i))을 생성하기 위해 구현될 수 있음을 이해할 것이다.
예를 들어, 일부 실시예들에서, 순응적 미디어 인코드 세트(740)에 포함된 미디어 인코드 포인트들(270) 각각에 대해, 글로벌 컨벡스 헐 생성기(750)는 그래프(도시되지 않음)에서 대응하는 플롯팅된 미디어 인코드 포인트(270)를 생성한다. 글로벌 컨벡스 헐 생성기(750)는 비트레이트 축(510)을 따라 평균 비트레이트(632)를 위치시키고 왜곡 축(520)을 따라 전체 왜곡 레벨(636)을 위치시킴으로써, 주어진 미디어 인코드 포인트(270)를 플롯팅한다. 다음으로, 글로벌 컨벡스 헐 생성기(750)는 플롯팅된 미디어 인코드 포인트들(270)을 평가하여, 글로벌 컨벡스 헐(260(i))을 결정한다.
보다 구체적으로, 글로벌 컨벡스 헐 생성기(750)는 경계를 형성하는 플롯팅된 미디어 인코드 포인트들(270)을 식별하고, 여기서 모든 플롯팅된 미디어 인코드 포인트들(270)은 경계의 한쪽에 상주하며, 또한 임의의 2개의 연속적으로 식별된 플롯팅된 미디어 인코드 포인트(270)를 직선으로 연결하면, 모든 나머지 플롯팅된 미디어 인코드 포인트(270)가 동일한 쪽에 남게 된다. 특히, 다수의 플롯팅된 미디어 인코드 포인트(270)가 그래프에 대해 서로의 비교적 더 작은 거리 내에 있으면, 글로벌 컨벡스 헐 생성기(750)는 가장 높은 현재 버퍼 점유율(650)을 갖는 미디어 인코드 포인트(270)를 선택한다. 컨벡스 헐(260(i))은 식별된 미디어 인코드 포인트들(270)의 세트를 포함한다.
도 8은 본 발명의 다양한 실시예에 따른, 도 2의 버퍼-기반 인코딩 애플리케이션(140)에 의해 생성되는 예시적인 글로벌 컨벡스 헐(260(S)) 및 예시적인 최적화된 인코딩된 미디어 시퀀스(180)를 도시한다. 보다 구체적으로, 서브시퀀스 반복기(250(S))는 미디어 인코드 포인트들(270)의 글로벌 컨벡스 헐(260(S))을 생성하며, 여기서 각각의 미디어 인코드 포인트는 전송 버퍼 제약(170)을 준수하고 상이한 전체 왜곡 레벨(636)에 대한 평균 비트레이트(632)를 최소화한다. 설명의 목적으로, 도 8은 제한 없이, 비트레이트 축(510) 및 왜곡 축(520)을 포함하는 그래프(900)의 일부로서 플롯팅된 미디어 인코드 포인트(270)를 도시한다.
도 2와 관련하여 이전에 설명된 바와 같이, 선택 엔진(290)은 모든 서브시퀀스(132(0)-132(S))에 연관된 글로벌 컨벡스 헐(260(S))에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 결정한다. 보다 구체적으로, 선택 엔진(290)은 글로벌 컨벡스 헐(260(S))에 포함된 미디어 인코드 포인트들(270)의 평균 비트레이트들(632)을 비교하고, 최적화된 미디어 인코드 포인트(270(W))가 가장 높은 평균 비트레이트(632)를 갖는다고 결정한다. 다음으로, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 미디어 인코드 포인트(270(W))에 포함된 인코딩된 미디어 시퀀스(630(W))와 동일하게 설정한다.
본 기술분야의 통상의 기술자가 인식하는 바와 같이, 최적화된 인코딩된 미디어 시퀀스(180)는 글로벌 컨벡스 헐(260(S))에 연관된 임의의 다른 인코딩된 미디어 시퀀스(630)보다 더 높은 전체 품질 레벨을 갖는다. 결과적으로, 최적화된 미디어 시퀀스(180)는 전송 버퍼 제약(170)을 준수하는 동시에 엔드포인트 디바이스에서 미디어 타이틀을 재생하는 동안 전체 시각적 품질을 최적화하는, 미디어 타이틀의 인코딩된 버전이다. 대안적인 실시예들에서, 선택 엔진(290)은 임의의 기술적으로 실현가능한 방식으로, 글로벌 컨벡스 헐(260(S)) 및 임의의 수 및 유형의 미디어 메트릭에 연관된 임의의 수 및 유형의 기준에 기초하여, 최적화된 인코딩된 미디어 시퀀스(180)를 선택할 수 있다.
도시된 바와 같이, 최적화된 인코딩된 미디어 시퀀스(180)는 제한 없이, QP=40에서 인코딩된 서브시퀀스(132(0))의 960×540 버전, 다음으로 QP=11에서 인코딩된 서브시퀀스(132(1))의 640×360 버전, 다음으로 QP=47에서 인코딩된 서브시퀀스(132(2))의 1280×720 버전, QP=26에서 인코딩된 서브시퀀스(132(3))의 960×540 버전, 그리고 마지막으로 QP=2에서 인코딩된 서브시퀀스(132(4))의 640×360 버전을 포함한다. 유리하게는, 도 8에 도시된 바와 같이, 해상도(314) 및 레이트 제어 값(316) 각각은 최적화된 인코딩된 미디어 시퀀스(180)에 포함된 서브시퀀스들(132)에 걸쳐 달라질 수 있다.
설명의 목적으로만, 예시적인 글로벌 컨벡스 헐(260(S))에 연관된 제약 유형(176)은 CRB VBV이다. 결과적으로, 선택 엔진(290)이 최적화된 인코딩된 미디어 시퀀스(180)를 결정한 후, 선택 엔진(290)은 최적화된 사전 버퍼링 시간(182)을 계산한다. 도시된 바와 같이, 선택 엔진(290)은 초기 버퍼 점유율을 미디어 인코드 포인트(270(W))에 포함된 최소 버퍼 점유율(652(W))과 버퍼 크기(174) 사이의 차이와 동일하게 설정한다. 다음으로, 선택 엔진(290)은 최적화된 사전 버퍼링 시간(182)을 초기 버퍼 점유율 및 전송 레이트(172)의 비율과 동일하게 설정한다. 대안적인 실시예들에서, 선택 엔진(190)은 임의의 기술적으로 실현가능한 방식으로, 최적화된 사전 버퍼링 시간(182) 및/또는 초기 버퍼 점유율을 계산할 수 있다.
도 9a - 도 9b는 본 발명의 다양한 실시예들에 따른, 소스 미디어 타이틀을 인코딩하기 위한 방법 단계들의 흐름도를 제시한다. 방법 단계들은 도 1 - 도 8의 시스템들을 참조하여 설명되지만, 본 기술분야의 통상의 기술자들은 방법 단계들을 임의의 순서로 구현하도록 구성된 임의의 시스템이 본 발명의 범위에 속한다는 것을 이해할 것이다.
도시된 바와 같이, 방법(900)은 서브시퀀스 분석기(130)가 소스 미디어 시퀀스(122)를 서브시퀀스들(132)로 분할하는 단계(902)를 시작한다. 단계(904)에서, 버퍼-기반 인코딩 애플리케이션(140)은 인코딩된 서브시퀀스들(430)을 생성하기 위해, 인코딩 포인트 목록(210)에 포함된 인코딩 포인트들(212) 각각에 걸쳐 서브시퀀스들(132) 각각을 인코딩한다. 대안적인 실시예들에서, 각각의 서브시퀀스(132(x))는 상이한 인코딩 포인트 목록(210(x))에 연관될 수 있다. 특정 서브시퀀스(132(x)) 및 특정 인코딩 포인트(212(y)) 둘 다에 연관된 인코딩된 서브시퀀스(430)를 생성하기 위해, 버퍼-기반 인코딩 애플리케이션(140)은 연관된 해상도(314) 및 연관된 레이트 제어 값(316)에서, 선택된 서브시퀀스(132)를 인코딩한다.
단계(906)에서, 각각의 인코딩된 서브시퀀스(430)에 대해, 버퍼-기반 인코딩 애플리케이션(140)은 비트레이트(432), 품질 점수(434), 및 왜곡 레벨(436)을 계산한다. 단계(906)의 일부로서, 버퍼-기반 인코딩 애플리케이션(140)은 제한 없이, 인코딩 포인트(212), 인코딩된 서브시퀀스(430), 비트레이트(432), 품질 점수(434), 및 왜곡 레벨(436)을 포함하는 새로운 서브시퀀스 인코드 포인트(222)를 생성한다.
단계(908)에서, 각각의 서브시퀀스(132(x))에 대해, 컨벡스 헐 생성기(230)는 연관된 서브시퀀스 인코드 포인트들(222)에 기초하여 상이한 컨벡스 헐(240(x))을 생성한다. 특히, 해상도들(314) 및 레이트 제어 값들(316)은 컨벡스 헐(240(x))에 포함된 서브시퀀스 인코드 포인트들(222) 사이에서 달라질 수 있다. 단계(910)에서, 버퍼-기반 인코딩 애플리케이션(140)은 단일 초기화 미디어 인코드 포인트(270(-1))를 포함하도록 이전 글로벌 컨벡스 헐(260)을 설정하고, 컨벡스 헐(240(0))을 선택한다. 초기화 미디어 인코드 포인트(270(-1))는 제한 없이, 비어 있는 서브시퀀스 인코드 목록(610), NULL 인코딩된 미디어 시퀀스(630), 버퍼 크기(174)의 현재 버퍼 점유율(650), 버퍼 크기(174)의 최소 버퍼 점유율(652), 및 버퍼 크기(174)의 최대 버퍼 점유율(654)을 포함한다.
단계(912)에서, 결합 엔진(710)은 이전 글로벌 컨벡스 헐(260) 및 선택된 컨벡스 헐(240)에 기초하여 미디어 인코드 세트(720)를 생성한다. 먼저, 결합 엔진(710)은 현재 미디어 인코드 세트(720)를 비어 있는 세트로 초기화한다. 후속하여, 이전 글로벌 컨벡스 헐(260)에 포함된 각각의 미디어 인코드 포인트(270(x))에 대해, 결합 엔진(710)은 P개의 새로운 미디어 인코드 포인트(270)를 미디어 인코드 세트(720)에 추가하고, 여기서 P는 선택된 컨벡스 헐(240)에 포함된 서브시퀀스 인코드 포인트들(222)의 총 수이다.
서브시퀀스 인코드 포인트(222(y)) 및 미디어 인코드 포인트(270(x)) 둘 다에 연관된 새로운 미디어 인코드 포인트(270)를 생성하기 위해, 결합 엔진(710)은 서브시퀀스 인코드 포인트(222(y))를 미디어 인코드 포인트(270(x))에 포함된 서브시퀀스 인코드 목록(610(x))에 추가하여, 새로운 서브시퀀스 인코드 목록(610)을 생성한다. 새로운 서브시퀀스 인코드 목록(610)은 새로운 미디어 인코드 포인트(1370)에 포함된다. 다음으로, 결합 엔진(710)은 새로운 서브시퀀스 인코드 목록(610)에 기초하여, 미디어 인코드 포인트(270)에 포함된 새로운 인코딩된 미디어 시퀀스(630)를 생성한다. 마지막으로, 결합 엔진(710)은 새로운 인코딩된 미디어 시퀀스(630) 및 전송 버퍼 제약(170)에 기초하여 새로운 미디어 인코드 포인트(270)에 포함되는 평균 비트레이트(632), 전체 왜곡 레벨(636), 현재 버퍼 점유율(650), 최소 버퍼 점유율(652), 및 최대 버퍼 점유율(654)을 계산한다.
단계(914)에서, 필터링 엔진(730)은 순응적 미디어 인코드 세트(740)를 생성하기 위해, 전송 버퍼 제약(170)에 기초하여 미디어 인코드 세트(720)에 대한 필터링 동작들을 수행한다. 보다 정확하게는, 필터링 엔진(730)은 최대 버퍼 점유율(654)과 최소 버퍼 점유율(652) 사이의 차이가 버퍼 크기(174)보다 큰 미디어 인코드 세트(740)에 포함된 미디어 인코드 포인트들(270)을 제거한다. 단계(916)에서, 글로벌 컨벡스 헐 생성기(750)는 순응적 미디어 인코드 세트(740)에 기초하여 현재 글로벌 컨벡스 헐(260)을 생성한다.
단계(918)에서, 서브시퀀스 반복기(250)는 선택된 컨벡스 헐(240)이 최종 컨벡스 헐(240(S))이고, 결과적으로 소스 미디어 시퀀스(122)에 포함된 최종 서브시퀀스(132(S))에 연관되는지를 결정한다. 단계(918)에서, 서브시퀀스 반복기(250)가 선택된 컨벡스 헐(240)이 최종 컨벡스 헐(240(S))이 아니라고 결정하면, 방법(900)은 단계(920)로 진행한다. 단계(920)에서, 서브시퀀스 반복기(250)는 다음 컨벡스 헐(240)을 선택하고, 이전 글로벌 컨벡스 헐(260)을 현재 글로벌 컨벡스 헐(260)과 동일하게 설정한다. 다음으로, 방법(900)은 단계(912)로 돌아가고, 여기서 서브시퀀스 반복기(250)는 이전 글로벌 컨벡스 헐(260) 및 선택된 컨벡스 헐(240)에 기초하여 새로운 현재 글로벌 컨벡스 헐(260)을 생성한다.
그러나, 단계(918)에서, 서브시퀀스 반복기(250)가 선택된 컨벡스 헐(240)이 최종 컨벡스 헐(240(S))이라고 결정하면, 방법(900)은 단계(922)로 직접 진행한다. 단계(922)에서, 선택 엔진(290)은 현재 글로벌 컨벡스 헐(260)에 포함된 미디어 인코드 포인트들(270) 중 가장 높은 평균 비트레이트(632)를 갖는 미디어 인코드 포인트(270)를 선택한다. 단계(924)에서, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 선택된 미디어 인코드 포인트(270)에 포함된 인코딩된 미디어 시퀀스(630)와 동일하게 설정한다.
단계(926)에서, 선택 엔진(290)은 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되는지를 결정한다. 단계(926)에서, 선택 엔진(290)이 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관되지 않는다고 결정하면, 방법(900)은 단계(928)로 진행한다. 단계(928)에서, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180)를 엔드포인트 디바이스들에의 스트리밍을 위해 콘텐츠 전달 네트워크(190)에 전송한다. 다음으로, 방법(900)은 종료된다.
그러나, 단계(926)에서, 선택 엔진(290)이 전송 버퍼 제약(170)이 구성가능한 사전 버퍼링 시간에 연관된다고 결정하면, 방법(900)은 단계(930)로 직접 진행한다. 단계(930)에서, 선택 엔진(290)은 선택된 미디어 인코드 포인트(270) 및 전송 버퍼 제약(170)에 기초하여, 최적화된 사전 버퍼링 시간(182)을 계산한다. 단계(932)에서, 선택 엔진(290)은 최적화된 인코딩된 미디어 시퀀스(180) 및 최적화된 사전 버퍼링 시간(182)을 엔드포인트 디바이스들에의 스트리밍을 위해 콘텐츠 전달 네트워크(190)에 전송한다. 다음으로, 방법(900)은 종료된다.
요약하면, 개시된 기술들은 전송 버퍼 제약들을 준수하는 최적화된 인코딩된 미디어 시퀀스들을 생성하기 위해, 소스 미디어 시퀀스들의 효율적이고 최적인 인코딩을 가능하게 한다. 서브시퀀스-기반 인코딩 서브시스템은 제한 없이, 서브시퀀스 분석기 및 버퍼-기반 인코딩 애플리케이션을 포함한다. 처음에, 서브시퀀스 분석기는 소스 미디어 시퀀스를 복수의 서브시퀀스로 분할한다. 각각의 서브시퀀스에 대해, 버퍼-기반 인코딩 서브시스템은 인코딩 목록에 기초하여, 복수의 인코딩된 서브시퀀스를 생성한다. 인코딩 목록은 제한 없이, 임의의 수의 인코딩 포인트들을 포함하며, 여기서 각각의 인코딩 포인트는 해상도와 레이트 제어 값의 다른 조합을 지정한다.
각각의 인코딩된 서브시퀀스에 대해, 버퍼-기반 인코딩 애플리케이션은 상이한 서브시퀀스 인코드 포인트를 생성한다. 각각의 서브시퀀스 인코드 포인트는 제한 없이, 연관된 인코딩된 서브시퀀스, 연관된 인코딩 포인트, 인코딩된 서브시퀀스의 비트레이트, 인코딩된 서브시퀀스의 품질 점수, 및 인코딩된 서브시퀀스의 왜곡 레벨을 포함한다. 후속하여, 각각의 서브시퀀스에 대해, 컨벡스 헐 생성기는 서브시퀀스에 연관된 서브시퀀스 인코드 포인트들의 서브세트를 포함하는 컨벡스 헐을 생성한다. 일반적으로, 주어진 서브시퀀스에 대해, 연관된 컨벡스 헐에 포함된 서브시퀀스 인코드 포인트들은 상이한 왜곡 레벨들에 대한 비트레이트를 최소화한다.
다음으로, 서브시퀀스 반복기는 시간적 재생 순서로 서브시퀀스들을 반복적으로 처리하여, 각각의 서브시퀀스에 대한 미디어 인코드 포인트들의 상이한 글로벌 컨벡스 헐을 생성한다. n번째 서브시퀀스에 대해, 서브시퀀스 반복기는 전송 버퍼 제약에 기초하는 미디어 인코드 포인트들의 n번째 글로벌 컨벡스 헐, 미디어 인코드 포인트들의 (n-1)번째 글로벌 컨벡스 헐, 및 n번째 서브시퀀스에 연관된 서브시퀀스 인코드 포인트들의 n번째 컨벡스 헐을 계산한다. 전송 버퍼 제약은 제한 없이, 전송 레이트, 버퍼 크기 및 제약 유형을 지정한다. 각각의 미디어 인코드 포인트는 제한 없이, 서브시퀀스 인코드 목록, 인코딩된 미디어 시퀀스, 평균 비트레이트, 전체 왜곡 레벨, 현재 버퍼 점유율, 최소 버퍼 점유율, 및 최대 버퍼 점유율을 포함한다.
n번째 글로벌 컨벡스 헐의 각각의 미디어 인코드 포인트는 0번째 서브시퀀스로부터 n번째 서브시퀀스까지에 걸쳐 있는 미디어 타이틀의 부분에 연관된다. n번째 글로벌 컨벡스 헐을 생성하기 위해, 서브시퀀스 반복기는 (n-1)번째 글로벌 컨벡스 헐에 포함된 V개의 미디어 인코드 포인트 각각을 n번째 컨벡스 헐에 포함된 A개의 서브시퀀스 인코드 포인트 각각과 결합하여, (V×A)개의 미디어 인코드 포인트를 포함하는 미디어 인코드 세트를 생성한다. 다음으로, 서브시퀀스 반복기는 순응적 미디어 인코드 세트를 생성하기 위해, 전송 버퍼 제약 조건, 최소 버퍼 점유율, 및 최대 버퍼 점유율에 기초하여 미디어 인코드 세트에 대한 필터링 동작들을 수행한다. 마지막으로, 서브시퀀스 반복기는 평균 비트레이트들과 전체 왜곡 레벨들에 기초하여 순응적 미디어 인코드 세트의 서브세트인 n번째 글로벌 컨벡스 헐을 생성한다. 일반적으로, 0번째 서브시퀀스로부터 n번째 서브시퀀스까지에 걸쳐 있는 미디어 타이틀의 부분에 대해, n번째 글로벌 컨벡스 헐에 포함된 미디어 인코드 포인트들은 상이한 전체 왜곡 레벨들에 대한 평균 비트레이트를 최소화한다.
전체 미디어 타이틀에 걸친 최종 글로벌 컨벡스 헐을 생성한 후, 버퍼-기반 인코딩 애플리케이션에 포함된 선택 엔진은 최종 글로벌 컨벡스 헐에 포함된 미디어 인코드 포인트들 중 하나를 최적화된 미디어 인코드로서 선택한다. 최적화된 미디어 인코드 포인트는 최종 글로벌 컨벡스 헐에 포함된 모든 다른 미디어 인코드 포인트들의 평균 비트레이트들보다 높은 평균 비트레이트를 갖는다. 다음으로, 선택 엔진은 최적화된 인코딩된 미디어 시퀀스를 최적화된 미디어 인코드 포인트에 포함된 인코딩된 미디어 시퀀스와 동일하게 설정한다. 제약 유형이 구성가능한 사전 버퍼링 시간에 연관된 경우, 선택 엔진은 최적화된 미디어 인코드 포인트에 포함된 최소 버퍼 점유율 및 버퍼 크기에 기초하여, 최적화된 사전 버퍼링 시간을 계산한다. 마지막으로, 선택 엔진은 최적화된 인코딩된 미디어 시퀀스, 및 임의로, 최적화된 사전 버퍼링 시간을 엔드포인트 디바이스들로의 배포를 위해 콘텐츠 전달 네트워크에 전송한다.
개시된 기술들의 적어도 하나의 이점 및 기술적 진보는, 인코딩된 미디어 시퀀스들이 개별적으로 인코딩된 서브시퀀스들의 세트들 및 전송 버퍼 제약에 기초하여 재생 순서로 증분적으로 생성된다는 것이다. 인코딩된 미디어 시퀀스들을 생성하기 위해 상이한 인코딩 포인트들을 사용하여 인코딩된 서브시퀀스를 집계하는 것은, 종래 기술의 모놀리식 인코딩 기술들과 전형적으로 연관되는 인코딩 비효율성을 감소시킨다. 추가로, 전송 버퍼 제약 조건을 준수하지 않는 인코딩된 미디어 시퀀스들을 글로벌 컨벡스 헐들로부터 배제하면, 최적화된 인코딩된 미디어 시퀀스가 전송 버퍼 제약을 준수할 것이 효율적으로 보장된다. 그 결과, 엔드포인트 디바이스들에서 미디어 타이틀을 재생하는 동안 전송 버퍼 제한들에 기인하는 재생 중단의 가능성을 증가시키지 않으면서 최적화된 인코딩된 미디어 시퀀스의 전체 시각적 품질이 향상된다. 이러한 기술적 이점들은 종래 기술에 비해 하나 이상의 기술적 진보를 제공한다.
1. 일부 실시예들에서, 컴퓨터 구현 방법은 미디어 타이틀에 연관된 인코딩 포인트들의 제1 세트 및 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 생성하는 단계; 전송 버퍼 제약, 제1 컨벡스 헐, 및 미디어 타이틀에 대한 재생 순서에서 제1 서브시퀀스 이전에 발생하는 미디어 타이틀의 부분에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하는 단계; 미디어 메트릭에 기초하여 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하는 단계; 및 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하는 단계 - 제1 인코딩된 미디어 시퀀스는 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 - 를 포함한다.
2. 항목 1의 컴퓨터 구현 방법으로서, 전송 버퍼 제약은 일정 비트레이트 비디오 버퍼 검증기(VBV) 제약 또는 가변 비트레이트 VBV 제약을 포함한다.
3. 항목 1 또는 항목 2의 컴퓨터 구현 방법으로서, 제1 인코딩된 미디어 시퀀스에 연관된 최소 버퍼 점유율, 및 전송 버퍼 제약에 연관된 버퍼 크기에 기초하여, 사전 버퍼링 시간을 계산하는 단계를 더 포함한다.
4. 항목 1 내지 항목 3 중 어느 하나의 컴퓨터 구현 방법으로서, 제1 글로벌 컨벡스 헐을 생성하는 단계는: 제2 글로벌 컨벡스 헐에 포함된 미디어 인코드 포인트 및 제1 컨벡스 헐에 포함된 서브시퀀스 인코드 포인트의 각각의 조합에 대해, 미디어 인코드 포인트들의 세트에 포함된 상이한 미디어 인코드 포인트를 생성하는 단계; 순응적 미디어 인코드 포인트들의 세트를 생성하기 위해 전송 버퍼 제약에 기초하여 미디어 인코드 포인트들의 세트에 대해 하나 이상의 필터링 동작을 수행하는 단계; 및 제1 글로벌 컨벡스 헐을 생성하기 위해 순응적 미디어 인코드 포인트들의 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계를 포함한다.
5. 항목 1 내지 항목 4 중 어느 하나의 컴퓨터 구현 방법으로서, 미디어 메트릭은 비트레이트를 포함하고, 제1 미디어 인코드 포인트를 선택하는 단계는 제1 미디어 인코드 포인트에 연관된 제1 평균 비트레이트가 제1 글로벌 컨벡스 헐에 포함되는 모든 다른 미디어 인코드 포인트에 연관된 평균 비트레이트들보다 크다고 결정하는 단계를 포함한다.
6. 항목 1 내지 항목 5 중 어느 하나의 컴퓨터 구현 방법으로서, 제1 글로벌 컨벡스 헐을 생성하는 단계는: 제2 글로벌 컨벡스 헐에 포함된 제2 미디어 인코드 포인트 및 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 인코딩된 미디어 시퀀스를 생성하는 단계; 제2 인코딩된 미디어 시퀀스 및 전송 버퍼 제약에 연관된 전송 레이트에 기초하여 최소 버퍼 점유율 및 최대 버퍼 점유율을 계산하는 단계; 최대 버퍼 점유율과 최소 버퍼 점유율 사이의 차이가 전송 버퍼 제약에 연관된 버퍼 크기를 초과하지 않는다고 결정하는 단계; 및 차이가 버퍼 크기를 초과하지 않는다는 결정에 응답하여, 제2 인코딩된 미디어 시퀀스에 연관된 제2 미디어 인코드 포인트를 제1 글로벌 컨벡스 헐에 추가하는 단계를 포함한다.
7. 항목 1 내지 항목 6 중 어느 하나의 컴퓨터 구현 방법으로서, 제1 컨벡스 헐을 생성하는 단계는: 인코딩 포인트의 제1 세트 및 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 세트를 생성하는 단계; 서브시퀀스 인코드 포인트들의 제1 세트를 포함하는 영역을 결정하는 단계; 영역에 연관된 경계를 식별하는 단계 - 서브시퀀스 인코드 포인트들의 제1 세트에 포함된 어떠한 서브시퀀스 인코드 포인트도 경계의 제1 측에 위치되지 않음 - ; 및 경계를 따라 위치되지 않는 서브시퀀스 인코드 포인트들의 제1 세트에 포함된 모든 서브시퀀스 인코드 포인트들을 폐기하는 단계를 포함한다.
8. 항목 1 내지 항목 7 중 어느 하나의 컴퓨터 구현 방법으로서, 인코딩 포인트들의 제1 세트에 포함된 각각의 인코딩 포인트는 해상도와 레이트 제어 값의 상이한 조합을 지정한다.
9. 항목 1 내지 항목 8 중 어느 하나의 컴퓨터 구현 방법으로서, 미디어 타이틀에 연관된 소스 미디어 시퀀스를 복수의 샷 변경에 기초하여 복수의 서브시퀀스로 분할하는 단계를 더 포함하고, 복수의 서브시퀀스는 제1 서브시퀀스를 포함한다.
10. 항목 1 내지 항목 9 중 어느 하나의 컴퓨터 구현 방법으로서, 미디어 타이틀은 비디오 콘텐츠 및 오디오 콘텐츠 중 적어도 하나를 포함하는, 컴퓨터 구현 방법.
11. 일부 실시예들에서, 명령어들을 포함하는 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금: 서브시퀀스 인코드 포인트들의 제1 세트를 생성하기 위해, 인코딩 포인트들의 제1 세트에 걸쳐 미디어 타이틀에 연관된 제1 서브시퀀스를 인코딩하는 단계 - 각각의 서브시퀀스 인코드 포인트는 상이한 인코딩된 서브시퀀스에 연관됨 - ; 적어도 2개의 미디어 메트릭에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 계산하기 위해, 서브시퀀스 인코드 포인트들의 제1 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계; 전송 버퍼 제약, 제1 컨벡스 헐, 및 미디어 타이틀에 대한 재생 순서에서 제1 서브시퀀스 이전에 발생하는 미디어 타이틀에 연관된 하나 이상의 서브시퀀스에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하는 단계; 제1 미디어 메트릭에 기초하여 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하는 단계; 및 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하는 단계 - 제1 인코딩된 미디어 시퀀스는 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 - 를 포함하는 단계들을 수행하게 한다.
12. 항목 11의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 전송 버퍼 제약은 전송 레이트 및 버퍼 크기 중 적어도 하나를 지정한다.
13. 항목 11 또는 항목 12의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 인코딩된 미디어 시퀀스에 연관된 최소 버퍼 점유율, 및 전송 버퍼 제약에 연관된 버퍼 크기에 기초하여, 사전 버퍼링 시간을 계산하는 단계를 더 포함한다.
14. 항목 11 내지 항목 13 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 글로벌 컨벡스 헐을 생성하는 단계는: 제2 글로벌 컨벡스 헐에 포함된 제3 미디어 인코드 포인트 및 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 미디어 인코드 포인트를 생성하는 단계; 제3 미디어 인코드 포인트 및 제1 컨벡스 헐에 포함된 제2 서브시퀀스 인코드 포인트에 기초하여 제4 미디어 인코드 포인트를 생성하는 단계; 전송 버퍼 제약에 기초하여, 제4 미디어 인코드 포인트가 아닌 제2 미디어 인코드 포인트를 순응적 인코드 포인트들의 세트에 추가하는 단계; 및 제1 글로벌 컨벡스 헐을 생성하기 위해 순응적 미디어 인코드 포인트들의 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계를 포함한다.
15. 항목 11 내지 항목 14 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 미디어 메트릭은 비트레이트를 포함하고, 제1 미디어 인코드 포인트를 선택하는 단계는 제1 미디어 인코드 포인트에 연관된 제1 평균 비트레이트가 제1 글로벌 컨벡스 헐에 포함되는 모든 다른 미디어 인코드 포인트에 연관된 평균 비트레이트들보다 크다고 결정하는 단계를 포함한다.
16. 항목 11 내지 항목 15 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 글로벌 컨벡스 헐을 생성하는 단계는: 제2 글로벌 컨벡스 헐에 포함된 제2 미디어 인코드 포인트 및 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 인코딩된 미디어 시퀀스를 생성하는 단계; 제2 인코딩된 미디어 시퀀스 및 전송 버퍼 제약에 연관된 전송 레이트에 기초하여 최소 버퍼 점유율 및 최대 버퍼 점유율을 계산하는 단계; 최대 버퍼 점유율과 최소 버퍼 점유율 사이의 차이가 전송 버퍼 제약에 연관된 버퍼 크기를 초과하지 않는다고 결정하는 단계; 및 차이가 버퍼 크기를 초과하지 않는다는 결정에 응답하여, 제2 인코딩된 미디어 시퀀스에 연관된 제2 미디어 인코드 포인트를 제1 글로벌 컨벡스 헐에 추가하는 단계를 포함한다.
17. 항목 11 내지 항목 16 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 글로벌 컨벡스 헐을 생성하는 단계는: 전송 버퍼 제약, 제1 컨벡스 헐, 및 제2 글로벌 컨벡스 헐에 기초하여 순응적 미디어 인코드 포인트들의 세트를 생성하는 단계; 순응적 미디어 인코드 포인트들의 세트를 포함하는 영역을 결정하는 단계; 영역에 연관된 경계를 식별하는 단계 - 순응적 미디어 인코드 포인트들의 세트에 포함된 어떠한 순응적 미디어 인코드 포인트도 경계의 제1 측에 위치되지 않음 - ; 및 경계를 따라 위치되지 않는 순응적 미디어 인코드 포인트들의 세트에 포함되는 모든 순응적 미디어 인코드 포인트를 폐기하는 단계를 포함한다.
18. 항목 11 내지 항목 17 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 제1 인코딩된 미디어 시퀀스는 제1 인코딩된 서브시퀀스 및 제2 인코딩된 서브시퀀스를 포함하고, 제1 인코딩된 서브시퀀스는 상기 인코딩 포인트들의 제1 세트에 포함된 제1 인코딩 포인트에 연관되고, 제2 인코딩된 서브시퀀스는 제1 인코딩 포인트와 동일하지 않은 인코딩 포인트들의 제1 세트에 포함된 제2 인코딩 포인트에 연관된다.
19. 항목 11 내지 항목 18 중 어느 하나의 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서, 미디어 타이틀에 연관된 제1 서브시퀀스는 샷 시퀀스를 포함한다.
20. 일부 실시예들에서, 시스템은 명령어들을 저장하는 하나 이상의 메모리; 및 하나 이상의 메모리에 결합되는 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 명령어들을 실행할 때: 미디어 타이틀에 연관된 소스 미디어 시퀀스를 복수의 샷 변경에 기초하여 복수의 서브시퀀스로 분할하고; 인코딩 포인트들의 제1 세트 및 복수의 서브시퀀스에 포함된 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 생성하고 - 각각의 서브시퀀스 인코드 포인트는 상이한 인코딩된 서브시퀀스에 연관됨 - ; 전송 버퍼 제약, 제1 컨벡스 헐, 및 미디어 타이틀에 대한 재생 순서에서 제1 서브시퀀스 이전에 발생하는 미디어 타이틀의 부분에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하고; 미디어 메트릭에 기초하여 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하고; 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하도록 - 제1 인코딩된 미디어 시퀀스는 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 - 구성된다.
임의의 방식으로, 임의의 청구항에 인용된 임의의 청구항 요소 및/또는 본 출원에 설명된 임의의 요소의 임의의 및 모든 조합은 본 발명 및 보호의 고려된 범위 내에 속한다.
다양한 실시예들에 대한 설명은 예시의 목적으로 제시되었지만, 개시된 실시예들로 제한되거나 완전하도록 의도된 것은 아니다. 설명된 실시예들의 범위 및 취지를 벗어나지 않고서도, 다수의 수정 및 변형이 본 기술분야의 통상의 기술자에게 분명할 것이다.
본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양태들은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 취할 수 있고, 이들 모두는 일반적으로 "모듈" 또는 "시스템"이라고 지칭될 수 있다. 추가로, 본 개시내용에서 설명된 임의의 하드웨어 및/또는 소프트웨어 기술, 프로세스, 기능, 컴포넌트, 엔진, 모듈, 또는 시스템은 회로 또는 회로들의 세트로서 구현될 수 있다. 또한, 본 개시내용의 양태들은 컴퓨터 판독가능한 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독가능한 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능한 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 신호 매체 또는 컴퓨터 판독가능한 저장 매체일 수 있다. 컴퓨터 판독가능한 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것의 임의의 적절한 조합일 수 있지만 이에 제한되지는 않는다. 컴퓨터 판독가능한 저장 매체의 더 구체적인 예(비제한적 목록)는 다음을 포함한다: 하나 이상의 와이어를 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 상술한 것의 임의의 적절한 조합을 포함할 것이다. 본 문서의 맥락에서, 컴퓨터 판독가능한 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이들과 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형 매체(tangible medium)일 수 있다.
본 개시내용의 양태들은 개시내용의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 도시들 및/또는 블록도들을 참조하여 위에서 설명되었다. 흐름도 도시들 및/또는 블록도들의 각각의 블록, 및 흐름도 도시들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있음이 이해될 것이다. 이러한 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍가능한 데이터 처리 장치의 프로세서에 제공되어 머신을 생산할 수 있다. 명령어들은 컴퓨터의 프로세서 또는 다른 프로그래밍가능한 데이터 처리 장치를 통해 실행될 때, 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능들/동작들의 구현을 가능하게 한다. 이러한 프로세서들은 제한 없이, 범용 프로세서들, 특수 목적 프로세서들, 애플리케이션-특정 프로세서들, 또는 필드-프로그래밍가능한 게이트 어레이들일 수 있다.
도면들 내의 흐름도 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도들 내의 각각의 블록은 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어들을 포함하는 모듈, 세그먼트, 또는 코드의 일부를 표현할 수 있다. 또한, 일부 대안적인 구현들에서, 블록에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다는 점에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 실제로는 실질적으로 동시에 실행될 수 있고, 또는 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 흐름도 도시 및/또는 블록도들의 각각의 블록, 및 흐름도 도시 및/또는 블록도들 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합에 의해 구현될 수 있다는 점에 유의해야 한다.
전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 및 추가 실시예들은 본 발명의 기본 범위를 벗어나지 않고서 만들어질 수 있으며, 그들의 범위는 이하의 청구항들에 의해 결정된다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    미디어 타이틀에 연관된 인코딩 포인트들의 제1 세트 및 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐(convex hull)을 생성하는 단계;
    전송 버퍼 제약, 상기 제1 컨벡스 헐, 및 상기 미디어 타이틀에 대한 재생 순서에서 상기 제1 서브시퀀스 이전에 발생하는 상기 미디어 타이틀의 부분에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하는 단계;
    미디어 메트릭에 기초하여 상기 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하는 단계; 및
    상기 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하는 단계 - 상기 제1 인코딩된 미디어 시퀀스는 상기 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 -
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 전송 버퍼 제약은 일정 비트레이트 비디오 버퍼 검증기(video buffer verifier)(VBV) 제약 또는 가변 비트레이트 VBV 제약을 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 제1 인코딩된 미디어 시퀀스에 연관된 최소 버퍼 점유율, 및 상기 전송 버퍼 제약에 연관된 버퍼 크기에 기초하여, 사전 버퍼링 시간을 계산하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  4. 제1항에 있어서, 상기 제1 글로벌 컨벡스 헐을 생성하는 단계는:
    상기 제2 글로벌 컨벡스 헐에 포함된 미디어 인코드 포인트 및 상기 제1 컨벡스 헐에 포함된 서브시퀀스 인코드 포인트의 각각의 조합에 대해, 미디어 인코드 포인트들의 세트에 포함된 상이한 미디어 인코드 포인트를 생성하는 단계;
    순응적 미디어 인코드 포인트들(compliant media encode points)의 세트를 생성하기 위해 상기 전송 버퍼 제약에 기초하여 상기 미디어 인코드 포인트들의 세트에 대해 하나 이상의 필터링 동작을 수행하는 단계; 및
    상기 제1 글로벌 컨벡스 헐을 생성하기 위해 순응적 미디어 인코드 포인트들의 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  5. 제1항에 있어서, 상기 미디어 메트릭은 비트레이트를 포함하고, 상기 제1 미디어 인코드 포인트를 선택하는 단계는 상기 제1 미디어 인코드 포인트에 연관된 제1 평균 비트레이트가 상기 제1 글로벌 컨벡스 헐에 포함되는 모든 다른 미디어 인코드 포인트에 연관된 평균 비트레이트들보다 크다고 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 제1 글로벌 컨벡스 헐을 생성하는 단계는:
    상기 제2 글로벌 컨벡스 헐에 포함된 제2 미디어 인코드 포인트 및 상기 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 인코딩된 미디어 시퀀스를 생성하는 단계;
    상기 제2 인코딩된 미디어 시퀀스 및 상기 전송 버퍼 제약에 연관된 전송 레이트에 기초하여 최소 버퍼 점유율 및 최대 버퍼 점유율을 계산하는 단계;
    상기 최대 버퍼 점유율과 상기 최소 버퍼 점유율 사이의 차이가 상기 전송 버퍼 제약에 연관된 버퍼 크기를 초과하지 않는다고 결정하는 단계; 및
    상기 차이가 상기 버퍼 크기를 초과하지 않는다는 결정에 응답하여, 상기 제2 인코딩된 미디어 시퀀스에 연관된 제2 미디어 인코드 포인트를 상기 제1 글로벌 컨벡스 헐에 추가하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  7. 제1항에 있어서, 상기 제1 컨벡스 헐을 생성하는 단계는:
    상기 인코딩 포인트의 제1 세트 및 상기 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 세트를 생성하는 단계;
    상기 서브시퀀스 인코드 포인트들의 제1 세트를 포함하는 영역을 결정하는 단계;
    상기 영역에 연관된 경계를 식별하는 단계 - 상기 서브시퀀스 인코드 포인트들의 제1 세트에 포함된 어떠한 서브시퀀스 인코드 포인트도 상기 경계의 제1 측에 위치되지 않음 - ; 및
    상기 경계를 따라 위치되지 않는 상기 서브시퀀스 인코드 포인트들의 제1 세트에 포함된 모든 서브시퀀스 인코드 포인트들을 폐기하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  8. 제1항에 있어서, 상기 인코딩 포인트들의 제1 세트에 포함된 각각의 인코딩 포인트는 해상도와 레이트 제어 값의 상이한 조합을 지정하는, 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 미디어 타이틀에 연관된 소스 미디어 시퀀스를 복수의 샷 변경에 기초하여 복수의 서브시퀀스로 분할하는 단계를 더 포함하고, 상기 복수의 서브시퀀스는 상기 제1 서브시퀀스를 포함하는, 컴퓨터 구현 방법.
  10. 제1항에 있어서, 상기 미디어 타이틀은 비디오 콘텐츠 및 오디오 콘텐츠 중 적어도 하나를 포함하는, 컴퓨터 구현 방법.
  11. 명령어들을 포함하는 하나 이상의 비-일시적 컴퓨터 판독가능한 매체로서,
    상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    서브시퀀스 인코드 포인트들의 제1 세트를 생성하기 위해, 인코딩 포인트들의 제1 세트에 걸쳐 미디어 타이틀에 연관된 제1 서브시퀀스를 인코딩하는 단계 - 각각의 서브시퀀스 인코드 포인트는 상이한 인코딩된 서브시퀀스에 연관됨 - ;
    적어도 2개의 미디어 메트릭에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 계산하기 위해, 상기 서브시퀀스 인코드 포인트들의 제1 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계;
    전송 버퍼 제약, 상기 제1 컨벡스 헐, 및 상기 미디어 타이틀에 대한 재생 순서에서 상기 제1 서브시퀀스 이전에 발생하는 상기 미디어 타이틀에 연관된 하나 이상의 서브시퀀스에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하는 단계;
    제1 미디어 메트릭에 기초하여 상기 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하는 단계; 및
    상기 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하는 단계 - 상기 제1 인코딩된 미디어 시퀀스는 상기 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 -
    를 포함하는 단계들을 수행하게 하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  12. 제11항에 있어서, 상기 전송 버퍼 제약은 전송 레이트 및 버퍼 크기 중 적어도 하나를 지정하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  13. 제11항에 있어서, 상기 제1 인코딩된 미디어 시퀀스에 연관된 최소 버퍼 점유율, 및 상기 전송 버퍼 제약에 연관된 버퍼 크기에 기초하여, 사전 버퍼링 시간을 계산하는 단계를 더 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  14. 제11항에 있어서, 상기 제1 글로벌 컨벡스 헐을 생성하는 단계는:
    상기 제2 글로벌 컨벡스 헐에 포함된 제3 미디어 인코드 포인트 및 상기 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 미디어 인코드 포인트를 생성하는 단계;
    상기 제3 미디어 인코드 포인트 및 상기 제1 컨벡스 헐에 포함된 제2 서브시퀀스 인코드 포인트에 기초하여 제4 미디어 인코드 포인트를 생성하는 단계;
    상기 전송 버퍼 제약에 기초하여, 상기 제4 미디어 인코드 포인트가 아닌 상기 제2 미디어 인코드 포인트를 순응적 인코드 포인트들의 세트에 추가하는 단계; 및
    상기 제1 글로벌 컨벡스 헐을 생성하기 위해 상기 순응적 미디어 인코드 포인트들의 세트에 걸쳐 하나 이상의 컨벡스 헐 연산을 수행하는 단계
    를 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  15. 제11항에 있어서, 상기 제1 미디어 메트릭은 비트레이트를 포함하고, 상기 제1 미디어 인코드 포인트를 선택하는 단계는 상기 제1 미디어 인코드 포인트에 연관된 제1 평균 비트레이트가 상기 제1 글로벌 컨벡스 헐에 포함되는 모든 다른 미디어 인코드 포인트에 연관된 평균 비트레이트들보다 크다고 결정하는 단계를 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  16. 제11항에 있어서, 상기 제1 글로벌 컨벡스 헐을 생성하는 단계는:
    상기 제2 글로벌 컨벡스 헐에 포함된 제2 미디어 인코드 포인트 및 상기 제1 컨벡스 헐에 포함된 제1 서브시퀀스 인코드 포인트에 기초하여 제2 인코딩된 미디어 시퀀스를 생성하는 단계;
    상기 제2 인코딩된 미디어 시퀀스 및 상기 전송 버퍼 제약에 연관된 전송 레이트에 기초하여 최소 버퍼 점유율 및 최대 버퍼 점유율을 계산하는 단계;
    상기 최대 버퍼 점유율과 상기 최소 버퍼 점유율 사이의 차이가 상기 전송 버퍼 제약에 연관된 버퍼 크기를 초과하지 않는다고 결정하는 단계; 및
    상기 차이가 상기 버퍼 크기를 초과하지 않는다는 결정에 응답하여, 상기 제2 인코딩된 미디어 시퀀스에 연관된 제2 미디어 인코드 포인트를 상기 제1 글로벌 컨벡스 헐에 추가하는 단계
    를 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  17. 제11항에 있어서, 상기 제1 글로벌 컨벡스 헐을 생성하는 단계는:
    상기 전송 버퍼 제약, 상기 제1 컨벡스 헐, 및 상기 제2 글로벌 컨벡스 헐에 기초하여 순응적 미디어 인코드 포인트들의 세트를 생성하는 단계;
    상기 순응적 미디어 인코드 포인트들의 세트를 포함하는 영역을 결정하는 단계;
    상기 영역에 연관된 경계를 식별하는 단계 - 상기 순응적 미디어 인코드 포인트들의 세트에 포함된 어떠한 순응적 미디어 인코드 포인트도 상기 경계의 제1 측에 위치되지 않음 - ; 및
    상기 경계를 따라 위치되지 않는 상기 순응적 미디어 인코드 포인트들의 세트에 포함되는 모든 순응적 미디어 인코드 포인트를 폐기하는 단계
    를 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  18. 제11항에 있어서, 상기 제1 인코딩된 미디어 시퀀스는 제1 인코딩된 서브시퀀스 및 제2 인코딩된 서브시퀀스를 포함하고, 상기 제1 인코딩된 서브시퀀스는 상기 인코딩 포인트들의 제1 세트에 포함된 제1 인코딩 포인트에 연관되고, 상기 제2 인코딩된 서브시퀀스는 상기 제1 인코딩 포인트와 동일하지 않은 상기 인코딩 포인트들의 제1 세트에 포함된 제2 인코딩 포인트에 연관되는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  19. 제11항에 있어서, 상기 미디어 타이틀에 연관된 상기 제1 서브시퀀스는 샷 시퀀스를 포함하는, 하나 이상의 비-일시적 컴퓨터 판독가능한 매체.
  20. 시스템으로서,
    명령어들을 저장하는 하나 이상의 메모리; 및
    상기 하나 이상의 메모리에 결합되는 하나 이상의 프로세서
    를 포함하고, 상기 하나 이상의 프로세서는 상기 명령어들을 실행할 때:
    미디어 타이틀에 연관된 소스 미디어 시퀀스를 복수의 샷 변경에 기초하여 복수의 서브시퀀스로 분할하고;
    인코딩 포인트들의 제1 세트 및 상기 복수의 서브시퀀스에 포함된 제1 서브시퀀스에 기초하여 서브시퀀스 인코드 포인트들의 제1 컨벡스 헐을 생성하고 - 각각의 서브시퀀스 인코드 포인트는 상이한 인코딩된 서브시퀀스에 연관됨 - ;
    전송 버퍼 제약, 상기 제1 컨벡스 헐, 및 상기 미디어 타이틀에 대한 재생 순서에서 상기 제1 서브시퀀스 이전에 발생하는 상기 미디어 타이틀의 부분에 연관된 미디어 인코드 포인트들의 제2 글로벌 컨벡스 헐에 기초하여, 미디어 인코드 포인트들의 제1 글로벌 컨벡스 헐을 생성하고;
    미디어 메트릭에 기초하여 상기 제1 글로벌 컨벡스 헐에 포함된 제1 미디어 인코드 포인트를 선택하고;
    상기 제1 미디어 인코드 포인트에 기초하여 제1 인코딩된 미디어 시퀀스를 결정하도록 - 상기 제1 인코딩된 미디어 시퀀스는 상기 미디어 타이틀의 재생 동안 엔드포인트 디바이스에 후속적으로 스트리밍됨 -
    구성되는, 시스템.
KR1020217024968A 2019-01-09 2020-01-08 미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화 KR102618101B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/244,033 2019-01-09
US16/244,033 US10911791B2 (en) 2019-01-09 2019-01-09 Optimizing encoding operations when generating a buffer-constrained version of a media title
PCT/US2020/012810 WO2020146549A1 (en) 2019-01-09 2020-01-08 Optimizing encoding operations when generating a buffer-constrained version of a media title

Publications (2)

Publication Number Publication Date
KR20210112363A true KR20210112363A (ko) 2021-09-14
KR102618101B1 KR102618101B1 (ko) 2023-12-27

Family

ID=69467765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024968A KR102618101B1 (ko) 2019-01-09 2020-01-08 미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화

Country Status (11)

Country Link
US (2) US10911791B2 (ko)
EP (1) EP3909249A1 (ko)
JP (1) JP7233546B2 (ko)
KR (1) KR102618101B1 (ko)
CN (1) CN113287319A (ko)
AU (1) AU2020206243B2 (ko)
BR (1) BR112021013514A2 (ko)
CA (1) CA3125607C (ko)
MX (1) MX2021008221A (ko)
SG (1) SG11202107169VA (ko)
WO (1) WO2020146549A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11019374B2 (en) * 2019-02-04 2021-05-25 Netflix, Inc. Techniques for efficiently performing subsequence-based encoding for a media title
US11115697B1 (en) * 2019-12-06 2021-09-07 Amazon Technologies, Inc. Resolution-based manifest generator for adaptive bitrate video streaming
US11503302B2 (en) * 2020-05-19 2022-11-15 Home Box Office, Inc. Content adaptive encoding
US11553188B1 (en) * 2020-07-14 2023-01-10 Meta Platforms, Inc. Generating adaptive digital video encodings based on downscaling distortion of digital video conient
US11277620B1 (en) * 2020-10-30 2022-03-15 Hulu, LLC Adaptive transcoding of profile ladder for videos
US11490127B2 (en) * 2020-12-31 2022-11-01 Ati Technologies Ulc Method and apparatus for providing cloud-based video encoding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110052087A1 (en) * 2009-08-27 2011-03-03 Debargha Mukherjee Method and system for coding images
US20110090949A1 (en) * 2008-09-27 2011-04-21 Tencent Technology (Shenzhen) Company Limited Multi-Channel Video Communication Method And System
US20180343458A1 (en) * 2017-02-23 2018-11-29 Netflix, Inc. Optimizing encoding operations when generating encoded versions of a media title

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302102B2 (en) 2001-09-26 2007-11-27 Reynolds Jodie L System and method for dynamically switching quality settings of a codec to maintain a target data rate
EP1908303A4 (en) 2005-07-01 2011-04-06 Sonic Solutions METHOD, DEVICE AND SYSTEM FOR USE IN MULTIMEDIA SIGNAL CODING
JP5381459B2 (ja) * 2009-07-27 2014-01-08 富士通株式会社 動画像編集装置、動画像編集方法及び動画像編集用コンピュータプログラム
US8837601B2 (en) 2010-12-10 2014-09-16 Netflix, Inc. Parallel video encoding based on complexity analysis
CN105721880B (zh) * 2011-06-30 2019-04-05 微软技术许可有限责任公司 用于降低视频编码和解码中的延迟的方法和系统
US9392304B2 (en) 2012-02-29 2016-07-12 Hulu, LLC Encoding optimization using quality level of encoded segments
US9571827B2 (en) * 2012-06-08 2017-02-14 Apple Inc. Techniques for adaptive video streaming
WO2015060297A1 (ja) * 2013-10-22 2015-04-30 日本電気株式会社 送信端末、通信システム、通信方法、および、プログラム
US10051294B2 (en) 2015-03-31 2018-08-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Compressed video buffering
US9788026B2 (en) 2015-08-25 2017-10-10 Imagine Communications Corp. Converting adaptive bitrate chunks to a streaming format
JP2017168878A (ja) * 2016-03-14 2017-09-21 ルネサスエレクトロニクス株式会社 半導体装置、符号化制御方法及びカメラ装置
US20180063549A1 (en) * 2016-08-24 2018-03-01 Ati Technologies Ulc System and method for dynamically changing resolution based on content
US11184621B2 (en) 2017-02-23 2021-11-23 Netflix, Inc. Techniques for selecting resolutions for encoding different shot sequences
US10742708B2 (en) 2017-02-23 2020-08-11 Netflix, Inc. Iterative techniques for generating multiple encoded versions of a media title
CN107145888A (zh) * 2017-05-17 2017-09-08 重庆邮电大学 视频字幕实时翻译方法
CN108965930B (zh) * 2017-12-29 2021-05-28 视联动力信息技术股份有限公司 一种视频数据处理的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110090949A1 (en) * 2008-09-27 2011-04-21 Tencent Technology (Shenzhen) Company Limited Multi-Channel Video Communication Method And System
US20110052087A1 (en) * 2009-08-27 2011-03-03 Debargha Mukherjee Method and system for coding images
US20180343458A1 (en) * 2017-02-23 2018-11-29 Netflix, Inc. Optimizing encoding operations when generating encoded versions of a media title

Also Published As

Publication number Publication date
JP2022516517A (ja) 2022-02-28
JP7233546B2 (ja) 2023-03-06
AU2020206243B2 (en) 2022-08-18
CA3125607C (en) 2023-11-28
US10911791B2 (en) 2021-02-02
US20200221141A1 (en) 2020-07-09
AU2020206243A1 (en) 2021-07-22
WO2020146549A1 (en) 2020-07-16
EP3909249A1 (en) 2021-11-17
MX2021008221A (es) 2021-08-11
BR112021013514A2 (pt) 2021-09-14
US20210160550A1 (en) 2021-05-27
CN113287319A (zh) 2021-08-20
CA3125607A1 (en) 2020-07-16
SG11202107169VA (en) 2021-07-29
KR102618101B1 (ko) 2023-12-27

Similar Documents

Publication Publication Date Title
KR102618101B1 (ko) 미디어 타이틀의 버퍼-제약 버전을 생성할 때의 인코딩 동작들의 최적화
US11758146B2 (en) Techniques for positioning key frames within encoded video sequences
US11444999B2 (en) Iterative techniques for generating multiple encoded versions of a media title
TWI511544B (zh) 用於可調適視訊串流之技術
US11196791B2 (en) Techniques for encoding a media title while constraining quality variations
US11722720B2 (en) Techniques for encoding a media title via multiple encoders
US20200169593A1 (en) Techniques for encoding a media title while constraining bitrate variations
US20220400261A1 (en) Processing video using masking windows
WO2023059689A1 (en) Systems and methods for predictive coding

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