KR20230143160A - 타이틀별 인코딩 래더들을 생성하기 위한 기술들 - Google Patents

타이틀별 인코딩 래더들을 생성하기 위한 기술들 Download PDF

Info

Publication number
KR20230143160A
KR20230143160A KR1020237029841A KR20237029841A KR20230143160A KR 20230143160 A KR20230143160 A KR 20230143160A KR 1020237029841 A KR1020237029841 A KR 1020237029841A KR 20237029841 A KR20237029841 A KR 20237029841A KR 20230143160 A KR20230143160 A KR 20230143160A
Authority
KR
South Korea
Prior art keywords
bitrate
ladder
encoding
video
quality
Prior art date
Application number
KR1020237029841A
Other languages
English (en)
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 KR20230143160A publication Critical patent/KR20230143160A/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 or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234345Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234354Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering signal-to-noise ratio parameters, e.g. requantization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Programmable Controllers (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

다양한 실시예들에서, 인코딩 래더 애플리케이션은 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들을 생성한다. 동작 시에, 인코딩 래더 애플리케이션은 제1 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제1 볼록 껍질을 생성한다. 인코딩 래더 애플리케이션은 제2 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제2 볼록 껍질을 생성한다. 제1 볼록 껍질 및 제2 볼록 껍질에 기반하여, 인코딩 래더 애플리케이션은 전체 볼록 껍질을 생성한다. 후속하여, 인코딩 래더 애플리케이션은 적어도 전체 볼록 껍질 및 래더 요건에 기반하여 미디어 타이틀에 대한 인코딩 래더를 생성한다. 유리하게도, 인코딩 래더에 의해 표현되는 품질과 비트레이트 사이의 절충들은 미디어 타이틀에 대해 맞춤화된다. 그 결과, 종래의 고정 비트레이트 래더들에 기인하는 인코딩 비효율성들이 감소될 수 있다.

Description

타이틀별 인코딩 래더들을 생성하기 위한 기술들
관련 출원들에 대한 상호 참조
본 출원은 2021년 2월 11일자로 출원된 미국 특허 출원 제17/174,121호의 이익을 주장하며, 이 미국 특허 출원은 본 명세서에 참조로 포함된다.
다양한 실시예들은 일반적으로 컴퓨터 과학 및 미디어 데이터 처리에 관한 것이며, 더 구체적으로는 타이틀별 인코딩 래더들(per-title encoding ladders)을 생성하기 위한 기술들에 관한 것이다.
전형적인 비디오 스트리밍 서비스는 사용자들에게 상이한 클라이언트 디바이스들의 범위에서 볼 수 있는 미디어 타이틀들의 라이브러리에 대한 액세스를 제공한다. 동작 시에, 주어진 클라이언트 디바이스는 다양한 접속 조건 하에서 비디오 스트리밍 서비스에 접속하므로, 상이한 이용가능한 네트워크 대역폭들에 취약할 수 있다. 주어진 미디어 타이틀이 재생 중단 없이 클라이언트 디바이스로 스트리밍될 수 있도록 보장하기 위한 노력으로, 이용가능한 네트워크 대역폭에 관계없이, 비디오 스트리밍 서비스는 전형적으로 미디어 타이틀의 다수의 상이한 인코딩을 미리 생성한다. "더 낮은 품질의" 인코딩들은 통상적으로 이용가능한 네트워크 대역폭이 비교적 낮을 때 클라이언트 디바이스로 스트리밍되며, "더 높은 품질의" 인코딩들은 통상적으로 이용가능한 네트워크 대역폭이 비교적 높을 때 클라이언트 디바이스로 스트리밍된다.
주어진 미디어 타이틀의 상이한 인코딩들을 미리 생성하기 위해, 비디오 스트리밍 서비스는 전형적으로 인코딩 래더에서 지정된 비트레이트 및 해상도 또는 "비트레이트-해상도 쌍들"의 다수의 조합들에서 대응하는 소스 비디오를 인코딩한다. 인코딩 래더에서의 각각의 비트레이트-해상도 쌍은 보통 상이한 비트레이트를 가지며, 이용가능한 네트워크 대역폭이 그 비트레이트 이상일 때, 대응하는 인코딩 비디오가 재생 중단이 감소되어 클라이언트 디바이스로 스트리밍될 수 있다.
클라이언트 디바이스 상에서 주어진 미디어 타이틀을 재생하기 위해, 이용가능한 네트워크 대역폭에 적어도 부분적으로 기반하여 미디어 타이틀에 대해 생성된 상이한 인코딩된 비디오들을 선택하는 엔드포인트 애플리케이션이 클라이언트 디바이스 상에서 실행될 수 있다. 주어진 인코딩된 비디오가 엔드포인트 애플리케이션에 의해 선택될 때, 선택된 인코딩된 비디오의 하나 이상의 별개의 부분 또는 "청크"가 재생을 위해 클라이언트 디바이스로 스트리밍된다. 선택된 인코딩된 비디오의 청크를 수신할 시에, 엔드포인트 애플리케이션은 그 청크를 디코딩하고, 그 다음으로, 클라이언트 디바이스 디스플레이와 동일한 해상도를 갖는 재구성된 비디오의 대응하는 청크를 생성하기 위해 결과적인 디코딩된 청크를 선택적으로 리샘플링한다. 엔드포인트 애플리케이션은 재구성된 비디오의 상이한 청크들이 클라이언트 디바이스 상에서 재생되게 하여 미디어 타이틀의 재생을 실시한다.
일반적으로, 미디어 타이틀의 상이한 비디오 인코딩들을 생성하기 위해 소스 비디오가 인코딩될 때 미디어 타이틀의 소스 비디오로부터 정보가 제거된다. 그 결과, 재구성된 비디오의 주어진 청크의 시각적 품질은 일반적으로 소스 비디오의 대응하는 청크의 시각적 품질보다 낮으며, 이는 재구성된 비디오의 청크가 소스 비디오의 대응하는 청크보다 비교적 더 많은 시각적 품질 손상들 또는 아티팩트들을 포함한다는 것을 의미한다. 또한, 재구성된 비디오의 주어진 청크의 시각적 품질은 소스 비디오의 대응하는 청크를 인코딩하는데 이용된 비트레이트가 감소함에 따라 전형적으로 감소한다.
인코딩 래더를 생성하는 하나의 접근법에서, 다양한 미디어 타이틀들에 대응하는 소스 비디오들은 각각의 미디어 타이틀에 대한 복수의 인코딩된 비디오를 생성하기 위해 다수의 비트레이트-해상도 쌍들로 인코딩된다. 그 다음, 재구성된 비디오들은 상이한 인코딩된 비디오들로부터 생성된다. 후속하여, 인코딩된 비디오들의 비트레이트들과 인코딩된 비디오들에 대응하는 재구성된 비디오들의 시각적 품질 레벨들 사이의 다양한 절충들이 평가된다. 이러한 비트레이트-품질 절충들에 기반하여, 인코딩 래더에 포함시키기 위해 비교적 적은 수의 비트레이트-해상도 쌍들이 선택되며, 각각의 비트레이트-해상도 쌍은 상이한 비트레이트에 대응한다. 결과적인 인코딩 래더는 "고정 비트레이트 래더"라고 알려져 있고, 미디어 타이틀들의 주어진 라이브러리에 포함된 모든 미디어 타이틀들에 대한 인코딩된 비디오들을 생성하는데 이용된다.
고정 비트레이트 래더를 이용하는 것의 하나의 단점은 상이한 소스 비디오들에 포함된 비디오 콘텐츠의 복잡성이 실질적으로 변할 수 있기 때문에, 고정 비트레이트 래더에 의해 표현되는 비트레이트와 시각적 품질 사이의 절충들이 일부 소스 비디오들에 대해 차선일 수 있다는 것이다. 이러한 경우들에서, 고정 비트레이트 래더를 이용하는 인코딩은 인코딩 및 전송 비효율성을 초래할 수 있다. 예를 들어, 고정 비트레이트 래더에서의 임의의 수의 비트레이트-해상도 쌍들의 비트레이트들은 주어진 저복잡성 소스 비디오에 대해 시각적 품질 포화가 발생하는 비트레이트를 초과할 수 있다. 이러한 "품질 포화 비트레이트"에 도달할 때, 소스 비디오를 인코딩하는데 이용되는 비트들의 수를 증가시키는 것은 대응하는 재구성된 비디오의 시각적 품질을 인지가능하게 증가시키지 않는다. 따라서, 품질 포화 비트레이트를 초과하는 비트레이트로 소스 비디오를 인코딩하는 것은 계산 리소스들을 낭비할 수 있고, 결과적인 인코딩된 비디오를 클라이언트 디바이스로 스트리밍하는 것은 네트워크 대역폭을 불필요하게 소비할 수 있다. 다른 예에서, 임의의 수의 소스 비디오들에 대해, 고정 비트레이트 래더에서의 임의의 수의 비트레이트-해상도 쌍들의 해상도들은 시각적 품질에 대해 차선일 수 있다. 예를 들어, 고정 비트레이트 래더에서의 주어진 비트레이트-해상도 쌍은 5000 kbps의 비트레이트 및 3840x2160의 해상도를 지정할 수 있다. 주어진 고복잡성 소스 비디오에 대해, 그 비트레이트-해상도 쌍(즉, 5000 kbps 및 3840x2160)에 대응하는 "래더" 인코딩된 비디오와 연관된 시각적 품질은 동일한 비트레이트(5000 kpbs) 및 더 낮은 해상도(예를 들어, 1920x1080)에서 생성되는 "비-래더" 인코딩된 비디오의 시각적 품질보다 낮을 수 있다. 5000 kbps의 비트레이트의 경우, 래더 인코딩된 비디오와 연관된 시각적 품질은 이에 따라 불필요하게 낮을 수 있다.
전술한 바와 같이, 본 기술분야에서는 소스 비디오들을 인코딩하기 위한 인코딩 래더들을 생성하는 더 효과적인 기술들이 필요하다.
본 발명의 일 실시예는 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들을 생성하는 컴퓨터에 의해 구현되는 방법을 제시한다. 이 방법은 제1 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제1 볼록 껍질(convex hull)을 생성하는 단계; 제2 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제2 볼록 껍질을 생성하는 단계; 제1 볼록 껍질 및 제2 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계; 및 적어도 전체 볼록 껍질 및 제1 래더 요건에 기반하여 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계를 포함한다.
종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은 미디어 타이틀의 주어진 라이브러리에 포함된 각각의 미디어 타이틀에 대해 그 미디어 타이틀에 대응하는 소스 비디오에 포함된 각각의 샷의 복잡성에 기반하여 상이한 인코딩 래더가 자동으로 생성된다는 것이다. 따라서, 개시된 기술들로, 각각의 인코딩 래더에 의해 표현되는 비트레이트와 시각적 품질 사이의 절충들이 주어진 미디어 타이틀에 대해 맞춤화된다. 그 결과, 종래의 고정 비트레이트 래더들에 기인하는 인코딩 비효율성들이 감소될 수 있다. 특히, 개시된 기술들은 주어진 인코딩 래더에서 지정된 비트레이트들 중 어느 것도 대응하는 소스 비디오의 품질 포화 비트레이트를 초과하지 않고, 주어진 인코딩 래더에서 임의의 수의 비트레이트-해상도 쌍들의 해상도들이 시각적 품질에 대해 적절히 최적화되는 것을 보장한다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 진보를 제공한다.
위에서 언급된 다양한 실시예들의 특징들이 상세하게 이해될 수 있도록, 위에 간략하게 요약된 본 발명의 개념들의 더 구체적인 설명은 다양한 실시예들을 참조할 수 있으며, 이들 중 일부는 첨부 도면들에 도시되어 있다. 그러나, 첨부 도면들은 본 발명의 개념들의 전형적인 실시예들만을 도시하며, 따라서 어떠한 방식으로도 범위를 제한하는 것으로 고려되어서는 안 되며, 다른 동등하게 효과적인 실시예들이 존재한다는 점에 유의해야 한다.
도 1은 다양한 실시예들의 하나 이상의 양태를 구현하도록 구성된 시스템의 개념도이다.
도 2는 다양한 실시예들에 따른, 도 1의 래더 생성기의 더 상세한 도면이다.
도 3은 다양한 실시예들에 따른, 도 2의 볼록 껍질 생성기들 중 하나의 더 상세한 도면이다.
도 4a 내지 도 4d는 다양한 실시예들에 따른, 도 3의 트렐리스 반복기가 순위화된 샷 데이터세트들에 기반하여 볼록 껍질을 생성하는 방법을 도시한다.
도 5a는 다양한 실시예들에 따른, 다수의 상이한 볼록 껍질들에 기반하여 도 2의 래더 생성기에 의해 생성되는 전체 볼록 껍질을 도시한다.
도 5b는 다양한 실시예들에 따른, 도 2의 렁 선택 엔진(rung selection engine)이 전체 볼록 껍질, 다수의 상이한 볼록 껍질들, 및 래더 요건 세트에 기반하여 인코딩 래더를 생성하는 방법을 도시한다.
도 6은 다양한 실시예들에 따른, 미디어 타이틀에 대한 인코딩 래더를 생성하기 위한 방법 단계들의 흐름도이다.
이하의 설명에서, 다양한 실시예들의 보다 철저한 이해를 제공하기 위해 다수의 특정 상세들이 제시된다. 그러나, 본 발명의 개념들은 이러한 특정 상세들 중 하나 이상 없이도 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다.
주어진 미디어 타이틀이 광범위한 네트워크 대역폭들 하에서 재생 중단 없이 클라이언트 디바이스로 스트리밍될 수 있도록 보장하기 위한 노력으로, 비디오 스트리밍 서비스는 전형적으로 미디어 타이틀에 대응하는 소스 비디오에 기반하여 인코딩된 비디오들의 세트를 미리 생성한다. 인코딩된 비디오들 각각은 인코딩 래더에서의 상이한 비트레이트-해상도 쌍에 대응하고, 이용가능한 네트워크 대역폭이 그 비트레이트-해상도 쌍에서 지정된 비트레이트 이상일 때 재생 중단이 감소되어 클라이언트 디바이스로 스트리밍될 수 있다.
클라이언트 디바이스에서 주어진 미디어 타이틀을 재생하기 위해, 이용가능한 네트워크 대역폭 및 선택적으로 클라이언트 디바이스 디스플레이의 해상도에 기반하여 인코딩 래더로부터 비트레이트-해상도 쌍들을 선택하는 엔드포인트 애플리케이션이 클라이언트 디바이스에서 실행될 수 있다. 주어진 비트레이트-해상도 쌍이 엔드포인트 애플리케이션에 의해 선택될 때, 비트레이트-해상도 쌍에 대응하는 인코딩된 비디오의 하나 이상의 청크가 재생을 위해 클라이언트 디바이스로 스트리밍된다. 선택된 인코딩된 비디오의 청크를 수신할 시에, 엔드포인트 애플리케이션은 청크를 디코딩하고, 그 다음으로, 클라이언트 디바이스 디스플레이와 동일한 해상도를 갖는 재구성된 비디오의 대응하는 청크를 생성하기 위해 결과적인 디코딩된 청크를 선택적으로 리샘플링한다. 엔드포인트 애플리케이션은 재구성된 비디오의 상이한 청크들이 클라이언트 디바이스 상에서 재생되게 하여 미디어 타이틀의 재생을 실시한다.
소스 비디오가 인코딩된 비디오들 각각을 생성하도록 인코딩될 때 정보가 소스 비디오로부터 제거되기 때문에, 재구성된 비디오의 주어진 청크의 시각적 품질은 일반적으로 소스 비디오의 대응하는 청크의 시각적 품질보다 낮다. 또한, 재구성된 비디오의 주어진 청크의 시각적 품질은 통상적으로 대응하는 인코딩된 비디오의 비트레이트가 감소함에 따라 감소한다.
인코딩 래더를 생성하는 하나의 접근법에서, 다양한 미디어 타이틀들에 대응하는 소스 비디오들은 각각의 미디어 타이틀에 대한 복수의 인코딩된 비디오를 생성하기 위해 다수의 비트레이트-해상도 쌍들로 인코딩된다. 인코딩된 비디오들의 비트레이트들과 인코딩된 비디오들에 대응하는 재구성된 비디오들의 시각적 품질 레벨들 사이의 다양한 절충들이 평가된다. 이러한 비트레이트-품질 절충들에 기반하여, 인코딩 래더에 포함시키기 위해 비교적 적은 수의 비트레이트-해상도 쌍들이 선택되며, 각각의 비트레이트-해상도 쌍은 상이한 비트레이트에 대응한다. 결과적인 인코딩 래더는 "고정 비트레이트 래더"라고 알려져 있고, 미디어 타이틀들의 주어진 라이브러리에 포함된 모든 미디어 타이틀들에 대한 인코딩된 비디오들을 생성하는데 이용된다.
고정 비트레이트 래더를 이용하는 것의 하나의 단점은 상이한 소스 비디오들에 포함된 비디오 콘텐츠의 복잡성이 실질적으로 변할 수 있기 때문에, 고정 비트레이트 래더에 의해 표현되는 비트레이트와 시각적 품질 사이의 절충들이 일부 소스 비디오들에 대해 차선일 수 있다는 것이다. 이러한 경우들에서, 고정 비트레이트 래더를 이용하는 인코딩은 인코딩 및 전송 비효율성을 초래할 수 있다. 예를 들어, 주어진 코덱 포맷으로, 주어진 저복잡성 비디오는 800 kbps의 품질 포화 비트레이트를 가질 수 있고, 이는 소스 비디오를 인코딩하는데 이용되는 비트레이트를 800 kbps를 초과하여 증가시키는 것이 대응하는 재구성된 비디오의 시각적 품질을 인지가능하게 증가시키지 않을 것임을 의미한다. 또한, 고정 비트레이트 래더에서의 다수의 비트레이트-해상도 포인트는 800 kbps보다 큰 비트레이트들을 가질 수 있다. 따라서, 이러한 비트레이트-해상도 포인트들에 기반하여 소스 비디오를 인코딩하는 것은 계산 리소스들을 낭비할 것이고, 결과적인 인코딩된 비디오들을 클라이언트 디바이스로 스트리밍하는 것은 네트워크 대역폭을 불필요하게 소비할 것이다. 또한, 인코딩된 비디오들의 총 크기는 불필요하게 클 것이고, 따라서 인코딩된 비디오들을 저장하는데 이용되는 메모리의 양은 인코딩된 비디오들이 저장된 어디에서나(예를 들어, 상이한 지리적 위치들에서) 비대해질 것이다. 다른 예에서, 고정 비트레이트 래더에 따르면, 주어진 고복잡성 소스 비디오는 5000 kbps 및 3840x2160의 비트레이트-해상도 포인트에서 인코딩될 수 있다. 그러나, 소스 비디오가 동일한 비트레이트이지만 1920x1080의 더 낮은 해상도로 인코딩되었다면, 대응하는 재구성된 비디오의 시각적 품질은 더 높을 것이다. 그러나, 고정 비트레이트 래더에 대응하는 인코딩된 비디오들만이 엔드포인트 애플리케이션에 의해 선택될 수 있기 때문에, 5000 kbps의 비트레이트에 대해 클라이언트 디바이스 상에서 재생되는 재구성된 비디오의 시각적 품질은 불필요하게 낮을 것이다.
그러나, 개시된 기술들로, 인코딩 래더 애플리케이션은 대응하는 소스 비디오에 포함된 각각의 샷의 복잡성 및 임의의 수의 래더 요건들에 기반하여 각각의 미디어 타이틀에 대해 상이한 인코딩 래더를 생성한다. 일부 실시예들에서, 인코딩 래더 애플리케이션은 소스 비디오에 포함된 각각의 샷을 다수의 해상도들로 그리고 양자화 파라미터("QP")의 다수의 값들에 걸쳐 인코딩하여 인코딩된 샷들을 생성한다. QP의 값이 높을수록, 대응하는 재구성된 샷에 대한 더 낮은 시각적 품질 레벨의 대가로 인코딩된 샷의 결과적인 비트레이트가 낮아진다. 각각의 해상도에 대해, 인코딩 래더 애플리케이션은 그 해상도를 갖는 인코딩된 샷들에 기반하여 비디오 레이트-품질 포인트들의 볼록 껍질을 생성한다. 비디오 레이트-품질 포인트들 각각은 인코딩된 비디오, 인코딩된 비디오의 비트레이트, 인코딩된 비디오의 해상도, 및 인코딩된 비디오의 시각적 품질 레벨을 지정한다.
주어진 해상도에 대한 볼록 껍질을 생성하기 위해, 인코딩 래더 애플리케이션은 비트레이트를 계산하고 해상도를 갖는 각각의 인코딩된 샷에 대한 시각적 품질 레벨을 추정한다. 이어서, 인코딩 래더 애플리케이션은 비트레이트들 및 시각적 품질 레벨들에 기반하여 최적화 동작들을 수행함으로써 인코딩된 샷들을 인코딩된 비디오들로 집성한다. 해상도에 대해, 인코딩된 비디오들 각각은 상이한 비트레이트에 대한 최고 시각적 품질 레벨과 연관된다. 인코딩 래더 애플리케이션은 해상도에 대한 볼록 껍질을 결정하기 위해 결과적인 인코딩된 비디오들 각각에 대해 상이한 비디오 레이트-품질 포인트를 생성한다.
후속하여, 인코딩 래더 애플리케이션은 상이한 해상도들에 대한 볼록 껍질들에 기반하여 비디오 비트레이트-품질 포인트들의 전체 볼록 껍질을 생성한다. 전체 볼록 껍질을 통해 지정된 인코딩된 비디오들 각각은 대응하는 비트레이트에 대한 최고 시각적 품질 레벨과 연관된다. 따라서, 전체 볼록 껍질은 각각의 해상도를 갖는 임의의 수(없음을 포함함)의 인코딩된 비디오를 지정한다.
인코딩 래더를 생성하기 위해, 인코딩 래더 애플리케이션은 각각의 래더 요건을 순차적으로 처리한다. 래더 요건들 각각은 인코딩 래더가 만족시킬 필요가 있는 임의의 수 및/또는 유형의 조건들, 제약들, 기준들 등을 지정할 수 있다. 주어진 래더 요건을 처리하기 위해, 인코딩 래더 애플리케이션은 누적된 렁 포인트들이 집합적으로 래더 요건을 만족시키도록 새로운 "렁 포인트들"로서 임의의 수(없음을 포함함)의 비디오 레이트-품질 포인트를 선택한다. 인코딩 래더 애플리케이션은 전체 볼록 껍질로부터, 그리고 필요한 경우, 해상도별 볼록 껍질들 중 하나로부터 우선적으로 각각의 렁 포인트를 결정한다. 인코딩 래더 애플리케이션은 임의의 기술적으로 실현가능한 방식으로 렁 포인트들을 결정할 수 있다.
일부 실시예들에서, 인코딩 래더 애플리케이션은 최소 비트레이트 요건, 품질 포화 요건, 비트레이트 간격 요건, 및 필수 해상도 요건을 순차적으로 처리한다. 인코딩 래더 애플리케이션은 최소 비트레이트 요건에서 지정된 최소 허용 비트레이트에 기반하여 전체 볼록 껍질로부터 최저 렁 포인트를 결정한다. 품질 포화 요건을 처리하기 위해, 인코딩 래더 애플리케이션은 전체 볼록 껍질에 기반하여 품질 포화 비트레이트를 계산한다. 인코딩 래더 애플리케이션은 이후 품질 포화 비트레이트의 최소치 및 품질 포화 요건에서 지정된 최대 허용 비트레이트에 기반하여 전체 볼록 껍질로부터 최고 렁 포인트를 결정한다. 인코딩 래더 애플리케이션은 비트레이트 간격 요건에서 지정된 타겟 비트레이트 간격에 기반하여 최저 렁 포인트와 최고 렁 포인트 사이에 있는 전체 볼록 껍질의 영역으로부터 임의의 수의 렁 포인트들을 결정한다. 렁 포인트들에 아직 표현되지 않은 각각의 필수 해상도에 대해, 인코딩 래더 애플리케이션은 해상도-특정 렁 포인트를 결정한다. 전체 볼록 껍질에서의 적어도 하나의 비디오 비트레이트-품질 포인트가 필수 해상도를 지정하는 경우, 인코딩 래더 애플리케이션은 전체 볼록 껍질로부터 해상도-특정 렁 포인트를 결정한다. 그렇지 않으면, 인코딩 래더 애플리케이션은 필수 해상도에 대해 볼록 껍질로부터 해상도-특정 렁 포인트를 결정한다.
래더 요건들을 처리한 후에, 인코딩 래더 애플리케이션은, 제한 없이, 렁 포인트들에 대응하는 비트레이트-해상도 쌍들을 포함하는 인코딩 래더를 생성한다. 비트레이트-해상도 쌍들 각각은 상이한 "최적화된" 인코딩된 비디오의 비트레이트 및 해상도를 지정하고, 여기서, 해상도가 아닌 비트레이트 및 시각적 품질 레벨은 최적화된 인코딩된 비디오의 인코딩된 샷들에 걸쳐 변할 수 있다. 인코딩 래더 애플리케이션은 또한, 제한 없이, 렁 포인트들에 대응하는 최적화된 인코딩된 비디오들을 포함하는 최적화된 인코딩된 비디오 세트를 생성한다. 인코딩 래더 애플리케이션은 임의의 수 및/또는 유형의 엔드포인트 애플리케이션들에 의한 이용을 위해 임의의 수의 클라이언트 디바이스들에 인코딩 래더를 저장 및/또는 전송한다. 인코딩 래더 애플리케이션은 또한 최적화된 인코딩된 비디오 세트를 콘텐츠 전달 네트워크에 저장 및/또는 전송한다.
종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은 래더 인코딩 애플리케이션이 대응하는 소스 비디오에서의 각각의 샷의 복잡성에 기반하여 각각의 미디어 타이틀에 대해 상이한 인코딩 래더를 생성한다는 것이다. 더 구체적으로, 래더 인코딩 애플리케이션은 주어진 소스 비디오의 샷들에 걸쳐 비트레이트와 시각적 품질 사이의 절충들을 최적화하여 대응하는 미디어 타이틀에 대해 맞춤화되는 인코딩 래더를 생성한다. 그 결과, 종래의 고정 비트레이트 래더들에 기인하는 비효율성들이 감소될 수 있다. 특히, 래더 인코딩 애플리케이션은 인코딩 래더에 의해 표현되는 최고 비트레이트가 대응하는 소스 비디오의 품질 포화 비트레이트를 초과하지 않는 것을 보장할 수 있다. 그 결과, 이용가능한 네트워크 대역폭이 품질 포화 대역폭을 초과할 때, 스트리밍을 위해 선택된 최적화된 인코딩된 비디오의 비트레이트는 대응하는 재구성된 비디오의 시각적 품질에 눈에 띄는 영향을 주지 않고 감소될 수 있다. 또한, 전체 볼록 껍질로부터 렁 포인트들을 우선적으로 선택함으로써, 인코딩 래더 애플리케이션은 각각의 인코딩 래더에서의 임의의 수의 비트레이트-해상도 쌍들이 시각적 품질에 대해 적절히 최적화되는 것을 보장한다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 진보를 제공한다.
시스템 개요
도 1은 다양한 실시예들의 하나 이상의 양태를 구현하도록 구성된 시스템(100)의 개념도이다. 설명의 목적으로, 유사한 객체들의 다수의 인스턴스들 또는 버전들은 객체를 식별하는 참조 번호들 및 필요한 경우 인스턴스를 식별하는 괄호 영숫자 문자(들)로 표시된다. 도시된 바와 같이, 일부 실시예들에서, 시스템(100)은 제한 없이, 컴퓨팅 인스턴스(110), 클라이언트 디바이스(190), 콘텐츠 전달 네트워크("CDN")(180), 샷 변경 검출기(152), 및 인코더(150)를 포함한다.
일부 다른 실시예들에서, 시스템(100)은 클라이언트 디바이스(190), CDN(180), 샷 변경 검출기(152), 또는 이들의 임의의 조합을 생략할 수 있다. 동일한 또는 다른 실시예들에서, 시스템(100)은 컴퓨팅 인스턴스(110)의 다수의 인스턴스들, 클라이언트 디바이스(190)의 다수의 인스턴스들, CDN(180)의 다수의 인스턴스들, 인코더(150)의 다수의 인스턴스들, 또는 이들의 임의의 조합을 제한 없이 포함할 수 있다. 단지 설명의 목적을 위해, 컴퓨팅 인스턴스(110) 및 클라이언트 디바이스(190)의 다수의 인스턴스들은 또한 본 명세서에서 각각 "컴퓨팅 인스턴스들(110)" 및 "클라이언트 디바이스들(190)"로 지칭된다.
시스템(100)의 구성요소들은 임의의 수의 공유된 지리적 위치들 및/또는 임의의 수의 상이한 지리적 위치들에 걸쳐 분산될 수 있고/있거나 하나 이상의 클라우드 컴퓨팅 환경(즉, 캡슐화된 공유된 리소스, 소프트웨어, 데이터 등)에서 임의의 조합으로 구현될 수 있다. 일부 실시예들에서, 각각의 컴퓨팅 인스턴스(110)는 클라우드 컴퓨팅 환경에서 구현되거나, 임의의 다른 분산 컴퓨팅 환경의 일부로서 구현되거나, 독립형 방식으로 구현될 수 있다.
도시된 바와 같이, 컴퓨팅 인스턴스(110)는, 제한 없이, 프로세서(112) 및 메모리(116)를 포함한다. 프로세서(112)는 명령어들을 실행할 수 있는 임의의 명령어 실행 시스템, 장치, 또는 디바이스일 수 있다. 예를 들어, 프로세서(112)는 중앙 처리 유닛, 그래픽 처리 유닛, 제어기, 마이크로제어기, 상태 기계, 또는 이들의 임의의 조합을 포함할 수 있다. 메모리(116)는 컴퓨팅 인스턴스(110)의 프로세서(112)에 의한 이용을 위해 소프트웨어 애플리케이션들 및 데이터와 같은 콘텐츠를 저장한다. 메모리(116)는 랜덤 액세스 메모리, 판독 전용 메모리, 플로피 디스크, 하드 디스크, 또는 임의의 다른 형태의 로컬 또는 원격 디지털 저장소와 같은 쉽게 이용가능한 메모리 중 하나 이상일 수 있다.
일부 다른 실시예들에서, 각각의 컴퓨팅 인스턴스(110)는 프로세서(112)의 임의의 수의 인스턴스들 및 메모리(116)의 임의의 수의 인스턴스들을 임의의 조합으로 제한 없이 포함할 수 있다. 특히, 임의의 수(하나를 포함함)의 컴퓨팅 인스턴스들(110)은 임의의 기술적으로 실현가능한 방식으로 다중처리 환경을 제공할 수 있다.
일부 실시예들에서, 저장소(도시되지 않음)는 메모리(116)를 보충하거나 대체할 수 있다. 저장소는 프로세서(112)에 액세스가능한 임의의 수 및 유형의 외부 메모리들을 포함할 수 있다. 예를 들어, 제한 없이, 저장소는 보안 디지털 카드, 외부 플래시 메모리, 휴대용 컴팩트 디스크 판독 전용 메모리, 광학 저장 디바이스, 자기 저장 디바이스, 또는 이들의 임의의 적절한 조합을 포함할 수 있다.
일반적으로, 각각의 컴퓨팅 인스턴스(110)는 하나 이상의 소프트웨어 애플리케이션을 구현하도록 구성된다. 단지 설명의 목적을 위해, 각각의 소프트웨어 애플리케이션은 컴퓨팅 인스턴스(110)의 메모리(116)에 상주하고 컴퓨팅 인스턴스(110)의 프로세서(112) 상에서 실행되는 것으로서 설명된다. 그러나, 일부 다른 실시예들에서, 각각의 소프트웨어 애플리케이션의 기능은 임의의 조합으로 임의의 수의 컴퓨팅 인스턴스들(110)의 메모리(116)의 임의의 수의 인스턴스들에 상주하고 임의의 수의 컴퓨팅 인스턴스들(110)의 프로세서(112)의 임의의 수의 인스턴스들 상에서 실행되는 임의의 수의 다른 소프트웨어 애플리케이션들에 걸쳐 분산될 수 있다. 또한, 임의의 수의 소프트웨어 애플리케이션들의 기능은 단일 소프트웨어 애플리케이션으로 통합될 수 있다.
특히, 일부 실시예들에서, 컴퓨팅 인스턴스(110)는 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성하도록 구성된다. 도시된 바와 같이, 일부 실시예들에서, 인코딩 래더(172)는, 제한 없이, 최적화된 인코딩된 비디오들(178(1)-178(L))에 각각 대응하는 비트레이트-해상도 쌍들(174(1)-174(L))을 포함하며, 여기서 L은 임의의 양의 정수일 수 있다. 동일한 또는 다른 실시예들에서, 최적화된 인코딩된 비디오 세트(176)는, 제한 없이, 최적화된 인코딩된 비디오들(178(1)-178(L))을 포함한다.
단지 설명의 목적으로, 비트레이트-해상도 쌍들(174)은 본 명세서에서 개별적으로 "비트레이트-해상도 쌍(174)"으로서 그리고 집합적으로 "비트레이트-해상도 쌍들(174)"로서 지칭되기도 한다. 최적화된 인코딩된 비디오들(178(1)-178(L))은 본 명세서에서 개별적으로 "최적화된 인코딩된 비디오(178)"로서 그리고 집합적으로 "최적화된 인코딩된 비디오들(178)"로서 지칭되기도 한다.
비트레이트-해상도 쌍들(174) 각각은 비트레이트-해상도 쌍(174)에 대응하는 최적화된 인코딩된 비디오(178)의 비트레이트(도 1에 도시되지 않음) 및 해상도(도 1에 명시적으로 도시되지 않음)를 지정하지만 이에 제한되지 않는다. 최적화된 인코딩된 비디오(178)의 해상도는 미디어 타이틀에 대응하는 소스 비디오(122)가 최적화된 인코딩된 비디오(178)를 생성하도록 인코딩되는 해상도이다. 단지 설명의 목적으로, 인코딩 래더(172)에 의해 표현되는 비트레이트들 및 해상도들은 비트레이트-해상도 쌍들(174(1)-174(L))의 고유 비트레이트들 및 고유 해상도들을 각각 지칭한다.
소스 비디오(122)는 임의의 양 및/또는 유형의 비디오 콘텐츠를 포함하지만 이에 제한되지 않는다. 비디오 콘텐츠의 일부 예들은, 제한 없이, 몇 가지 예를 들자면, 장편 영화들, 텔레비전 프로그램들의 에피소드들, 및 뮤직 비디오들의 임의의 부분(전부를 포함함)을 포함한다. 최적화된 인코딩된 비디오들(178) 각각은 소스 비디오(122)에 포함된 비디오 콘텐츠로부터 도출되는 인코딩된 비디오 콘텐츠를 포함하지만 이에 제한되지는 않는다.
일부 실시예들에서, 컴퓨팅 인스턴스(110)는 인코딩 래더(172)를 임의의 수의 클라이언트 디바이스들(190)에 전송하고 최적화된 인코딩된 비디오 세트(176)를 CDN(180)에 전송하도록 구성된다. 클라이언트 디바이스(190)는 엔드포인트 애플리케이션(192)을 실행하고 임의의 유형의 디스플레이(194)를 통해 이미지 및/또는 임의의 다른 유형의 시각적 콘텐츠를 표시할 수 있는 임의의 유형의 디바이스일 수 있다. 예를 들어, 클라이언트 디바이스(190)는, 제한 없이, 스마트 텔레비전, 게임 콘솔, 데스크톱 컴퓨터, 랩톱, 스마트폰, 태블릿 등일 수 있다. 디스플레이(194)는, 제한 없이, 액정 디스플레이, 발광 다이오드 디스플레이, 프로젝션 디스플레이, 플라즈마 디스플레이 패널 등일 수 있다.
CDN(180)은 최적화된 인코딩된 비디오 세트(176)의 임의의 수의 사본들 및 임의의 양 및/또는 유형의 다른 디지털 콘텐츠를 임의의 수의 상이한 지리적 영역들에 위치하는 임의의 수의 서버들에 저장한다. 동일한 또는 다른 실시예들에서, CDN(180)은 스트림 요청(182)의 인스턴스들에 응답하여 클라이언트 디바이스들(190)에 디지털 콘텐츠를 전송한다.
일부 실시예들에서, 클라이언트 디바이스(190) 상에서 소스 비디오(122)와 연관된 미디어 타이틀을 재생하기 위해, 클라이언트 디바이스(190) 상에서 실행되는 엔드포인트 애플리케이션(192)은 클라이언트 디바이스(190)와 CDN(180) 사이의 접속의 이용가능한 네트워크 대역폭 및/또는 디스플레이(194)의 해상도에 기반하여 인코딩 래더(172)에 포함된 비트레이트-해상도 쌍들(174) 중 하나를 선택한다. 엔드포인트 애플리케이션(192)은 CDN(180)이 비트레이트-해상도 쌍들(174) 중 선택된 하나에 대응하는 최적화된 인코딩된 비디오(178)의 적어도 일부분을 클라이언트 디바이스(190)에 스트리밍할 것을 요청하는 스트림 요청(182)을 CDN(180)에 전송한다. 이에 응답하여, CDN(180)은 최적화된 인코딩된 비디오(178)의 청크들을 재생을 위해 클라이언트 디바이스(190)에 스트리밍한다.
일부 실시예들에서, 최적화된 인코딩된 비디오(178)의 각각의 청크는 인코딩된 샷(188)의 상이한 인스턴스이다. 인코딩된 샷(188)의 각각의 인스턴스는 샷들(158(1)-158(M)) 중 상이한 샷에 포함된 비디오 콘텐츠로부터 도출되는 인코딩된 비디오 콘텐츠를 포함하며, 여기서 M은 임의의 양의 정수일 수 있다. 일부 실시예들에서, 샷들(158(1)-158(M)) 각각은 통상적으로 유사한 시공간 특성들을 갖고 중단되지 않는 기간 동안 실행되는 소스 비디오(122)의 프레임들의 세트를 포함하지만 이에 제한되지 않는다. 동일한 또는 다른 실시예들에서, 샷들(158(1)-158(M)) 각각은 단일 카메라 또는 카메라의 가상 표현(예로서, 컴퓨터 애니메이션 비디오들의 경우)으로부터 연속적으로 캡처된다. 샷들(158(1)-158(M))은 함께 연속적이고 중첩되지 않는 방식으로 소스 비디오(122)의 길이에 걸쳐 있다.
단지 설명의 목적으로, 도 1은 특정 시점에서 선택되어 클라이언트 디바이스(190)로 스트리밍되는 인코딩된 샷(188)을 도시한다. 일부 실시예들에서, 인코딩된 샷(188)을 수신하면, 엔드포인트 애플리케이션(192)은 인코딩된 샷(188)을 디코딩하여 디코딩된 샷(도시되지 않음)을 생성한다. 엔드포인트 애플리케이션(192)은 디스플레이(194)와 동일한 해상도를 갖는 재구성된 샷(198)을 생성하기 위해 디코딩된 샷에 대해 임의의 수(없음을 포함함) 및/또는 유형의 리샘플링 동작들(예를 들어, 업샘플링 동작들 또는 다운샘플링 동작들)을 수행한다. 엔드포인트 애플리케이션(192)은 재구성된 샷(190)이 클라이언트 디바이스(190) 상에서 재생되게 한다.
샷들(158(1)-158(M))은 또한 본 명세서에서 개별적으로 "샷(158)"으로서 그리고 집합적으로 "샷들(158)"로서 지칭된다. 인코딩된 샷(188)의 인스턴스들은 또한 본 명세서에서 개별적으로 "인코딩된 샷(188)"으로서 그리고 집합적으로 "인코딩된 샷들(188)"로서 지칭된다. 재구성된 샷(198)의 인스턴스들은 또한 본 명세서에서 개별적으로 "재구성된 샷(198)"으로서 그리고 집합적으로 "재구성된 샷들(198)"로서 지칭된다.
시간 경과에 따라, 클라이언트 디바이스(190)는 전형적으로 샷들(158)의 시퀀스에 대응하는 인코딩된 샷들(188)의 시퀀스를 수신한다. 엔드포인트 애플리케이션(192)은 샷들(158)의 시퀀스에 대응하는 재구성된 샷들(198)의 시퀀스를 생성하고, 재구성된 샷들(198)의 시퀀스가 클라이언트 디바이스(190) 상에서 재생되어 미디어 타이틀의 적어도 일부분의 재생을 실시하게 한다. 단지 설명의 목적을 위해, 재구성된 비디오(도시되지 않음)는 샷들(158(1)-158(M))을 각각 근사화하는 M개의 상이한 재구성된 샷(198)을 포함하지만 이에 제한되지 않는다.
본 명세서에서 전술한 바와 같이, 인코딩 래더를 생성하는 하나의 종래의 접근법에서, 다양한 미디어 타이틀들에 대응하는 소스 비디오들은 각각의 미디어 타이틀에 대한 복수의 인코딩된 비디오를 생성하기 위해 다수의 비트레이트-해상도 쌍들로 인코딩된다. 인코딩된 비디오들의 비트레이트들과 인코딩된 비디오들에 대응하는 재구성된 비디오들의 시각적 품질 레벨들 사이의 다양한 절충들에 기반하여, 비교적 적은 수의 비트레이트-해상도 쌍들이 인코딩 래더에 포함시키기 위해 선택된다. 선택된 비트레이트-해상도 쌍들 각각은 상이한 비트레이트에 대응하고, 결과적인 인코딩 래더는 "고정 비트레이트 래더"라고 알려져 있다. 고정 비트레이트 래더는 미디어 타이틀들의 주어진 라이브러리에 포함된 모든 미디어 타이틀들에 대한 인코딩된 비디오들을 생성하는데 이용된다.
고정 비트레이트 래더를 이용하는 하나의 단점은 상이한 소스 비디오들에 포함된 비디오 콘텐츠의 복잡성들이 실질적으로 변할 수 있기 때문에, 고정 비트레이트 래더에 의해 표현되는 비트레이트와 시각적 품질 사이의 절충들이 일부 소스 비디오들에 대해 차선일 수 있다는 것이다. 본 명세서에서 더 상세히 전술한 바와 같이, 고정 비트레이트 래더를 이용하는 인코딩은 이러한 경우들에서 인코딩 및 전송 비효율성들을 초래할 수 있다.
샷 기반 인코딩을 이용한 인코딩 래더의 생성
위의 문제들을 해결하기 위해, 시스템(100)은, 제한 없이, 샷들(158) 및 래더 요건 세트(124)의 복잡성들에 기반하여 미디어 타이틀에 대한 인코딩 래더(172)를 맞춤화하는 인코딩 래더 애플리케이션(130)을 포함한다. 도시된 바와 같이, 일부 실시예들에서, 인코딩 래더 애플리케이션(130)은 또한 인코딩 래더(172) 및 소스 비디오(122) 둘 다에 대응하는 최적화된 인코딩된 비디오 세트(176)를 생성한다. 래더 요건 세트(124)는, 제한 없이, 인코딩 래더(172)가 만족시켜야 하는 임의의 수 및/또는 유형의 래더 요건들(도 1에 도시되지 않음)을 포함한다.
일부 실시예들에서, 래더 요건 세트(124)는, 제한 없이, 최고 허용 비트레이트를 지정하고 인코딩 래더(172)에 의해 표현되는 최고 비트레이트가 품질 포화 비트레이트(도 1에 도시되지 않음)도 최고 허용 비트레이트도 초과하지 않아야 한다고 규정하는 품질 포화 요건을 포함한다. 동일한 또는 다른 실시예들에서, 래더 요건 세트(124)는, 제한 없이, 인코딩 래더(172)가 나타내야 하는 임의의 수의 필수 해상도들을 지정하는 필수 해상도 요건을 포함한다.
도시되지는 않았지만, 일부 실시예들에서, 인코딩 래더 애플리케이션(130)은 인코딩 래더(172)의 임의의 수의 인스턴스들을 생성하고, 선택적으로 래더 요건 세트(124)의 상이한 인스턴스에 기반하여 미디어 타이틀에 대해 각각 맞춤화되는 최적화된 인코딩된 비디오 세트(176)의 대응하는 인스턴스들을 생성할 수 있다. 동일한 또는 다른 실시예들에서, 임의의 수의 미디어 타이틀들 각각에 대해, 인코딩 래더 애플리케이션(130)은 인코딩 래더(172)의 임의의 수의 인스턴스들을 생성하고, 선택적으로 래더 요건 세트(124)의 임의의 수의 인스턴스들에 기반하여 미디어 타이틀에 대해 각각 맞춤화되는 최적화된 인코딩된 비디오 세트(176)의 대응하는 인스턴스들을 생성할 수 있다.
도시된 바와 같이, 일부 실시예들에서, 인코딩 래더 애플리케이션(130)은 컴퓨팅 인스턴스(110)의 메모리(116)에 상주하고 컴퓨팅 인스턴스(110)의 프로세서(112) 상에서 실행된다. 일부 다른 실시예들에서, 인코딩 래더 애플리케이션(130)은 임의의 수의 컴퓨팅 인스턴스들(110)의 메모리(116)의 임의의 수의 인스턴스들에 상주하고 임의의 조합으로 임의의 수의 컴퓨팅 인스턴스들(110)의 프로세서(112)의 임의의 수의 인스턴스들에서 실행될 수 있다. 동일한 또는 다른 실시예들에서, 인코딩 래더 애플리케이션(130)의 기능은 임의의 수의 컴퓨팅 인스턴스들(110) 상에서 실행되는 임의의 수의 소프트웨어 애플리케이션들에 걸쳐 분산될 수 있다.
일부 실시예들에서, 인코딩 래더 애플리케이션(130)은 샷 인코딩 엔진(140) 및 래더 생성기(170)를 포함하지만 이에 제한되지는 않는다. 도시된 바와 같이, 샷 인코딩 엔진(140)은 소스 비디오(122)를 샷들(158(1)-158(M))로 분할한다. 샷 인코딩 엔진(140)은 임의의 기술적으로 실현가능한 방식으로 소스 비디오(122)를 임의의 수 및/또는 유형의 샷들(158)로 분할할 수 있다. 예를 들어, 일부 실시예들에서, 샷 인코딩 엔진(140)은 샷 변경들(도시되지 않음)에 기반하여 소스 비디오(122)를 샷들(158)로 분할한다. 각각의 샷 변경은 샷들(158)의 상이한 쌍 사이의 경계를 지정한다. 샷 인코딩 엔진(140)은 임의의 기술적으로 실현가능한 방식으로 샷 변경들을 결정할 수 있다.
도시된 바와 같이, 일부 실시예들에서, 샷 인코딩 엔진(140)은 소스 비디오(122)를 샷 변경 검출기(152)로 전송한다. 샷 변경들을 결정하기 위해, 샷 변경 검출기(152)는 임의의 수의 샷 검출 알고리즘들을 소스 비디오(122)에 적용한다. 샷 검출 알고리즘들의 일부 예들은 다중스케일 절대차 합 알고리즘(multi-scale sum-of-absolute-differences algorithm), 모션-보상된 잔차 에너지 알고리즘, 차이 히스토그램 알고리즘, 및 히스토그램 차이 알고리즘을 포함하지만, 이에 제한되지는 않는다. 이어서, 샷 변경 검출기(152)는 샷 변경들을 샷 인코딩 엔진(140)으로 전송한다. 일부 다른 실시예들에서, 샷 인코딩 엔진(140)은 소스 비디오(122)에 대해 임의의 수의 샷 검출 동작들을 수행하여 샷 변경들을 결정할 수 있다.
일부 실시예들에서, 샷 인코딩 엔진(140)은 또한 소스 비디오(122)로부터 관련없는 픽셀들을 제거한다. 예를 들어, 샷 인코딩 엔진(140)은 소스 비디오(122)의 경계 섹션들을 따라 흑색 바들에 포함된 픽셀들을 제거할 수 있다. 동일한 또는 다른 실시예들에서, 샷 인코딩 엔진(140)은 샷들(158) 각각의 초기 프레임이 인코딩 동작들 동안 키 프레임으로서 인코딩되는 것을 보장한다. 일부 실시예들에서, "키 프레임"이 인코딩된 샷(188)에 포함될 때, 인코딩된 샷(188)의 키 프레임 및 모든 후속 프레임들은 인코딩된 샷들(188)의 시퀀스(예를 들어, 인코딩된 비디오)의 임의의 선행 프레임들과 독립적으로 디코딩된다.
샷 인코딩 엔진(140)은 샷들(158)의 상이한 초기 프레임들이 임의의 기술적으로 실현가능한 방식으로 키 프레임들로서 인코딩되는 것을 보장할 수 있다. 예를 들어, 일부 실시예들에서, 샷 인코딩 엔진(140)은 키 프레임 위치 리스트(도시되지 않음)에 기반하여 키 프레임들로서 프레임들을 인코딩하도록 인코더(150)를 구성한다. 일부 다른 실시예들에서, 샷 인코딩 엔진(140)은 샷들(158)의 상이한 초기 프레임들을 키 프레임들로서 인코딩하기 위해 임의의 수 및/또는 유형의 인코딩 동작들을 수행한다.
본 기술분야의 통상의 기술자가 인식하는 바와 같이, 재생 동안, 소스 비디오(122)와 연관된 미디어 타이틀은 임의의 수의 관련 기준들에 기반하여 시청 경험을 최적화하기 위해 정렬된 키 프레임들에서 최적화된 인코딩된 비디오들(178)로부터 도출된 미디어 타이틀의 디코딩된 버전들 사이에서 전환가능하다. 관련 기준들의 예들은 현재 접속 대역폭, 현재 접속 레이턴시, 다음에 스트리밍될 샷(158)의 콘텐츠 등을 포함한다.
도시된 바와 같이, 일부 실시예들에서, 샷 인코딩 엔진(140)은 샷들(158(1)-158(M)), 해상도들(142(1)-142(N)), 및 인코딩 파라미터 세트들(144(1)-144(P))에 기반하여 인코딩된 샷 세트들(160(1,1)-160(N,M))을 생성하며, 여기서 N 및 P는 임의의 양의 정수들일 수 있다. 단지 설명의 목적을 위해, 인코딩된 샷 세트들(160(1,1)-160(M,N))은 또한 본 명세서에서 개별적으로 "인코딩된 샷 세트(160)"로서 그리고 집합적으로 "인코딩된 샷 세트들(160)"로서 지칭된다. 해상도들(142(1)-142(N))은 또한 본 명세서에서 개별적으로 "해상도(142)"로서 그리고 집합적으로 "해상도들(142)"로서 지칭된다. 인코딩 파라미터 세트들(144(1)-144(P))은 또한 본 명세서에서 개별적으로 "인코딩 파라미터 세트(144)"로서 그리고 집합적으로 "인코딩 파라미터 세트들(144)"로서 지칭된다.
인코딩 파라미터 세트들(144) 각각은 임의의 수 및/또는 유형의 인코딩 파라미터들의 세트에 대한 상이한 세트의 값들을 지정한다. 일부 실시예들에서, 인코딩 파라미터 세트들(144) 각각은, 제한 없이, 비디오 콘텐츠를 인코딩할 때 비트레이트 및 시각적 품질 레벨의 관점에서 단조 성능을 허용하는 QP에 대한 상이한 값을 지정한다. QP에 대한 값은 본 명세서에서 "QP 값"으로도 지칭된다. QP 값이 높을수록, 인코딩된 비디오 콘텐츠로부터 도출되는 디코딩된 비디오 콘텐츠에 대한 더 낮은 시각적 품질 레벨의 대가로 인코딩된 비디오 콘텐츠의 결과적인 비트레이트가 낮아진다.
단지 설명의 목적을 위해, 인코딩된 샷 세트(160)의 상이한 인스턴스들은 필요한 경우에 괄호 인덱스 표기법을 이용하여 라벨링된다. 인코딩된 샷 세트(160)에 대한 괄호 인덱스 표기법은 2개의 쉼표로 분리된 숫자를 지정하며, 첫 번째 숫자는 해상도들(142)에 대한 인덱스이고, 두 번째 숫자는 샷들(158)에 대한 인덱스이다. 따라서, 일부 실시예들에서, 샷 인코딩 엔진(140)은 인코딩된 샷 세트(160)의 NxM개의 인스턴스들을 생성한다.
일부 실시예들에서, 인코딩된 샷 세트(160(n,m))를 생성하기 위해, 샷 인코딩 엔진(140)은 P개의 인코딩 포인트들(도시되지 않음)에서 샷(158(m))을 인코딩하고, 여기서 인코딩 포인트들 각각은 해상도(142(n)) 및 인코딩 파라미터 세트들(144) 중 상이한 것을 지정한다. 본 명세서에서 언급되는 바와 같이, 각각의 인코딩 포인트는 해상도들(142) 중 하나 및 인코딩 파라미터 세트들(144) 중 하나를 지정한다. 따라서, 인코딩된 샷 세트(160(n,m))는, 제한 없이, 인코딩된 샷들(188) 중 P개를 포함하고, 여기서 인코딩된 샷들(188) 각각은 해상도(142(n))를 갖고 샷(158(m))에 대응한다.
예를 들어, 일부 실시예들에서, 해상도들(142)은 384x216, 480x270, 608x342, 768x432, 960x540, 1280x720, 1920x1080, 2560x1440, 및 3840x2160이고, 인코딩 파라미터 세트들(144)은 15개의 상이한 QP 값을 지정한다. 일부 이러한 실시예들에서, 인코딩된 샷 세트(160(1,1))를 생성하기 위해, 샷 인코딩 엔진(140)은 해상도(384x216) 및 상이한 QP 값을 각각 지정하는 15개의 인코딩 포인트에서 샷(158(1))을 인코딩한다. 그리고, 이러한 실시예들에서, 인코딩된 샷 세트(160(9,M))를 생성하기 위해, 샷 인코딩 엔진(140)은 해상도(3840x2160) 및 상이한 QP 값을 각각 지정하는 15개의 상이한 인코딩 포인트에서 샷(158(M))을 인코딩한다.
일부 다른 실시예들에서, 해상도들(142) 각각은 인코딩 파라미터 세트들(144)의 상이한 서브세트와 연관될 수 있다. 예를 들어, 일부 실시예들에서, 해상도들(142(1) 및 142(N)) 각각은 인코딩 파라미터 세트들(144(1) 및 144(P))과 연관되고, 해상도들(142(2)-142(N-1)) 각각은 인코딩 파라미터 세트들(144(1)-144(P))과 연관된다. 이러한 실시예들에서, 인코딩된 샷 세트들(160(1,1)-142(1,M) 및 142(N,1)-142(N,M)) 각각은, 제한 없이, 인코딩된 샷들(188) 중 2개를 포함하고, 인코딩된 샷 세트들(160(2,1)-142(N-1,M)) 각각은, 제한 없이, 인코딩된 샷들(188) 중 P개를 포함한다.
샷 인코딩 엔진(140)은 임의의 기술적으로 실현가능한 방식으로 인코딩된 샷 세트(160(n,m))에 포함되는 인코딩된 샷들(188)을 생성할 수 있다. 예를 들어, 일부 실시예들에서, 샷(158(m))의 해상도가 해상도(142(n))와 동일한 경우, 샷 인코딩 엔진(140)은 인코딩된 샷 세트(160(n,m))에 포함되는 인코딩된 샷들(188)을 생성하기 위해 인코딩 파라미터 세트들(144) 각각에서 샷(158(m))을 인코딩하도록 인코더(150)를 구성한다. 그렇지 않으면, 샷 인코딩 엔진(140)은 샷(158(m))을 리샘플링(예를 들어, 다운샘플링 또는 업샘플링)하여 해상도(142(n))를 갖는 리샘플링된 샷을 생성한다. 이어서, 샷 인코딩 엔진(140)은 인코딩된 샷 세트(160(n,m))에 포함되는 인코딩된 샷들(188)을 생성하기 위해 인코딩 파라미터 세트들(144) 각각에서 리샘플링된 샷을 인코딩하도록 인코더(150)를 구성한다.
인코더(150)는 임의의 수 및/또는 유형의 인코딩 알고리즘들을 구현할 수 있다. 일부 실시예들에서, 인코더(150)는 하나 이상의 병렬 인코더(도시되지 않음)를 통해 인코딩 동작들을 효율적으로 수행하도록 구성된다. 동일한 또는 다른 실시예들에서, 인코더(150) 및 임의의 수(없음을 포함함)의 병렬 인코더들은 클라우드 환경 내에 포함된 임의의 수의 컴퓨팅 인스턴스들(110) 상에서 상주하고 실행된다. 일부 다른 실시예들에서, 샷 인코딩 엔진(140)은 임의의 수 및/또는 유형의 인코딩 알고리즘들을 구현한다. 동일한 또는 다른 실시예들에서, 시스템(100)은 인코더(150)를 생략한다.
샷 인코딩 엔진(140)은 인코딩된 샷들(188)을 생성하기 위해 임의의 세분성 레벨에서 임의의 수의 리샘플링 동작들 및 임의의 수의 인코딩 동작들을 임의의 조합으로 수행하도록 임의의 수(없음을 포함함)의 소프트웨어 애플리케이션들을 수행 및/또는 구성할 수 있다. 세분성 레벨들의 일부 예들은, 제한 없이, 프레임별, 샷별, 및 비디오별을 포함한다.
예를 들어, 일부 실시예들에서, 샷 인코딩 엔진(140)은 소스 비디오(122)에 대해 리샘플링 동작들을 수행하여 해상도(142(n))를 갖는 리샘플링된 비디오를 생성한다. 이어서, 샷 인코딩 엔진(140)은 리샘플링된 비디오를 리샘플링된 샷들로 분할하며, 인코딩 파라미터 세트들(144) 각각에서 리샘플링된 샷들 각각을 인코딩하여 해상도(142(n))를 공유하는 인코딩된 샷들(188)의 해상도-특정 서브세트를 생성하도록 인코더(150)를 구성한다. 이어서, 샷 인코딩 엔진(140)은 해상도-특정 서브세트에 포함된 인코딩된 샷들(188)을 대응하는 샷들(158)에 기반하여 인코딩된 샷 세트들(160(n,1)-160(n,M))에 걸쳐 분포시킨다.
도시된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 샷들(158), 해상도들(142) 및 인코딩된 샷 세트들(160(1,1)-160(N,M))에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 도 2 내지 도 4d와 관련하여 아래에 더 상세히 설명되는 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 해상도들(142(1)-142(N)) 각각에 대한 비디오 비트레이트-품질 포인트들(도 1에 도시되지 않음)의 상이한 볼록 껍질(도 1에 도시되지 않음)을 생성하도록 볼록 껍질 생성기(도 1에 도시되지 않음)를 구성한다.
일반적으로, 유클리드 공간 내의 포인트들의 세트의 볼록 껍질은 포인트들의 세트를 포함하는 가장 작은 볼록 세트이다. 유클리드 공간에서, 볼록 세트는 그 영역 내의 모든 포인트 쌍에 대해, 포인트들의 쌍을 연결시키는 직선 선분 상의 모든 포인트도 그 영역 내에 있도록 하는 영역이다. 유한 포인트 세트의 볼록 껍질은 볼록 다각형을 형성하고, 이 경우 이것은 그 껍질의 최좌측 포인트와 최우측 포인트 사이에서 늘어나는, 상위 껍질 및 하위 껍질로 알려진 2개의 다각형 체인으로 분할될 수 있다. 래더 생성기(170)의 맥락에서, 볼록 껍질들 각각은, 제한 없이, 해상도들(142(1)-142(N)) 중 상이한 해상도에 대한 임의의 수의 비디오 비트레이트-품질 포인트들을 포함하는 하위 껍질이다.
일부 실시예들에서, 각각의 비디오 비트레이트-품질 포인트는, 제한 없이, 상이한 인코딩된 비디오, 인코딩된 비디오의 해상도(142), 인코딩된 비디오의 비트레이트(도 1에 도시되지 않음), 및 인코딩된 비디오와 연관된 시각적 품질 레벨(도 1에 도시되지 않음)을 포함한다. 인코딩된 비디오들 각각은 샷들(158(1)-158(M))의 시퀀스에 대응하는 인코딩된 샷들(188) 중 M개의 인코딩된 샷의 시퀀스이다.
일부 실시예들에서, 주어진 인코딩된 비디오와 연관된 시각적 품질 레벨(도 1에 도시되지 않음)의 비트레이트는 인코딩된 비디오에 걸쳐 변할 수 있지만, 해상도는 인코딩된 비디오에 걸쳐 변하지 않는다. 더 구체적으로, 주어진 인코딩된 비디오에 포함된 인코딩된 샷들(188) 중 M개는 해상도들(142) 중 단일 해상도를 공유하지만, 인코딩된 샷들(188) 중 M개의 인코딩된 샷과 연관된 시각적 품질 레벨들 및 비트레이트들은 변할 수 있다.
본 명세서에서 사용될 때, 인코딩된 프레임 세트(예를 들어, 인코딩된 샷(188), 최적화된 인코딩된 비디오(178), 인코딩된 비디오 등)의 비트레이트란, 인코딩된 프레임 세트에 걸친 평균 비트레이트를 지칭한다. 인코딩된 프레임 세트와 연관된 시각적 품질 레벨은 인코딩된 프레임 세트로부터 도출된 재구성된 프레임 세트의 시각적 품질 레벨을 지칭한다. 그리고, 재구성된 프레임 세트의 시각적 품질 레벨은 재구성된 프레임 세트에 걸친 평균 시각적 품질 레벨을 지칭한다.
중요하게는, 각각의 해상도(142)에 대해, 해상도(142)에 대한 볼록 껍질을 통해 지정된 인코딩된 비디오들 각각은 대응하는 비트레이트와 해상도(142)의 조합에 대한 최고 시각적 품질 레벨과 연관된다. 주어진 볼록 껍질에 대해, "볼록 껍질을 통해 지정된 인코딩된 비디오들"은 본 명세서에서 볼록 껍질의 비디오 비트레이트-품질 포인트들에 포함된 인코딩된 비디오들을 지칭한다.
래더 생성기(170)는 해상도들(142(1)-142(N))에 대한 N개의 상이한 볼록 껍질에 기반하여 비디오 비트레이트-품질 포인트들의 전체 볼록 껍질을 생성한다. 따라서, 전체 볼록 껍질을 통해 지정된 인코딩된 비디오들의 해상도들(142)은 달라질 수 있다. 특히, 전체 볼록 껍질을 통해 지정된 인코딩된 비디오들 각각은 대응하는 비트레이트에 대한 최고 시각적 품질 레벨과 연관된다.
도 2와 관련하여 아래에 더 상세히 설명되는 바와 같이, 래더 생성기(170)는 전체 볼록 껍질, 볼록 껍질들, 및 래더 요건 세트(124)에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 일부 실시예들에서, 인코딩 래더(172)를 생성하기 위해, 래더 생성기(170)는 임의의 수의 렁 포인트들(도 1에 도시되지 않음)을 결정하기 위해 래더 요건 세트(124)에서 지정된 순서로 각각의 래더 요건을 처리하고, 여기서 각각의 렁 포인트는 상이한 비디오 비트레이트-품질 포인트이다. 주어진 래더 요건을 처리하기 위해, 래더 생성기(170)는 래더 요건에 대한 렁 포인트들 및 임의의 선행 래더 요건들에 대한 렁 포인트들이 집합적으로 래더 요건을 만족시키도록 래더 요건에 대한 임의의 수(없음을 포함함)의 렁 포인트들을 결정한다.
일부 실시예들에서, 래더 생성기(170)는 전체 볼록 껍질로부터, 그리고 필요하다면 볼록 껍질들 중 하나로부터 우선적으로 각각의 렁 포인트를 결정한다. 전체 볼록 껍질에 있는 각각의 렁 포인트의 경우, 렁 포인트에 포함된 인코딩된 비디오는 대응하는 비트레이트에 대한 최고 시각적 품질 레벨과 연관된다. 전체 볼록 껍질에 있지 않은 각각의 렁 포인트의 경우, 렁 포인트에 포함된 인코딩된 비디오는 렁 포인트의 비트레이트 및 렁 포인트의 해상도(142)의 조합에 대한 최고 시각적 품질 레벨과 연관된다.
래더 생성기(170)는 렁 포인트들에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 일부 실시예들에서, 래더 생성기(170)는 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 빈 세트들로 초기화한다. 렁 포인트들 각각에 대해, 래더 생성기(170)는 렁 포인트에 포함된 비트레이트 및 렁 포인트에 포함된 해상도(142)를 제한 없이 지정하는 비트레이트-해상도 쌍(174)을 생성하고, 그 후 비트레이트-해상도 쌍(174)을 인코딩 래더에 추가한다. 상보적인 방식으로, 래더 생성기(170)는 렁 포인트에 포함된 인코딩된 비디오를 최적화된 인코딩된 비디오들(178) 중 하나로서 최적화된 인코딩된 비디오 세트(176)에 추가한다.
일부 다른 실시예들에서, 래더 생성기(170)는 임의의 기술적으로 실현가능한 방식으로 인코딩 래더(172)에 기반한 스트리밍을 위해 최적화된 인코딩된 비디오들(178) 중 하나를 선택하는 것과 관련된 임의의 양 및/또는 유형의 정보를 지정할 수 있다. 예를 들어, 일부 실시예들에서, 비트레이트-해상도 쌍들(172) 각각에 대해, 래더 생성기(170)는 또한 인코딩 래더(172)를 통해 대응하는 렁 포인트에 포함된 시각적 품질 레벨을 지정한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 인코딩 래더(172)에 포함된 비트레이트-해상도 쌍들(174) 각각을 최적화된 인코딩된 비디오 세트(176)를 통하는 대신에 또는 그에 더하여 임의의 기술적으로 실현가능한 방식으로 대응하는 렁 포인트에서 지정된 인코딩된 비디오와 연관시킬 수 있다.
일부 실시예들에서, 래더 생성기(170)는 인코딩 래더(172) 및/또는 최적화된 인코딩된 비디오 세트(176)를 임의의 수 및/또는 유형의 메모리들(예를 들어, 클라이언트 디바이스(190) 및/또는 콘텐츠 전달 네트워크(180)에 액세스가능한 메모리들)에 저장한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 인코딩 래더(172)를 임의의 수의 클라이언트 디바이스들(190), 임의의 수의 컴퓨터 인스턴스들(110), 임의의 수 및/또는 유형의 소프트웨어 애플리케이션들, 또는 이들의 임의의 조합에 전송한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 최적화된 인코딩된 비디오 세트(176)를 CDN(180)의 임의의 수의 인스턴스들, 임의의 수의 클라이언트 디바이스들(190), 임의의 수의 컴퓨터 인스턴스들(110), 임의의 수 및/또는 유형의 소프트웨어 애플리케이션들, 또는 이들의 임의의 조합에 전송한다.
본 명세서에 설명된 기술들은 제한적인 것이 아니라 예시적인 것이며, 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 변경될 수 있다는 점에 유의한다. 인코딩 래더 애플리케이션(130), 샷 인코딩 엔진(140), 래더 생성기(170), 샷 변경 검출기(152), 인코더(150), CDN(180), 및 엔드포인트 애플리케이션(192)에 의해 제공되는 기능에 대한 많은 수정들 및 변형들이 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 명백할 것이다.
예를 들어, 일부 실시예들에서, 인코딩 래더 애플리케이션(130), 샷 인코딩 엔진(140), 래더 생성기(170), 샷 변경 검출기(152), 인코더(150), CDN(180), 및 엔드포인트 애플리케이션(192) 중 하나 이상은 일관성 메트릭이 샷들(158) 대신에 지정된 범위 내에 있는 프레임들의 세트들을 식별하고 이들에 대해 동작하도록 구성될 수 있다. 각각의 프레임 세트는 본 명세서에서 "서브시퀀스"라고도 한다. 상보적인 방식으로, 인코딩된 프레임 세트는 본 명세서에서 "인코딩된 서브시퀀스"라고도 한다.
일부 실시예들에서, 인코딩 래더 애플리케이션(130)은 임의의 수의 인코딩 포인트들과 연관된 인코딩된 샷 시퀀스들에 기반하여 임의의 기술적으로 실현가능한 방식으로 볼록 껍질들 및 전체 볼록 껍질들을 생성할 수 있다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 임의의 기술적으로 실현가능한 방식으로 전체 볼록 껍질 및 선택적으로 임의의 수의 볼록 껍질들에 기반하여 인코딩 래더(172)를 생성할 수 있다. 예를 들어, 일부 실시예들에서, 래더 생성기(170)는 래더 요건 세트(124) 대신에 또는 그에 더하여 임의의 수 및/또는 유형의 기준들에 기반하여 인코딩 래더(172)를 생성할 수 있다. 동일한 또는 다른 실시예들에서, 시스템(100)은 래더 요건 세트(124)를 생략한다.
본 명세서에 도시된 시스템(100)은 예시적인 것이고 변형들 및 수정들이 가능하다는 것을 알 것이다. 예를 들어, 본 명세서에 설명된 바와 같은 인코딩 래더 애플리케이션(130), 샷 인코딩 엔진(140), 래더 생성기(170), 샷 변경 검출기(152), 인코더(150), CDN(180), 및 엔드포인트 애플리케이션(192)에 의해 제공되는 기능은 임의의 수(하나를 포함함)의 소프트웨어 애플리케이션들, 하드웨어 디바이스들(예를 들어, 하드웨어 기반 인코더), 및 시스템(100)의 임의의 수의 구성요소들에 통합되거나 이들에 걸쳐 분산될 수 있다. 또한, 도 1의 다양한 유닛들 사이의 접속 토폴로지는 원하는 대로 수정될 수 있다.
도 2는 다양한 실시예들에 따른, 도 1의 래더 생성기(170)의 더 상세한 도면이다. 도시된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 해상도들(142(1)-142(N)), 샷들(158(1)-158(M)), 및 인코딩된 샷 세트들(160(1,1)-160(N,M))에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는, 제한 없이, 볼록 껍질 생성기들(230(1)-230(N)) 및 렁 선택 엔진(280)을 포함한다.
도시된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 해상도들(142(1)-142(N))과 각각 연관된 볼록 껍질들(240(1)-240(N))을 각각 생성하도록 볼록 껍질 생성기들(230(1)-230(N))을 구성한다. 볼록 껍질 생성기들(230(1)-230(N)) 각각은 본 명세서에서 "볼록 껍질 생성기(230)"(명시적으로 도시되지 않음)라고 지칭되는 단일 소프트웨어 애플리케이션의 상이한 인스턴스이다. 볼록 껍질 생성기들(230(1)-230(N))은 또한 본 명세서에서 개별적으로 "볼록 껍질 생성기(230)"로서 그리고 집합적으로 "볼록 껍질 생성기들(230)"로서 지칭된다.
도시된 바와 같이, 볼록 껍질(240(1))은 비디오 비트레이트-품질 포인트들(250(1)-250(V))을 포함하지만 이에 제한되지는 않으며, 여기서 V는 임의의 양의 정수일 수 있다. 단지 설명의 목적으로, 볼록 껍질들(240(1)-240(N))은 또한 본 명세서에서 개별적으로 "볼록 껍질(240)" 및 "비디오 비트레이트-품질 포인트들의 볼록 껍질(240)"로서 그리고 집합적으로 "볼록 껍질들(240)" 및 "비디오 비트레이트-품질 포인트들의 볼록 껍질들(240)"로서 지칭된다. 비디오 비트레이트-품질 포인트(250)(비디오 비트레이트-품질 포인트들(250(1)-250(V))을 포함함)의 인스턴스들은 또한 본 명세서에서 개별적으로 "비디오 비트레이트-품질 포인트(250)"로서 그리고 집합적으로 "비디오 비트레이트-품질 포인트들(250)"로서 지칭된다. 명시적으로 도시되지는 않았지만, 볼록 껍질들(240(2)-240(N)) 각각은, 제한 없이, 임의의 수의 비디오 비트레이트-품질 포인트들(250)을 포함한다. 볼록 껍질들(240(1)-240(N)) 각각에서의 비디오 비트레이트-품질 포인트들(250)의 수는 달라질 수 있다.
도시된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 해상도(142(n)), 샷들(158(1)-158(M)), 및 해상도(142(n))와 연관된 인코딩된 샷 세트들(160(n,1)-160(n,M))에 기반하여 볼록 껍질(240(n))을 생성하도록 볼록 껍질 생성기(230(n))를 구성하며, 여기서 n은 1 내지 N의 정수이다. 일부 다른 실시예들에서, 래더 생성기(170)는 볼록 껍질들(240(1)-240(N))을 순차적으로, 동시에 또는 이들의 임의의 조합으로 생성하도록 N개 미만의 볼록 껍질 생성기(230)를 구성할 수 있다. 예를 들어, 일부 실시예들에서, 래더 생성기(170)는 볼록 껍질들(240(1)-240(N))을 순차적으로 생성하도록 볼록 껍질 생성기(230(1))를 구성한다.
일부 실시예들에서, 각각의 비디오 비트레이트-품질 포인트(250)는 인코딩된 비디오(258)의 상이한 인스턴스, 인코딩된 비디오(258)의 해상도(142), 인코딩된 비디오(258)의 비트레이트(254) 및 인코딩된 비디오(258)와 연관된 시각적 품질 레벨(256)을 포함하지만 이에 제한되지 않는다. 단지 설명의 목적을 위해, 인코딩된 비디오(258)의 인스턴스들은 또한 본 명세서에서 개별적으로 "인코딩된 비디오(258)"로서 그리고 집합적으로 "인코딩된 비디오들(258)"로서 지칭된다. 비트레이트(254)의 인스턴스들은 또한 본 명세서에서 개별적으로 "비트레이트(254)"로서 그리고 집합적으로 "비트레이트들(254)"로서 지칭된다. 시각적 품질 레벨(256)의 인스턴스들은 또한 본 명세서에서 개별적으로 "시각적 품질 레벨(256)"로서 그리고 집합적으로 "시각적 품질 레벨들(256)"로서 지칭된다.
인코딩된 비디오들(258) 각각은 샷들(158(1)-158(M))의 시퀀스에 대응하는 인코딩된 샷들(188) 중 M개의 인코딩된 샷의 시퀀스이며, 인코딩된 샷들(188)과 연관된 시각적 품질 레벨들(256) 및 비트레이트들(254)은 변할 수 있지만, 인코딩된 샷들(188)의 해상도들(142)은 변하지 않는다. 볼록 껍질(240(n))이 해상도(142(n))와 연관되기 때문에(n은 1과 N 사이의 정수임), 볼록 껍질(240(n))을 통해 지정된 인코딩된 비디오들(258) 각각은 해상도(142(n))를 갖는다. 따라서, 볼록 껍질(240(n))에서의 비디오 비트레이트-품질 포인트들(250) 각각은 해상도(142(n))를 포함한다. 도 3과 관련하여 아래에 더 상세히 설명되는 바와 같이, 일부 실시예들에서, 볼록 껍질 생성기(230)는 볼록 껍질(240(n))을 통해 지정된 인코딩된 비디오들(258) 각각이 비트레이트(254)와 해상도(142(n))의 조합에 대한 시각적 품질 레벨들(256) 중 최고 것과 연관되는 것을 보장한다.
도시된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 볼록 껍질들(240(1)-240(N))에 기반하여 전체 볼록 껍질(260)을 생성한다. 전체 볼록 껍질(260)은 볼록 껍질들(240(1)-240(N))의 비디오 비트레이트-품질 포인트들(250)의 합집합의 서브세트이다. 단지 설명의 목적을 위해, 전체 볼록 껍질(260)은 본 명세서에서 "비디오 비트레이트-품질 포인트들의 전체 볼록 껍질(260)"이라고도 지칭된다. 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)에 포함되는 인코딩된 비디오들(258)은 본 명세서에서 "전체 볼록 껍질(260)을 통해 지정된 인코딩된 비디오들(258)"이라고도 지칭된다. 래더 생성기(170)는 전체 볼록 껍질(260)을 통해 지정된 인코딩된 비디오들(258) 각각이 비트레이트(254)에 대한 시각적 품질 레벨들(256) 중 최고 것과 연관되는 것을 보장하는 임의의 기술적으로 실현가능한 방식으로 전체 볼록 껍질(260)을 생성할 수 있다.
본 기술분야의 통상의 기술자는 볼록 껍질들을 생성하기 위한 많은 기술들이 수학 분야에서 잘 알려져 있고, 래더 생성기(170)는 전체 볼록 껍질(260)을 생성하기 위해 임의의 수의 이러한 기술들을 구현할 수 있다는 것을 이해할 것이다. 예를 들어, 일부 실시예들에서, 래더 생성기(170)는 볼록 껍질들(240(1)-240(N)) 각각에 대한 볼록 껍질 곡선(도 2에 도시되지 않음)을 생성한다. 볼록 껍질(240(n))에 대한 볼록 껍질 곡선을 생성하기 위해(n은 1에서 N까지의 정수임), 래더 생성기(170)는 비트레이트 축(도 2에 도시되지 않음)을 따라 비트레이트(254)를 위치시키고 품질 축(도 2에 도시되지 않음)을 따라 시각적 품질 레벨(256)을 위치시킴으로써 볼록 껍질(240(n))에서의 비디오 비트레이트-품질 포인트들(250) 각각을 플로팅한다.
볼록 껍질 곡선들을 생성한 이후, 래더 생성기(170)는 볼록 껍질 곡선들을 따라 비디오 비트레이트-품질 포인트들(250)을 평가하여 전체 볼록 껍질(260)을 결정한다. 더 구체적으로, 래더 생성기(170)는 경계를 형성하는 모든 볼록 껍질 곡선들에 걸쳐 비디오 비트레이트-품질 포인트들(250)의 서브세트를 식별하고, 여기서 모든 비디오 비트레이트-품질 포인트들(250)은 경계의 일 측 상에 존재하고, 또한 직선과 식별된 서브세트에 포함된 임의의 2개의 연속적인 비디오 비트레이트-품질 포인트(250)를 연결하는 것이 그 선의 동일한 측 상의 식별된 서브세트에 포함되지 않은 모든 비디오 비트레이트-품질 포인트들(250)을 남기게 한다. 전체 볼록 껍질(260)은 비디오 비트레이트-품질 포인트들(250)의 식별된 서브세트이다.
도시된 바와 같이, 일부 실시예들에서, 렁 선택 엔진(280)은 전체 볼록 껍질(260), 볼록 껍질들(240), 및 래더 요건 세트(124)에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 래더 요건 세트(124)는, 제한 없이, 래더 요건들(224(1)-224(C))을 포함하고, 여기서 C는 임의의 양의 정수일 수 있다. 래더 요건들(224) 각각은 인코딩 래더(172)가 임의의 기술적으로 실현가능한 방식으로 만족시킬 필요가 있는 임의의 수 및/또는 유형의 조건들, 제약들, 기준들 등을 지정할 수 있다.
이탤릭체로 도시된 바와 같이, 일부 실시예들에서, 래더 요건들(224) 각각은 제한 없이, 최소 비트레이트 요건, 품질 포화 요건, 중간 포인트 요건, 비트레이트 간격 요건, 조건부 해상도 요건, 필수 해상도 요건, 또는 음영 비트레이트 요건일 수 있다. 최소 비트레이트 요건은 최저 허용 비트레이트를 지정하고, 인코딩 래더(172)에 의해 표현되는 비트레이트들(254) 중 어느 것도 최저 허용 비트레이트보다 낮아서는 안 된다고 규정한다. 품질 포화 요건은 최고 허용 비트레이트를 지정하고, 인코딩 래더(172)에 의해 표현되는 비트레이트들(254) 중 최고 비트레이트가 품질 포화 비트레이트(292)도 최고 허용 비트레이트도 초과하지 않아야 한다고 규정한다.
중간 포인트 요건은 인코딩 래더(172)에 의해 표현되는 비트레이트들(254) 중 하나가 인코딩 래더(172)에 의해 표현되는 비트레이트들(254) 중 최고 것과 최저 것 사이의 대략 중간에 있는 것으로 규정한다. 비트레이트 간격 요건은 인코딩 래더(172)에 의해 표현되는 비트레이트들(254)에 대한 타겟 비트레이트 간격을 지정한다. 조건부 해상도 요건은 하나 이상의 조건부 해상도를 지정하고, 전체 볼록 껍질(260)에 의해 표현되는 각각의 조건부 해상도에 대해, 인코딩 래더(172)에서의 비트레이트-해상도 쌍들(174) 중 적어도 하나의 해상도가 조건부 해상도와 동일하다고 규정한다.
필수 해상도 요건은 하나 이상의 필수 해상도를 지정하고, 각각의 필수 해상도에 대해, 인코딩 래더(172)에서의 비트레이트-해상도 쌍들(174) 중 적어도 하나의 해상도(142)가 필수 해상도와 동일하다고 규정한다. 음영 비트레이트 요건은 필수 해상도, 대응하는 최소 시각적 품질 레벨, 및 임의의 수 및/또는 유형의 추가 조건들을 지정하고, 인코딩 래더(172)가 조건들에 따라 필수 해상도를 적어도 최소 시각적 품질 레벨로 표현해야 하는 것으로 규정한다. 조건들의 일부 예들은, 제한 없이, 음영 포인트들의 최대 수, 음영 해상도에 대한 타겟 비트레이트 간격, 및 음영 해상도에 의해 표현될 최소 비트레이트를 포함한다.
일부 실시예들에서, 렁 선택 엔진(280)은 제한 없이 선택 알고리즘(290)을 포함한다. 선택 알고리즘(290)은 래더 요건 세트(124), 전체 볼록 껍질(260), 및 임의의 수(없음을 포함함)의 볼록 껍질들(240)에 기반하여 렁 포인트들(298(1)-298(L))을 결정하며, 여기서 L은 임의의 양의 정수일 수 있다. 단지 설명의 목적을 위해, 렁 포인트들(298(1)-298(L))은 또한 본 명세서에서 개별적으로 "렁 포인트(298)"로서 그리고 집합적으로 "렁 포인트들(298)"로서 지칭된다. 렁 포인트들(298(1)-298(L))은 임의의 조합으로 임의의 수의 볼록 껍질들(240)에 걸쳐 분포되는 비디오 비트레이트-품질 포인트들(250) 중 L개의 비디오 비트레이트-품질 포인트이다. 임의의 수의 렁 포인트들(298(1)-298(L))이 또한 전체 볼록 껍질(260)에 있다. 선택 알고리즘(290)은 임의의 기술적으로 실현가능한 방식으로 렁 포인트들(298(1)-298(L))을 결정할 수 있다.
일부 실시예들에서, 선택 알고리즘(290)은 렁 포인트들(298)을 결정하기 위해 래더 요건들(224)이 래더 요건 세트(124)에서 지정되는 순서로 래더 요건들(224(1)-224(R))을 순차적으로 처리한다. 래더 요건(224(r))을 처리하기 위해(여기서 r은 1에서 R까지의 정수임), 선택 알고리즘(290)은 래더 요건(224(r))에 대한 렁 포인트들(298) 및 래더 요건들(224(1)-224(r-1))에 대한 렁 포인트들(298)이 집합적으로 래더 요건(224(r))을 만족시키도록 래더 요건(224(r))에 대한 임의의 수(없음을 포함함)의 렁 포인트들(298)을 결정한다. 선택 알고리즘(290)은 임의의 기술적으로 실현가능한 방식으로 래더 요건(224(r))에 대한 렁 포인트들(298)을 결정할 수 있다.
일부 실시예들에서, 선택 알고리즘(290)은 래더 요건(224(r))이 래더 요건들(224(1)-224(r-1))에 대한 렁 포인트들(298)에 의해 이미 만족되는지를 결정한다. 래더 요건(224(r))이 이미 만족된 경우, 선택 알고리즘(290)은 래더 요건(224(r))에 대한 임의의 렁 포인트들(298)을 결정하지 않는다. 그렇지 않으면, 선택 알고리즘(290)은 래더 요건(224(r))에 대한 렁 포인트들(298)을 결정하는 것을 용이하게 하는 임의의 양 및/또는 유형의 정보를 계산한다.
도시된 바와 같이, 일부 실시예들에서, 래더 요건(224(r))이 품질 포화 요건인 경우, 선택 알고리즘(290)은 전체 볼록 껍질(260)에 기반하여 품질 포화 비트레이트(292)를 계산한다. 품질 포화 비트레이트(292)는 소스 비디오(122)를 인코딩하는데 이용되는 비트들의 수를 증가시키는 것이 대응하는 재구성된 비디오의 시각적 품질을 인지가능하게 증가시키지 않는 비트레이트(254)이다. 선택 알고리즘(290)은 임의의 기술적으로 실현가능한 방식으로 품질 포화 비트레이트(292)를 계산할 수 있다. 예를 들어, 일부 실시예들에서, 선택 알고리즘(290)은 전체 볼록 껍질(260)을 평가하여, 대응하는 전체 볼록 껍질 곡선(도 2에 도시되지 않음)의 기울기가 포화 기울기 아래로 감소하는 포화 포인트를 결정한 다음, 품질 포화 비트레이트(292)를 포화 포인트의 비트레이트(254)와 동일하게 설정한다.
일부 다른 실시예들에서, 선택 알고리즘(290)은 전체 볼록 껍질(260)과 연관된 변곡 포인트(knee point)를 검출하고, 그 후 변곡 포인트에 기반하여 품질 포화 비트레이트(292)를 계산하기 위해 임의의 수 및/또는 유형의 휴리스틱들(heuristics)을 구현한다. 본 명세서에서 언급된 바와 같이, 전체 볼록 껍질(260)과 연관된 "변곡 포인트"는 대응하는 전체 볼록 껍질 곡선에 대한 변곡 포인트이다. 본 기술분야의 통상의 기술자는 곡선의 변곡 포인트를 결정하기 위한 많은 기술들이 수학 분야에서 잘 알려져 있고, 선택 알고리즘(290)은 전체 볼록 껍질(260)과 연관된 변곡 포인트를 검출하기 위해 임의의 수의 이러한 기술들을 구현할 수 있음을 이해할 것이다. 예를 들어, 일부 실시예들에서, 선택 알고리즘(290)은 전체 볼록 껍질 곡선을 2개의 선분으로 분할한다. 그 후, 선택 알고리즘(290)은 변곡 포인트를 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)과 각각의 선분들 사이의 수직 거리들(또는 수직 투영들)의 합을 최소화하는 포인트와 동일하게 설정한다.
일부 실시예들에서, 비디오 비트레이트-품질 포인트들(250) 중 하나 이상을 래더 요건(224(r))에 대한 렁 포인트들(298)로서 선택하기 전에, 선택 알고리즘(290)은 래더 요건(224(r))이 임의의 필수 해상도들을 지정하는지 여부를 결정한다. 래더 요건(224(r))이 어떠한 필수 해상도들도 지정하지 않는 경우, 선택 알고리즘(290)은 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)로부터 래더 요건(224(r))에 대한 각각의 렁 포인트(298)를 선택한다.
대조적으로, 래더 요건(224(r))이 하나 이상의 필수 해상도를 지정하는 경우, 선택 알고리즘(290)은 래더 요건(224(r))에 대한 각각의 렁 포인트(298)를 우선적으로 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)로부터 그리고, 필요한 경우, 볼록 껍질들(240) 중 하나에서의 비디오 비트레이트-품질 포인트들(250)로부터 선택한다. 더 구체적으로, 선택 알고리즘(290)이 래더 요건(224(r))을 만족시키는 렁 포인트들(298)을 전체 볼록 껍질(260)로부터 결정할 수 없는 경우, 선택 알고리즘(290)은 임의의 수의 볼록 껍질들(240)로부터의 임의의 수의 비디오 비트레이트-품질 포인트들(250)을 래더 요건(224(r))에 대한 렁 포인트들(298)로서 선택한다.
예를 들어, 래더 요건(224(r))이 해상도(142(1))가 필수 해상도이고 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250) 중 어느 것도 해상도(142(1))를 갖지 않는다고 지정하는 경우, 선택 알고리즘(290)은 볼록 껍질(240(1))로부터 래더 요건(224(r))에 대한 렁 포인트(298)를 선택한다. 일부 실시예들에서, 볼록 껍질들(240)로부터 비디오 비트레이트-품질 포인트들(250)을 렁 포인트들(298)로서 선택할 때, 선택 알고리즘(290)은 전체 볼록 껍질(260)에 가장 가깝게 있는 비디오 비트레이트-품질 포인트들(250)을 선택하려고 시도한다.
선택 알고리즘(290)은 래더 요건들(224) 각각에 대한 렁 포인트들(298)을 결정하기 위해 임의의 수의 래더 요건들(224)에 기반하여 임의의 수 및/또는 유형의 동작들, 휴리스틱들 등을 구현할 수 있다. 예를 들어, 일부 실시예들에서, 래더 요건들(224(1) 및 224(2))은, 임의의 순서로, 인코딩 래더(172)에 의해 표현되는 최저 비트레이트 및 최고 비트레이트를 확립하는 최소 비트레이트 요건 및 품질 포화 요건이다. 래더 요건들(224(3)-224(R)) 각각에 대한 렁 포인트들(298)을 결정할 때, 선택 알고리즘(290)은 최저 비트레이트와 최고 비트레이트 사이에 있는 비트레이트들(254)을 갖는 렁 포인트들(298)을 결정한다.
일부 실시예들에서, 래더 요건(224(r))이 타겟 비트레이트 간격을 지정하지 않으면, 선택 알고리즘(290)은 래더 요건들(224(1)-224(r))에 대한 렁 포인트들(298) 사이의 최소 비트레이트 간격이 최대화되도록, 래더 요건들(224(r))에 대한 렁 포인트들(298)을 선택한다. 동일한 또는 다른 실시예들에서, 래더 요건(224(r))이 타겟 비트레이트 간격을 지정하면, 선택 알고리즘(290)은 타겟 비트레이트 간격을 이행하기 위해 횡단 기술(traversing technique)을 구현한다. 더 정확하게는, 선택 알고리즘(290)은 비트레이트들(254) 중 최저로부터 최고까지 래더 요건들(224(1)-224(r-1))에 대한 렁 포인트들(298)을 횡단한다. 횡단 동안, 인접한 렁 포인트들(298) 사이의 비트레이트 간격이 타겟 비트레이트 간격보다 더 크면, 선택 알고리즘(290)은 인접한 렁 포인트들(298)의 비트레이트들(254) 사이에 있는 비트레이트들(254)을 갖는 래더 요건(224(r))에 대한 임의의 수의 렁 포인트들(298)을 결정한다.
일부 실시예들에서, 선택 알고리즘(290)은 비트레이트(254)를 증가시킴에 따라 시각적 품질 레벨(256) 및 해상도(142)의 단조성을 보장한다. 더 구체적으로, 렁 포인트(298(i))의 비트레이트(254)가 렁 포인트(298(j))의 비트레이트(254)보다 더 클 경우(여기서, i 및 j는 1과 L 사이의 상이한 정수들임), 렁 포인트(298(i))의 시각적 품질 레벨(256) 및 해상도(142)는 각각, 렁 포인트(298(j))의 시각적 품질 레벨(256) 및 해상도(142) 이상이다.
도시된 바와 같이, 렁 선택 엔진(280)은 렁 포인트들(298(1)-298(L))에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 렁 선택 엔진(280)은 임의의 기술적으로 실현가능한 방식으로 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성할 수 있다. 일부 실시예들에서, 렁 선택 엔진(280)은 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성하기 전에 렁 포인트들(298(1)-298(L))에 대해 임의의 수 및/또는 유형의 분류 동작들을 수행한다. 예를 들어, 일부 실시예들에서, 렁 선택 엔진(280)은 비트레이트들(254) 중 최저 비트레이트로부터 최고 비트레이트로 렁 포인트들(298)을 재정렬한다. 동일한 또는 다른 실시예들에서, 렁 선택 엔진(280)은 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 빈 세트들로 초기화한 다음, 렁 포인트들(298) 각각을 재정렬된 대로 처리한다.
렁 포인트(298)를 처리하기 위해, 렁 선택 엔진(280)은 렁 포인트(298)에 포함된 비트레이트(254) 및 렁 포인트(298)에 포함된 해상도(142)를 지정하는 비트레이트-해상도 쌍(174)을 생성한다. 렁 선택 엔진(280)은 비트레이트-해상도 쌍(174)에 대응하는 최적화된 인코딩된 비디오(178)를 렁 포인트(298)에 포함된 인코딩된 비디오(258)와 동일하게 설정한다. 렁 선택 엔진(280)은 그 후 비트레이트-해상도 쌍(174)을 인코딩 래더(172)에 추가하고 최적화된 인코딩된 비디오(178)를 최적화된 인코딩 비디오 세트(176)에 추가한다.
도 2와 관련하여 본 명세서에서 전술한 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 인코딩 래더(172) 및/또는 최적화된 인코딩된 비디오 세트(176)를 임의의 수 및/또는 유형의 메모리들에 저장한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 인코딩 래더(172)를 임의의 수 및/또는 유형의 디바이스들 및/또는 소프트웨어 애플리케이션들에 전송한다. 동일한 또는 다른 실시예들에서, 래더 생성기(170)는 최적화된 인코딩된 비디오 세트(176)를 임의의 수 및/또는 유형의 디바이스들 및/또는 소프트웨어 애플리케이션들에 전송한다.
이롭게도, 인코딩 래더(172)에 의해 표현되는 시각적 품질 레벨(256)과 비트레이트(254) 사이의 절충들이 샷들(158)의 복잡성들에 기반하여 맞춤화되므로, 종래의 고정 비트레이트 래더들에 기인하는 인코딩 비효율성들이 감소될 수 있다. 특히, 래더 요건 세트(124)가 품질 포화 제약을 포함할 때, 렁 선택 엔진(280)은 인코딩 래더(172)에서 지정된 비트레이트들(254) 중 어느 것도 품질 포화 비트레이트(292)를 초과하지 않는 것을 보장한다. 그 결과, 임의의 수의 시각적 품질 레벨들(256)에 대해, 인코딩 래더(172)에 기반하여 스트리밍하기 위해 선택되는 최적화된 인코딩된 비디오(178)의 비트레이트(254)는 이에 따라 종래의 고정 비트레이트 래더에 기반하여 스트리밍하기 위해 선택되는 종래의 인코딩된 비디오의 비트레이트(254)보다 낮을 수 있다.
또한, 전체 볼록 껍질(260)에서의 렁 포인트들(298) 중 하나에 대응하는 각각의 비트레이트-해상도 쌍(174)에 대해, 해상도(142)는 시각적 품질 레벨(256)에 대해 최적화된다. 그 결과, 임의의 수의 비트레이트들(254)에 대해, 인코딩 래더(172)에 기반하여 스트리밍하기 위해 선택된 최적화된 인코딩된 비디오(178)와 연관된 시각적 품질 레벨(256)은 종래의 고정 비트레이트 래더에 기반하여 스트리밍하기 위해 선택된 종래의 인코딩된 비디오와 연관된 시각적 품질 레벨(256)보다 높을 수 있다.
또한, 각각의 렁 포인트(298)가 전체 볼록 껍질(260)에 있는지 여부에 관계없이, 최적화된 인코딩된 비디오들(178(1)-178(L))과 연관된 시각적 품질 레벨들(256)은 비트레이트-해상도 쌍들(174(1)-174(L))에 대해 각각 최적화된다. 그 결과, 시각적 품질 레벨들(256)은 해상도-제한된 시나리오들에서 증가될 수 있다. 해상도-제한된 시나리오의 예는 스트리밍 세션이 1920x1080의 해상도(142)로 제한될 때이다. 해상도-제한된 시나리오에서, 인코딩 래더(172)에 기반하여 스트리밍하기 위해 선택된 최적화된 인코딩된 비디오(178)와 연관된 시각적 품질 레벨(256)은 인코딩 래더(172)가 허용되는 해상도들(142)에 대한 시각적 품질 레벨들(256)의 범위를 나타낼 때 증가될 수 있다.
도 3은 다양한 실시예들에 따른, 도 2의 볼록 껍질 생성기들(230) 중 하나의 더 상세한 도면이다. 더 구체적으로, 도 3은 해상도(142(1)), 샷들(158(1)-158(M)), 및 인코딩된 샷 세트들(160(1,1)-160(1,M))에 기반하여 볼록 껍질(240(1))을 생성하는 볼록 껍질 생성기(230(1))를 도시한다. 도 1과 관련하여 본 명세서에서 전술한 바와 같이, 인코딩된 샷 세트들(160(1,1)-160(1,M))은 해상도(142(1))를 공유하고 샷들(158(1)-158(M))에 각각 대응하는 인코딩된 샷들(188)의 서브세트들이다.
도시된 바와 같이, 일부 실시예들에서, 볼록 껍질 생성기(230(1))는 해상도(142(1)), 샷들(158(1)-158(M)) 및 인코딩된 샷 세트들(160(1,1)-160(1,M))에 기반하여 순위화된 샷 데이터세트들(350(1)-350(M))을 생성하며, 여기서 M은 샷들(158)의 수이다. 단지 설명의 목적을 위해, 순위화된 샷 데이터세트들(350(1)-350(M))은 또한 본 명세서에서 개별적으로 "순위화된 샷 데이터세트(350)"로서 그리고 집합적으로 "순위화된 샷 데이터세트들(350)"로서 지칭된다.
순위화된 샷 데이터세트들(350(1)-350(M))은 샷들(158(1)-158(M))과 각각 연관된다. 순위화된 샷 데이터세트들(350) 각각은, 제한 없이, 샷 비트레이트-품질 포인트(320)의 임의의 수의 인스턴스들(명시적으로 도시되지 않음)을 포함하며, 샷 비트레이트-품질 포인트(320)의 각각의 인스턴스는 인코딩된 샷들(188) 중 상이한 샷에 대응한다. 단지 설명의 목적으로, 샷 비트레이트-품질 포인트(320)의 인스턴스들은 본 명세서에서 개별적으로 "샷 비트레이트-품질 포인트(320)"로서 그리고 집합적으로 "샷 비트레이트-품질 포인트들(320)"로서 지칭되기도 한다. 또한, 샷 비트레이트-품질 포인트(320)의 상이한 인스턴스들은 필요한 경우에 괄호 인덱스 표기법을 이용하여 라벨링된다. 샷 비트레이트-품질 포인트(320)에 대한 괄호 인덱스 표기법은 2개의 쉼표로 분리된 숫자를 지정하며, 첫 번째 숫자는 샷들(158)에 대한 인덱스이고, 두 번째 숫자는 인코딩 파라미터 세트들(144)에 대한 인덱스이다.
일부 실시예들에서, 순위화된 샷 데이터세트(350(m))는 제한 없이, 해상도(142(1)), 샷(158(m)) 및 인코딩 파라미터 세트들(144(1)-144(P))에 각각 대응하는 샷 비트레이트-품질 포인트들(320(m,1)-320(m,P))을 포함하며, 여기서 m은 1에서 M까지의 정수이다. 동일한 또는 다른 실시예들에서, 샷 비트레이트-품질 포인트들(320) 각각은 샷 비트레이트-품질 포인트(320)에 대응하는 인코딩된 샷(188), 인코딩된 샷(188)의 해상도(142), 인코딩된 샷(188)의 비트레이트(254), 및 인코딩된 샷(188)과 연관된 시각적 품질 레벨(256)을 포함하지만 이에 제한되지는 않는다. 도시된 바와 같이, 볼록 껍질 생성기(230(1))가 해상도(142(1))를 갖는 인코딩된 샷들(188)에 대한 샷 비트레이트-품질 포인트들(320)을 생성하기 때문에, 볼록 껍질 생성기(230(1))에 의해 생성된 샷 비트레이트-품질 포인트들(320)은 해상도(142(1))를 공유한다.
도 2를 다시 참조하면, 볼록 껍질 생성기들(230(2)-240(N))에 의해 생성된 순위화된 샷 데이터세트들(350)은 해상도(142(1)) 대신에 해상도들(142(2)-142(N))에 각각 대응한다. 따라서, 볼록 껍질 생성기들(230(2)-240(N))에 의해 생성된 샷 비트레이트-품질 포인트들(320)은 해상도(142(1)) 대신에 해상도들(142(2)-142(N))을 각각 공유한다.
이제, 도 3을 다시 참조하면, 일부 실시예들에서, 순위화된 샷 데이터세트(350(1))는, 제한 없이, 해상도(142(1)), 샷(158(1)) 및 인코딩 파라미터 세트들(144(1)-144(P))에 각각 대응하는 샷 비트레이트-품질 포인트들(320(1,1)-320(1,P))을 포함한다. 그리고, 순위화된 샷 데이터세트(350(M))는, 제한 없이, 해상도(142(1)), 샷(158(M)) 및 인코딩 파라미터 세트들(144(1)-144(P))에 각각 대응하는 샷 비트레이트-품질 포인트들(320(M,1)-320(M,P))을 포함한다. 일부 다른 실시예들에서, 샷들(158) 각각을 인코딩하는데 이용되는 인코딩 파라미터 세트들(144)의 수는 변할 수 있으며, 따라서 순위화된 샷 데이터세트들(350) 각각에 포함된 샷 비트레이트-품질 포인트들(320)의 수는 변할 수 있다.
볼록 껍질 생성기(230(1))는 해상도(142(1)), 샷(158(m)), 및 인코딩된 샷 세트(160(1,m))에 기반하여 각각의 순위화된 샷 데이터세트(350(m))를 생성하며, 여기서 m은 1에서 M까지의 정수이다. 도 1과 관련하여 본 명세서에서 전술한 바와 같이, 인코딩된 샷 세트(160(1,m))는, 제한 없이, 해상도(142(1)), 샷(158(m)), 및 인코딩 파라미터 세트들(144)에 기반하여 생성된 인코딩된 샷들(188)을 포함한다. 볼록 껍질 생성기(230(1))는 임의의 기술적으로 실현가능한 방식으로 순위화된 샷 데이터세트(350(m))를 생성할 수 있다.
일부 실시예들에서, 인코딩된 샷 세트(160(1,m))에 포함된 각각의 인코딩된 샷(188)에 대해, 볼록 껍질 생성기(230(1))는 인코딩된 샷(188)과 연관된 시각적 품질 레벨(256) 및 비트레이트(254)를 계산하여 인코딩된 샷(188)에 대응하는 샷 비트레이트-품질 포인트(320)를 생성한다. 그 후, 볼록 껍질 생성기(230(1))는 인코딩된 샷 세트(160(1,m))에 포함된 인코딩된 샷들(188)에 대응하는 샷 비트레이트-품질 포인트들(320)을 비트레이트들(254) 중 최저 비트레이트로부터 비트레이트들(254) 중 최고 비트레이트로 재정렬하여 순위화된 샷 데이터세트(350(m))를 생성한다.
본 명세서에서 전술한 바와 같이, 각각의 비트레이트(254)는 평균 비트레이트를 지정한다. 볼록 껍질 생성기(230(1))는 임의의 기술적으로 실현가능한 방식으로 각각의 인코딩된 샷(188)의 비트레이트(254)를 계산할 수 있다. 예를 들어, 일부 실시예들에서, 볼록 껍질 생성기(230(1))는 비트레이트(254)를 결정하기 위해 인코딩된 샷(188)의 해상도(142)에 필요한 비트들의 총 수를 인코딩된 샷(188)에 대응하는 샷(158)의 길이로 나눌 수 있다.
각각의 시각적 품질 레벨(256)은 임의의 기술적으로 실현가능한 방식으로 시각적 품질과 상관되는 임의의 유형의 메트릭에 대한 값일 수 있다. 일부 실시예들에서, 각각의 시각적 품질 레벨(256)은 시각적 품질 메트릭에 대한 값이다. 시각적 품질 메트릭들의 일부 예들은, 피크 신호 대 잡음비, 선형 비디오 다중방법 평가 융합(video multimethod assessment fusion)("VMAF") 메트릭, 및 하모닉 VMAF 메트릭(harmonic VMAF metric)을 포함하지만, 이에 제한되지 않는다. 선형 VMAF 메트릭 및 하모닉 VMAF 메트릭은 또한 본 명세서에서 개별적으로 "VMAF 메트릭"으로 지칭된다. VMAF 메트릭은 재구성된 비디오 콘텐츠(예를 들어, 재구성된 샷들(198), 재구성된 비디오들 등)의 지각 비디오 품질을 추정한다.
일부 실시예들에서, 시각적 품질 레벨들(256)의 상이한 서브세트들은 상이한 메트릭들 및/또는 알고리즘들에 기반하여 계산될 수 있다. 동일한 또는 다른 실시예들에서, 시각적 품질 레벨들(256)은 해상도들(142(1)-142(N))에 걸쳐 인코딩된 샷들(188)과 연관된 시각적 품질 레벨들(256)이 일관된 방식으로 시각적 품질과 상관되도록 정규화된다. 일부 실시예들에서, 각각의 시각적 품질 레벨(256)은 왜곡 레벨로 대체되고, 본 명세서에 설명된 기술들은 이에 따라 수정된다.
일부 실시예들에서, 인코딩된 샷들(188) 중 주어진 샷과 연관된 시각적 품질 레벨(256)을 결정하기 위해, 볼록 껍질 생성기(230(1))는 인코딩된 샷(188)을 디코딩하여 디코딩된 샷(도시되지 않음)을 생성한다. 이어서, 볼록 껍질 생성기(230(1))는 디코딩된 샷을 타겟 해상도로 리샘플링(즉, 업샘플링 또는 다운샘플링)하여, 한 부류의 클라이언트 디바이스들 및/또는 디스플레이들의 디스플레이 특성들과 관련된 재구성된 샷(198)을 생성한다. 일부 실시예들에서, 타겟 해상도는 인코딩된 샷(188)의 해상도(142)와 관계없이 동일하다. 일부 다른 실시예들에서, 타겟 해상도는 인코딩된 샷(188)의 해상도(142)에 기반하여 변할 수 있고, 시각적 품질 레벨들(256)은 임의의 기술적으로 실현가능한 방식으로 해상도들(142(1)-142(N))에 걸쳐 정규화될 수 있다.
후속하여, 볼록 껍질 생성기(230(1))는 인코딩된 샷(188)과 연관된 시각적 품질 레벨(256)을 결정하기 위해 재구성된 샷(198) 및 선택적으로는 재구성된 샷(198)에 대응하는 샷(158)을 분석한다. 예를 들어, 일부 실시예들에서, 볼록 껍질 생성기(230(1))는 인코딩된 샷(188)으로부터 도출된 재구성된 샷(198) 및 인코딩된 샷(188)이 도출된 샷(158)에 기반하여 인코딩된 샷(188)과 연관된 VMAF 스코어를 계산하기 위해 VMAF(또는 하모닉 VMAF) 알고리즘을 구현한다. 그 후, 볼록 껍질 생성기(230(1))는 VMAF 스코어와 동일하게 시각적 품질 레벨(256)을 설정한다.
볼록 껍질(240(1))을 생성하기 위해, 볼록 껍질 생성기(230(1))는 해상도(142(1))를 갖는 샷 비트레이트-품질 포인트들(320)을, 해상도(142(1))에 대한 시각적 품질 레벨(256)과 비트레이트(254) 사이의 절충들을 최적화하는 비디오 비트레이트-품질 포인트들(250)로 집성한다. 볼록 껍질 생성기(230(1))는 해상도(142(1))를 갖는 샷 비트레이트-품질 포인트들(320)을 볼록 껍질(240(1))에 포함되는 비디오 비트레이트-품질 포인트들(250)로 집성하기 위한 임의의 수 및/또는 유형의 기술들을 구현할 수 있다.
더 구체적으로, 비디오 비트레이트-품질 포인트들(250) 각각은 인코딩 파라미터 세트들(144)의 상이한 "궤적"과 연관된다. 예를 들어, 비디오 비트레이트-품질 포인트(250(1))는 샷(158(1))에 대한 18의 QP 값, 샷(158(2))에 대한 14의 QP 값, 샷(158(3))에 대한 14의 QP 값, 샷(158(4))에 대한 20의 QP 값 등과 연관될 수 있다. 도 2를 다시 참조하면, 볼록 껍질(240(1))에서의 비디오 비트레이트-품질 포인트들(250(1)-250(V)) 각각은 상이한 궤적과 연관되고, 따라서 볼록 껍질(240(1))과 연관된 V개의 상이한 궤적이 존재한다. 일부 실시예들에서, 각각의 비디오 비트레이트-품질 포인트(250)에 대해, 시각적 품질 레벨(256)은 인코딩 파라미터 세트들(144)의 궤적에 대응하는 인코딩된 샷들(188)과 연관된 시각적 품질 레벨들(256)의 집성이다. 동일한 또는 다른 실시예들에서, 각각의 비디오 비트레이트-품질 포인트(250)에 대해, 비트레이트(254)는 인코딩 파라미터 세트들(144)의 궤적에 대응하는 인코딩된 샷들(188)의 비트레이트들(254)의 평균이다.
도시된 바와 같이, 일부 실시예들에서, 볼록 껍질 생성기(230(1))는 순위화된 샷 데이터세트들(350(1)-350(M))에 기반하여 볼록 껍질(240(1))을 생성하도록 트렐리스 반복기(380)를 구성한다. 도 4a 내지 도 4d와 관련하여 아래에 상세히 설명되는 바와 같이, 트렐리스 반복기(380)는 순위화된 샷 데이터세트들(350(1)-350(M))에 기반하여 시퀀스 트렐리스(390)를 반복적으로 업데이트하여 볼록 껍질(240(1))에 포함되는 비디오 비트레이트-품질 포인트들(250)을 생성한다. 트렐리스 반복기(380)는 소프트웨어 모듈이고, 시퀀스 트렐리스(390)는 도 4a 내지 도 4d와 관련하여 아래에서 더 상세히 설명되는 데이터 구조이다.
도 2를 다시 참조하면, 일부 실시예들에서, 볼록 껍질 생성기들(230(1)-230(N))은 각각 해상도들(142(1)-142(N))에 대한 순위화된 샷 데이터세트들(350)에 기반하여 볼록 껍질들(240(1)-230(N))을 각각 생성하기 위해 트렐리스 반복기(380)의 임의의 수의 인스턴스들을 이용한다.
비디오 비트레이트-품질 포인트들의 볼록 껍질들 및 비디오 비트레이트-품질 포인트들의 전체 볼록 껍질의 생성
도 4a 내지 도 4d는 다양한 실시예들에 따라, 도 3의 트렐리스 반복기(380)가 순위화된 샷 데이터세트들(350(1)-350(M))에 기반하여 볼록 껍질(240(1))을 생성하는 방법의 더 상세한 도면들이다. 단지 설명의 목적으로, 트렐리스 반복기(380)의 기능은 도시된 실시예에서의 해상도(142(1))에 대한 볼록 껍질(240(1))을 생성하는 맥락에서 도 4a 내지 도 4d에서 설명된다.
도 4a 내지 도 4d에 도시된 바와 같이, 시퀀스 트렐리스(390)는 샷 축(410) 및 비트레이트 축(430)을 포함하지만 이에 제한되지 않는다. 시퀀스 트렐리스(390)는 또한 해상도(142(1))에 대한 순위화된 샷 데이터세트들(350) 중 상이한 샷 데이터세트에, 그리고 이에 따라 샷들(158(1)-158(M)) 중 상이한 샷에 각각 대응하는 M개의 열을 포함하지만 이에 제한되지 않는다. 1에서 M까지의 정수 m에 있어서, m번째 열은 해상도(142(1))와 샷(158(m))의 조합에 대응하는 순위화된 샷 데이터세트(350)에 포함된 샷 비트레이트-품질 포인트들(320)을 포함하지만 이에 제한되지는 않는다.
각각의 열에 포함된 샷 비트레이트-품질 포인트들(320)은 순위화된 샷 데이터세트(350)에 따라 순위화된다. 더 구체적으로, 각각의 열에 포함된 샷 비트레이트-품질 포인트들(320)은 비트레이트들(254) 중 최저로부터 비트레이트들(254) 중 최고까지(그리고 구성에 의해 시각적 품질 레벨들(256) 중 최저로부터 시각적 품질 레벨들(256) 중 최고까지) 순위화된다. 일부 실시예들에서, 각각의 열에 포함된 샷 비트레이트-품질 포인트들(320)은 크기가 비트레이트(254)의 함수로서 증가하는 양의 기울기들을 갖는다.
편의상, 시퀀스 트렐리스(390)에 포함된 샷 비트레이트-품질 포인트들(320)은 한 쌍의 숫자들로 라벨링된 원들로서 도시되며, 숫자들의 각각의 쌍은 도 3과 관련하여 본 명세서에서 전술한 인덱스 표기법에 따라 샷 비트레이트-품질 포인트들(320) 중 상이한 하나를 나타낸다. 도 3을 다시 참조하면, 샷 비트레이트-품질 포인트들(320) 각각에 대해, 첫 번째 숫자는 순위화된 샷 데이터세트들(350), 및 이에 따른 샷들(158)에 대한 인덱스이다. 두 번째 숫자는 첫 번째 숫자에 의해 지정된 순위화된 샷 데이터세트(350) 내의 샷 비트레이트-품질 포인트(320)의 비트레이트 순위에 대한 인덱스이다. 일부 실시예들에서, 1에서 M까지의 정수 m 및 1에서 P까지의 정수 p에 대해, 샷 비트레이트-품질 포인트(320(m,p))는 샷(158(m)) 및 순위화된 샷 데이터세트(350(m))에 포함된 비트레이트들(254) 중 p번째 최저에 대응한다.
단지 설명의 목적으로, 도 4a 내지 도 4d에 도시된 실시예에서, 샷들(158)의 수는 5와 동일하고, 인코딩 파라미터 세트들(144)의 수는 4와 동일하다. 일부 다른 실시예들에서, 샷들(158)의 수 및 인코딩 파라미터 세트들(144)의 수는 임의의 양의 정수들일 수 있다. 동일한 또는 다른 실시예들에서, 각각의 샷(158) 및/또는 각각의 해상도(142)에 대한 순위화된 샷 데이터세트(350)를 생성하는데 이용되는 인코딩 파라미터 세트들(144)의 수는 변할 수 있다. 그 결과, 시퀀스 트렐리스(390)의 각각의 열에 포함된 샷 비트레이트-품질 포인트들(320)의 수는 변할 수 있다.
도 4a 내지 도 4d에 도시된 실시예에서, 샷 비트레이트-품질 포인트(320(1,1))는 샷(158(1)) 및 순위화된 샷 데이터세트(350(1))에 포함된 비트레이트들(254) 중 최저 비트레이트에 대응한다. 다른 예에서, 샷 비트레이트-품질 포인트(320(5,4))는 샷(158(5)) 및 순위화된 샷 데이터세트(350(5))에 포함된 비트레이트들(254) 중 네 번째 최저 비트레이트(이 경우에서는 비트레이트들(254) 중 최고 비트레이트)에 대응한다.
도 3과 관련하여 전술한 바와 같이, 샷 비트레이트-품질 포인트들(320) 각각은 인코딩된 샷들(188) 중 상이한 샷을 포함하지만 이에 제한되지 않는다. 트렐리스 반복기(380)는 샷들(158) 각각이 인코딩된 샷들(188) 중 하나와 연관되도록 샷 비트레이트-품질 포인트들(320)의 조합들을 선택함으로써 240(1)에 의해 볼록 껍질에 있는 비디오 비트레이트-품질 포인트들(250) 각각을 생성한다. 트렐리스 반복기(380)는 시퀀스 트렐리스(390)를 구현하여 이러한 조합 기술을 반복적으로 수행함으로써, 각각의 반복 동안 비디오 비트레이트-품질 포인트들(250) 중 상이한 포인트를 생성한다.
도 4a 내지 도 4d 각각은 상이한 반복에서 트렐리스 반복기(380)에 의해 생성되는 시퀀스 트렐리스(390)의 상이한 버전을 도시한다. 도 4a는 초기 상태에서의 시퀀스 트렐리스(390(1))를 나타낸다. 여기서, 트렐리스 반복기(380)는 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,1) 및 320(5,1))을 선택한다. 이러한 초기에 선택된 조합 내에 포함된 샷 비트레이트-품질 포인트들(320) 각각은 최저 비트레이트(254) 및 최저 시각적 품질 레벨들(256)을 가지며, 따라서 각각의 열들의 하단에 존재한다.
트렐리스 반복기(380)는 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,1) 및 320(5,1))에 각각 포함된 인코딩된 샷들(188(1,1), 188(2,1), 188(3,1), 188(4,1) 및 188(5,1))을 순차적으로 집성하여, 비디오 비트레이트-품질 포인트(250(1))에 포함된 인코딩된 비디오(258(1))를 생성한다. 또한, 트렐리스 반복기(380)는 샷들(158(1)-158(5))의 길이들 및 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,1) 및 320(5,1))에 각각 포함된 비트레이트들(254)에 기반하여 비디오 비트레이트-품질 포인트(250(1))에 포함된 비트레이트(254(1))를 계산한다. 트렐리스 반복기(380)는 또한 샷들(158(1)-158(5))의 길이들 및 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,1) 및 320(5,1))에 각각 포함된 시각적 품질 레벨들(256)에 기반하여 비디오 비트레이트-품질 포인트(250(1))에 포함된 시각적 품질 레벨(256(1))을 계산한다. 트렐리스 반복기(380)는 임의의 기술적으로 실현가능한 방식으로 시각적 품질 레벨(256(1))을 계산할 수 있다.
이어서, 트렐리스 반복기(380)는 초기에 선택된 조합 내의 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,1) 및 320(5,1)) 각각에 대해, 샷 비트레이트-품질 포인트(320)와 샷 비트레이트-품질 포인트(320) 위의 이웃 사이의 비트레이트(254)에 대한 시각적 품질 레벨(256)의 변화율을 계산한다. 도 4a에 도시된 바와 같이, 일부 실시예들에서, 트렐리스 반복기(380)는 샷 비트레이트-품질 포인트들(320(1,1)과 320(1,2), 320(2,1)과 320(2,2), 320(3,1)과 320(3,2), 320(4,1)과 320(4,2), 및 320(5,1)과 320(5,2)) 사이의 비트레이트(254)에 대한 시각적 품질 레벨(256)의 변화율을 계산한다. 특히, 샷들(158) 중 특정 샷과 연관된 샷 비트레이트-품질 포인트(320)에 대한 계산된 변화율은 샷 비트레이트-품질 포인트(320)에서 취해진, 그 샷(158)과 연관된 비트레이트-품질 곡선(도시되지 않음)의 도함수를 나타낸다.
도시된 바와 같이, 일부 실시예들에서, 트렐리스 반복기(380)는 가장 큰 크기를 갖는 도함수를 선택한 다음, 그 도함수와 연관된 위의 이웃을 선택하여 비디오 비트레이트-품질 포인트들(250) 중 후속 포인트를 생성한다. 도 4b에 도시된 바와 같이, 일부 실시예들에서, 트렐리스 반복기(380)는 샷 비트레이트-품질 포인트(320(4,1))와 연관된 도함수가 가장 크다고 결정하고, 따라서 샷 비트레이트-품질 포인트(320(4,2))(샷 비트레이트-품질 포인트(320(4,1)) 위의 이웃)를 선택하여 비디오 비트레이트-품질 포인트(250(1))를 생성한다.
트렐리스 반복기(380)는 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,2) 및 320(5,1))에 각각 포함된 인코딩된 샷들(188(1,1), 188(2,1), 188(3,1), 188(4,2) 및 188(5,1))을 순차적으로 집성하여, 비디오 비트레이트-품질 포인트(250(2))에 포함된 인코딩된 비디오(258(2))를 생성한다. 게다가, 트렐리스 반복기(380)는 샷들(158(1)-158(5))의 길이들 및 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,2), 및 320(5,1))에 각각 포함된 비트레이트들(254)에 기반하여 비디오 비트레이트-품질 포인트(250(2))에 포함된 비트레이트(254(2))를 계산한다. 트렐리스 반복기(380)는 또한 샷들(158(1)-158(5))의 길이들 및 샷 비트레이트-품질 포인트들(320(1,1), 320(2,1), 320(3,1), 320(4,2) 및 320(5,1))에 각각 포함된 시각적 품질 레벨들(256)에 기반하여 비디오 비트레이트-품질 포인트(250(2))에 포함된 시각적 품질 레벨(256(2))을 계산한다.
트렐리스 반복기(380)는 이 기술을 반복적으로 수행함으로써, 도 4c 및 도 4d에 도시된 바와 같이, 시퀀스 트렐리스(390)를 상승시킨다. 도 4c에 도시된 바와 같이, 일부 실시예들에서, 트렐리스 반복기(380)는 샷 비트레이트-품질 포인트(320(1,1))와 연관된 도함수가 다른 도함수들에 비해 가장 크다고 결정하고, 따라서 비디오 비트레이트-품질 포인트(250(3))를 생성하기 위해 샷 비트레이트-품질 포인트(320(1,2))를 선택한다.
일부 실시예들에서, 트렐리스 반복기(380)는, 도 4d에 도시된 바와 같이, 트렐리스 반복기(380)가 샷 비트레이트-품질 포인트들(320(1,4), 320(2,4), 320(3,4), 320(4,4) 및 320(5,4))에 기반하여 비디오 비트레이트-품질 포인트(250(16))를 생성할 때까지 이 프로세스를 계속한다. 이러한 방식으로, 트렐리스 반복기(380)는 비트레이트(254) 및 시각적 품질 레벨(256) 모두가 각각의 반복에서 증가되는 샷 비트레이트-품질 포인트들(320) 중 단일 포인트를 선택함으로써 인코딩된 비디오(258(1))를 증분적으로 개선한다. 그 결과, 볼록 껍질(240(1))은 증가하는 비트레이트(254) 및 증가하는 시각적 품질 레벨(256)을 갖는 인코딩된 비디오들(258)의 집합에 대응한다.
일부 실시예들에서, 트렐리스 반복기(380)는 종료 조건을 생성하기 위해 시퀀스 트렐리스(390)를 상승시키기 전에 임의의 수의 샷 비트레이트-품질 포인트들(320)을 생성하여 이들을 시퀀스 트렐리스(390)에 추가한다. 그렇게 함에 있어서, 트렐리스 반복기(380)는 순위화된 샷 데이터세트들(350) 각각에 대한 비트레이트들(254) 중 최고 것을 갖는 샷 비트레이트-품질 포인트들(320)을 복제하여, 샷 비트레이트-품질 포인트들(320) 중 마지막에서 두 번째와 마지막 사이의 변화율이 제로가 되게 할 수 있다. 트렐리스 반복기(380)가 모든 샷들(158)에 대한 이러한 제로 변화율들을 검출할 때, 즉, 최대 변화율 크기가 정확히 제로일 때, 트렐리스 반복기(380)는 종료 조건을 식별하고 반복을 중단한다.
도 5a는 다양한 실시예들에 따른, 다수의 상이한 볼록 껍질들(240)에 기반하여 도 2의 래더 생성기에 의해 생성되는 전체 볼록 껍질(260)을 도시한다. 단지 설명의 목적을 위해, 도 5a에 도시된 실시예에서, 해상도들(142)의 수는 4이고, 해상도들(142(1)-142(4))은, 각각, 1280x720, 1920x1080, 2560x1440, 및 3840x2160이다. 볼록 껍질들(240(1)-240(4))은 각각 해상도들(142(1)-142(4))에 대응한다. 일부 다른 실시예들에서, 해상도들(142)의 수(및 이에 따른 볼록 껍질들(240)의 수)는 임의의 양의 정수일 수 있고, 해상도들(142)은 도 5a에 도시된 것과 다를 수 있다.
단지 설명의 목적으로, 볼록 껍질들(240(1)-240(4))은 도 5a에서 볼록 껍질 곡선들(520(1)-520(4))을 통해 각각 도시된다. 도 2와 관련하여 본 명세서에서 이전에 설명된 바와 같이, 일부 실시예들에서, 래더 생성기(170)는 비트레이트 축(430) 및 시각적 품질 축(510)에 대해 볼록 껍질들(240(1)-240(4))에서의 비디오 비트레이트-품질 포인트들(250)을 플로팅하여 볼록 껍질 곡선들(520(1)-520(4))을 각각 생성한다. 도시된 바와 같이, 일부 실시예들에서, 비트레이트들(254)은 kbps로 지정되고, 시각적 품질 레벨들은 VMAF 메트릭의 값들이다.
동일한 또는 다른 실시예들에서, 래더 생성기(170)는 전체 볼록 껍질(260)을 결정하기 위해 볼록 껍질 곡선들(520(1)-520(4))을 따라 비디오 비트레이트-품질 포인트들(250)을 평가한다. 더 구체적으로, 래더 생성기(170)는 경계를 형성하는 모든 볼록 껍질 곡선들에 걸쳐 비디오 비트레이트-품질 포인트들(250)의 서브세트를 식별하고, 여기서 모든 비디오 비트레이트-품질 포인트들(250)은 경계의 일 측 상에 존재하고, 또한 식별된 서브세트에 포함된 임의의 2개의 연속적인 비디오 비트레이트-품질 포인트들(250)을 직선과 연결하는 것이 그 선의 동일한 측 상의 식별된 서브세트에 포함되지 않은 모든 비디오 비트레이트-품질 포인트들(250)을 남기게 한다. 전체 볼록 껍질(260)은 비디오 비트레이트-품질 포인트들(250)의 식별된 서브세트이다. 일부 다른 실시예들에서, 래더 생성기(170)는 임의의 기술적으로 실현가능한 방식으로 볼록 껍질들(240)에 기반하여 전체 볼록 껍질(260)을 생성할 수 있다.
단지 설명의 목적으로, 전체 볼록 껍질(260)은 전체 볼록 껍질 곡선(530)을 통해 도 5a에 도시된다. 일부 실시예들에서, 래더 생성기(170) 또는 렁 선택 엔진(280)은 비트레이트 축(430) 및 시각적 품질 축(510)에 대해 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)을 플로팅하여, 전체 볼록 껍질 곡선(530)을 생성한다. 전체 볼록 껍질 곡선(530)은 전체 볼록 껍질(260)에서의 비디오 비트레이트-품질 포인트들(250)에 의해 정의되는 전체 형상을 도시한다.
인코딩 래더의 생성
도 5b는 다양한 실시예들에 따라, 도 2의 렁 선택 엔진(280)이 어떻게 전체 볼록 껍질(260), 다수의 상이한 볼록 껍질들(240), 및 래더 요건 세트(124)에 기반하여 인코딩 래더(172)를 생성하는지를 도시한다. 단지 설명의 목적을 위해, 도 5b에 도시된 실시예에서, 렁 선택 엔진(280)은 도 5a의 전체 볼록 껍질 곡선(530)을 통해 표현된 전체 볼록 껍질(260), 도 5a의 볼록 껍질 곡선들(520(1)-520(4))을 통해 제각기 표현된 볼록 껍질들(240(1)-240(4)), 및 래더 요건 세트(124)에 기반하여 인코딩 래더(172)를 생성한다.
전체 볼록 껍질(260)에 기반하여, 렁 선택 엔진(280)은 타겟 비트레이트(도시되지 않음)에 대해, 시각적 품질 레벨(256)을 최대화하는 비디오 비트레이트-품질 포인트(250)를 선택할 수 있다. 반대로, 렁 선택 엔진(280)은 타겟 시각적 품질 레벨(도시되지 않음)에 대해, 타겟 시각적 품질 레벨에 대한 비트레이트(254)를 최소화하는 비디오 비트레이트-품질 포인트(250)를 선택할 수 있다.
상보적인 방식으로, 볼록 껍질들(240(1)-240(4))에 기반하여, 렁 선택 엔진(280)은 타겟 비트레이트에 대해, 각각 1280x720, 1920x1080, 2560x1440, 및 3840x2160의 해상도들(142)에 대한 시각적 품질 레벨(256)을 최대화하는 비디오 비트레이트-품질 포인트들(250)을 선택할 수 있다. 반대로, 볼록 껍질들(240(1)-240(4))에 기반하여, 렁 선택 엔진(280)은 타겟 시각적 품질 레벨에 대해, 각각 1280x720, 1920x1080, 2560x1440, 및 3840x2160의 해상도들(142)에 대한 비트레이트(254)를 최대화하는 비디오 비트레이트-품질 포인트들(250)을 선택할 수 있다.
도 3과 관련하여 본 명세서에서 이전에 설명된 바와 같이, 렁 선택 엔진(280)에 포함된 선택 알고리즘(290)은 래더 요건 세트(124)에 포함된 래더 요건들(224)에 기반하여 렁 포인트들(298)을 선택한다. 도시되지는 않았지만, 도 5에 도시된 실시예에서, 래더 요건 세트(124)는, 제한 없이, 래더 요건들(224(1)-224(4))을 포함한다. 일부 다른 실시예들에서, 래더 요건들(224)의 수는 임의의 양의 정수일 수 있고, 래더 요건들(224)은 변할 수 있다.
단지 설명의 목적으로, 래더 요건(224(1))은 400 kbps의 최소 허용 비트레이트를 지정하는 최소 비트레이트 요건이다. 래더 요건(224(1)) 및 전체 볼록 껍질 곡선(530)에 기반하여, 선택 알고리즘(290)은 전체 볼록 껍질(260)로부터 400 kbps의 비트레이트(254)를 갖는 렁 포인트(298(1))를 결정한다. 렁 포인트(298(1))가 또한 1280x720의 해상도(142(1))에 대해 볼록 껍질(240(1))에 있다는 점에 유의한다.
래더 요건(224(2))은 20000 kbps의 최고 허용 비트레이트를 지정하는 품질 포화 요건이다. 래더 요건(224(2))의 처리의 일부로서, 선택 알고리즘(290)은 3400 kbps의 품질 포화 비트레이트(292)를 계산한다. 품질 포화 비트레이트(292)가 최고 허용 비트레이트보다 낮으므로, 선택 알고리즘(290)은 래더 요건(224(2)), 전체 볼록 껍질 곡선(530) 및 품질 포화 비트레이트(292)에 기반하여 렁 포인트(298(2))를 결정한다. 도시된 바와 같이, 선택 알고리즘(290)은 전체 볼록 껍질(260)로부터 3400 kbps의 비트레이트(254)를 갖는 렁 포인트(298(2))를 결정한다. 렁 포인트(298(2))는 또한 3840x2160의 해상도(142(4))에 대해 볼록 껍질(240(4))에 있다는 점에 유의한다.
래더 요건(224(3))은 비트레이트 간격 요건이다. 선택 알고리즘(290)은 렁 포인트(298(1)) 및 렁 포인트(298(2))에 기반하여 1900 kbps의 중간 포인트 비트레이트(도시되지 않음)를 계산하고, 이후 전체 볼록 껍질(260)로부터 1900 kbps의 비트레이트(254)를 갖는 렁 포인트(298(3))를 결정한다. 선택 알고리즘(290)은 렁 포인트들(298(1) 및 298(3))에 기반하여 1150 kbps의 새로운 중간 포인트 비트레이트를 계산한 다음, 전체 볼록 껍질(260)로부터 1150의 비트레이트(254)를 갖는 렁 포인트(298(4))를 결정한다. 선택 알고리즘(290)은 렁 포인트들(298(1) 및 298(4))에 기반하여 775 kbps의 새로운 중간 포인트 비트레이트를 계산하고, 이후 전체 볼록 껍질(260)로부터 775 kbps의 비트레이트(254)를 갖는 렁 포인트(298(5))를 결정한다. 그 후, 선택 알고리즘(290)은 렁 포인트들(298(1)-298(5))이 집합적으로 래더 요건(224(3))을 만족시킨다고 결정한다. 렁 포인트들(298(3) 및 298(4))은 또한 2560x1440의 해상도(142(3))에 대해 볼록 껍질(240(3))에 있고, 렁 포인트(298(5))는 또한 1280x720의 해상도(142(1))에 대해 볼록 껍질(240(1))에 있다는 점에 유의한다.
래더 요건(224(4))은 1920x1080의 해상도(142(2))가 필수적이라는 것을 지정하는 필수 해상도 요건이다. 렁 포인트들(298(1)-298(5)) 중 어느 것도 래더 요건(224(4))을 만족시키지 않기 때문에, 선택 알고리즘(290)은 전체 볼록 껍질(260)을 평가하여, 전체 볼록 껍질(260)에 포함된 비디오 비트레이트-품질 포인트들(250) 중 어느 것이 해상도(142(2))를 갖는지를 결정한다. 전체 볼록 껍질(260)에 포함된 비디오 비트레이트-품질 포인트들(250) 중 어느 것도 해상도(142(2))를 갖지 않기 때문에, 선택 알고리즘(290)은 1920x1080의 해상도(142(2))에 대해 볼록 껍질(240(2))로부터 렁 포인트(298(6))를 결정한다. 더 정확하게는, 선택 알고리즘(290)은 렁 포인트(298(1))와 렁 포인트(298(2)) 사이의 전체 볼록 껍질(260)의 부분에 가장 가깝게 있는 1000의 비트레이트(254)를 갖는 렁 포인트(298(6))를 결정한다.
렁 선택 엔진(280)은 비트레이트(254) 중 최저 비트레이트로부터 비트레이트(254) 중 최고 비트레이트로 렁 포인트들(298(1)-298(6))을 재정렬하여 렁 포인트들(298)의 정렬된 세트를 생성한다. 렁 포인트들(298)의 정렬된 세트에 기반하여, 렁 선택 엔진(280)은, 제한 없이, 렁 포인트들(298(1), 298(5), 298(6), 298(4), 298(3), 298(2))에 대응하는 비트레이트-해상도 쌍들(174(1)-174(6))을 포함하는 인코딩 래더(172)를 생성한다. 렁 선택 엔진(280)은 또한 렁 포인트들(298(1), 298(5), 298(6), 298(4), 298(3), 298(2))에 각각 대응하는 최적화된 인코딩된 비디오들(178(1)-178(6))을 제한 없이 포함하는 최적화된 인코딩된 비디오 세트(176)를 결정한다.
도시된 바와 같이, 비트레이트-해상도 쌍들(174(1) 및 172(2))은 1280x720의 해상도(142(1))를 공유하고, 각각 400 kbps 및 775 kbps의 비트레이트들(254)을 갖는다. 비트레이트-해상도 쌍(174(3))은 1920x1080의 해상도(142(2)) 및 1000 kbps의 비트레이트(254)를 갖는다. 비트레이트-해상도 쌍들(174(4) 및 172(5))은 2560x1440의 해상도(142(3))를 공유하고, 각각 1150 kbps 및 1900 kbps의 비트레이트들(254)을 갖는다. 비트레이트-해상도 쌍(174(6))은 3840x2160의 해상도(142(4)) 및 3400 kbps의 비트레이트(254)를 갖는다.
도 6은 다양한 실시예들에 따른, 미디어 타이틀에 대한 인코딩 래더를 생성하기 위한 방법 단계들의 흐름도이다. 이러한 방법 단계들이 도 1 내지 도 5의 시스템들과 관련하여 설명되지만, 본 기술분야의 통상의 기술자는 이러한 방법 단계들을 임의의 순서로 구현하도록 구성되는 임의의 시스템이 본 발명의 범위 내에 속한다는 것을 이해할 것이다.
도시된 바와 같이, 방법(600)은 단계(602)에서 시작하고, 여기서 샷 인코딩 엔진(140)은 미디어 타이틀에 대응하는 소스 비디오(122)를 샷들(158)로 분할한다. 단계(604)에서, 샷 인코딩 엔진(140)은 샷들(158), 해상도들(142) 및 인코딩 파라미터 세트들(144)에 기반하여 인코딩된 샷들(188)을 생성한다. 단계(606)에서, 해상도들(142) 각각에 대해, 래더 생성기(170)는 해상도(142)를 갖는 인코딩된 샷들(188)에 기반하여 해상도(142)에 대한 비디오 비트레이트-품질 포인트들(250)의 볼록 껍질(240)을 생성한다. 단계(608)에서, 래더 생성기(170)는 볼록 껍질들(240)에 기반하여 비디오 비트레이트-품질 포인트들(250)의 전체 볼록 껍질을 생성한다.
단계(610)에서, 선택 알고리즘(290)은 래더 요건들(224) 중 제1 래더 요건을 선택한다. 단계(612)에서, 선택 알고리즘(290)은 선택된 래더 요건(224)이 임의의 필수 해상도들을 지정하는지를 결정한다. 단계(612)에서, 선택 알고리즘(290)이 선택된 래더 요건(224)이 임의의 필수 해상도들을 지정하지 않는다고 결정하는 경우, 방법(600)은 단계(614)로 진행한다. 단계(614)에서, 선택 알고리즘(290)은 선택된 래더 요건(224)에 기반하여 전체 볼록 껍질(260)로부터 0개 이상의 렁 포인트(298)를 결정한다. 그 다음, 방법(600)은 단계(618)로 바로 진행한다.
그러나, 단계(612)에서, 선택 알고리즘(290)이 선택된 래더 요건(224)이 적어도 하나의 필수 해상도를 지정한다고 결정하는 경우, 방법(600)은 단계(616)로 바로 진행한다. 단계(616)에서, 선택 알고리즘(290)은 선택된 래더 요건(224)에 기반하여 전체 볼록 껍질(260) 및/또는 볼록 껍질들(240) 중 임의의 것으로부터 0개 이상의 렁 포인트(298)를 결정한다.
단계(618)에서, 선택 알고리즘(290)은 선택된 래더 요건(224)이 래더 요건들(224) 중 마지막인지를 결정한다. 단계(618)에서, 선택 알고리즘(290)이 선택된 래더 요건(224)이 래더 요건들(224) 중 마지막이 아니라고 결정하면, 방법(600)은 단계(620)로 진행한다. 단계(620)에서, 선택 알고리즘(290)은 다음의 래더 요건(224)을 선택하고, 방법(600)은 단계(612)로 복귀하며, 여기서 선택 알고리즘(290)은 선택된 래더 요건(224)이 임의의 필수 해상도들을 지정하는지를 결정한다.
그러나, 단계(618)에서, 선택 알고리즘(290)이 선택된 래더 요건(224)이 래더 요건들(224)의 마지막이라고 결정하면, 방법(600)은 바로 단계(622)로 진행한다.
단계(622)에서, 래더 생성기(170)는 렁 포인트들(298)에 기반하여 인코딩 래더(172) 및 최적화된 인코딩된 비디오 세트(176)를 생성한다. 단계(624)에서, 렁 선택 엔진(280)은 인코딩 래더(172) 및/또는 최적화된 인코딩된 비디오 세트(176)를 임의의 수 및/또는 유형의 소프트웨어 애플리케이션들에 저장 및/또는 전송한다. 이어서, 방법(600)이 종료된다.
요컨대, 개시된 기술들은 래더 요건 세트에 기반하여 미디어 타이틀에 대해 맞춤화되는 인코딩 래더를 효율적으로 생성하는데 이용될 수 있다. 일부 실시예들에서, 인코딩 래더 애플리케이션은 미디어 타이틀에 대응하는 소스 비디오를 상이한 샷들로 분할한다. 인코딩 래더 애플리케이션은 해상도들의 세트 및 다수의 상이한 인코딩 파라미터 세트들(예를 들어, QP 값)에 걸쳐 각각의 샷을 인코딩하여 인코딩된 샷들을 생성한다. 각각의 해상도에 대해, 인코딩 래더 애플리케이션은 해상도에 대응하는 인코딩된 샷들에 기반하여 비트레이트-품질 포인트들의 볼록 껍질을 생성한다.
주어진 해상도에 대한 볼록 껍질을 생성하기 위해, 인코딩 래더 애플리케이션은 해상도에 대응하는 인코딩된 샷에 대한 상이한 샷 비트레이트-품질 포인트를 계산한다. 각각의 샷 비트레이트-품질 포인트는 상이한 인코딩된 샷 및 대응하는 해상도, 비트레이트 및 시각적 품질 레벨을 지정하지만 이에 제한되지 않는다. 인코딩 래더 애플리케이션은 최적화 동작들을 수행하여 해상도를 갖는 샷 비트레이트-품질 포인트들을 볼록 껍질에 포함된 비디오 비트레이트-품질 포인트들로 집성한다. 볼록 껍질은 해상도에 대한 비트레이트와 시각적 품질 레벨 사이의 절충들을 최적화한다. 비디오 비트레이트-품질 포인트들 각각은 상이한 인코딩된 비디오 및 대응하는 해상도, 비트레이트, 및 시각적 품질 레벨을 지정한다. 특히, 인코딩된 비디오들 각각에 걸친 해상도는 일정하지만, 비트레이트 및 시각적 품질 레벨은 변할 수 있다.
후속하여, 인코딩 래더 애플리케이션은 상이한 해상도들에 대한 볼록 껍질들에 기반하여 비디오 비트레이트-품질 포인트들의 전체 볼록 껍질을 생성한다. 전체 볼록 껍질에서의 비디오 비트레이트-품질 포인트들 각각은 비트레이트에서 인코딩된 비디오의 시각적 품질 레벨을 최적화하는 해상도 및 상이한 비트레이트를 갖는 상이한 인코딩된 비디오에 대응한다.
인코딩 래더를 생성하기 위해, 인코딩 래더 애플리케이션은 상이한 비디오 비트레이트-품질 포인트와 각각 동일한 임의의 수의 렁 포인트들을 결정하기 위해 래더 요건 세트에 지정된 순서로 각각의 래더 요건을 처리한다. 주어진 래더 요건을 처리하기 위해, 래더 생성기는 래더 요건에 대한 렁 포인트들 및 임의의 선행 래더 요건들에 대한 렁 포인트들이 래더 요건을 집합적으로 만족시키도록 래더 요건에 대한 임의의 수(없음을 포함함)의 렁 포인트들을 결정한다. 주어진 래더 요건이 어떠한 필수 해상도들도 지정하지 않는 경우, 래더 생성기는 전체 볼록 껍질로부터 래더 요건에 대한 렁 포인트(들)를 결정한다. 그렇지 않으면, 래더 생성기는 전체 볼록 껍질로부터, 그리고 필요하다면 볼록 껍질들 중 하나로부터 우선적으로 래더 요건에 대한 렁 포인트(들)를 결정한다.
래더 요건들을 처리한 후에, 인코딩 래더 애플리케이션은, 제한 없이, 렁 포인트들에 대응하는 비트레이트-해상도 쌍들을 포함하는 인코딩 래더를 생성한다. 비트레이트-해상도 쌍들 각각은 상이한 "최적화된" 인코딩된 비디오의 비트레이트 및 해상도를 지정하고, 여기서, 해상도가 아닌 비트레이트 및 시각적 품질 레벨은 최적화된 인코딩된 비디오의 인코딩된 샷들에 걸쳐 변할 수 있다. 인코딩 래더 애플리케이션은 또한, 제한 없이, 렁 포인트들에 대응하는 최적화된 인코딩된 비디오들을 포함하는 최적화된 인코딩된 비디오 세트를 생성한다. 인코딩 래더 애플리케이션은 임의의 수 및/또는 유형의 엔드포인트 애플리케이션들에 의한 이용을 위해 임의의 수의 클라이언트 디바이스들에 인코딩 래더를 저장 및/또는 전송한다. 인코딩 래더 애플리케이션은 또한 최적화된 인코딩된 비디오 세트를 콘텐츠 전달 네트워크에 저장 및/또는 전송한다.
종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은 미디어 타이틀들의 주어진 라이브러리에 포함된 각각의 미디어 타이틀에 대해 그 미디어 타이틀에 대응하는 소스 비디오에 포함된 각각의 샷의 복잡성에 기반하여 상이한 인코딩 래더가 자동으로 생성된다는 것이다. 따라서, 개시된 기술들로, 각각의 인코딩 래더에 의해 표현되는 비트레이트와 시각적 품질 사이의 절충들이 주어진 미디어 타이틀에 대해 맞춤화된다. 그 결과, 종래의 고정 비트레이트 래더들에 기인하는 인코딩 비효율성들이 감소될 수 있다. 특히, 개시된 기술들은 주어진 인코딩 래더에서 지정된 비트레이트들 중 어느 것도 대응하는 소스 비디오의 품질 포화 비트레이트를 초과하지 않고, 주어진 인코딩 래더에서 임의의 수의 비트레이트-해상도 쌍들의 해상도들이 시각적 품질에 대해 적절히 최적화되는 것을 보장한다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 진보를 제공한다.
1. 일부 실시예들에서, 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들을 생성하는 컴퓨터에 의해 구현되는 방법은, 제1 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제1 볼록 껍질을 생성하는 단계, 제2 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제2 볼록 껍질을 생성하는 단계, 제1 볼록 껍질 및 제2 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계, 및 적어도 전체 볼록 껍질 및 제1 래더 요건에 기반하여 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계를 포함한다.
2. 조항 1의 컴퓨터에 의해 구현되는 방법에 있어서, 인코딩 래더를 생성하는 단계는, 전체 볼록 껍질 및 제1 래더 요건에 기반하여 복수의 인코딩된 비디오를 결정하는 단계, 및 복수의 인코딩된 비디오에 기반하여 복수의 비트레이트-해상도 쌍들을 생성하는 단계 - 비트레이트-해상도 쌍들 각각은 복수의 인코딩된 비디오에 포함된 상이한 인코딩된 비디오의 평균 비트레이트 및 해상도를 지정함 - 를 포함한다.
3. 조항 1 또는 조항 2의 컴퓨터에 의해 구현되는 방법에 있어서, 제1 래더 요건은 품질 포화 요건을 포함하고, 인코딩 래더를 생성하는 단계는, 전체 볼록 껍질에 기반하여 품질 포화 비트레이트를 계산하는 단계, 품질 포화 비트레이트에 기반하여 전체 볼록 껍질로부터 제1 인코딩된 비디오와 연관된 제1 비디오 비트레이트-품질 포인트를 선택하는 단계, 제1 인코딩된 비디오의 평균 비트레이트와 제1 인코딩된 비디오의 해상도를 지정하는 제1 비트레이트-해상도 쌍을 생성하는 단계, 및 적어도 제2 래더 요건과 연관된 복수의 비트레이트-해상도 쌍들과 제1 비트레이트-해상도 쌍을 집성하여 인코딩 래더의 일부분을 생성하는 단계를 포함한다.
4. 조항 1 내지 조항 3 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 인코딩 래더를 생성하는 단계는, 제1 래더 요건에서 지정된 타겟 비트레이트 간격에 기반하여 전체 볼록 껍질로부터 복수의 비디오 비트레이트-품질 포인트를 선택하는 단계, 및 복수의 비디오 비트레이트-품질 포인트에 기반하여 복수의 인코딩된 비디오와 연관된 복수의 비트레이트-해상도 쌍들을 생성하는 단계를 포함한다.
5. 조항 1 내지 조항 4 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 인코딩 래더를 생성하는 단계는, 전체 볼록 껍질에서의 복수의 비디오 비트레이트-품질 포인트 중 어느 것도 제1 래더 요건을 만족시키지 않는다고 결정하는 단계, 제1 래더 요건에 기반하여 제1 볼록 껍질로부터 적어도 하나의 비디오 비트레이트-품질 포인트를 선택하는 단계, 적어도 하나의 비디오 비트레이트-품질 포인트에 기반하여 적어도 하나의 인코딩된 비디오와 연관된 적어도 하나의 비트레이트-해상도 쌍을 생성하는 단계, 및 전체 볼록 껍질에 기반하여 생성된 복수의 비트레이트-해상도 쌍들과 적어도 하나의 비트레이트-해상도 쌍을 집성하여 인코딩 래더의 일부분을 생성하는 단계를 포함한다.
6. 조항 1 내지 조항 5 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 제1 볼록 껍질은 비디오 비트레이트-품질 포인트들의 제1 세트를 포함하고, 제2 볼록 껍질은 비디오 비트레이트-품질 포인트들의 제2 세트를 포함하고, 전체 볼록 껍질은 적어도 비디오 비트레이트-품질 포인트들의 제1 세트의 제1 서브세트 및 비디오 비트레이트-품질 포인트들의 제2 세트의 제2 서브세트를 포함한다.
7. 조항 1 내지 조항 6 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 제1 볼록 껍질을 생성하는 단계는, 제1 해상도로 그리고 복수의 인코딩 파라미터 세트에 걸쳐 미디어 타이틀에 포함된 각각의 샷을 인코딩하여 복수의 인코딩된 샷을 생성하는 단계, 복수의 인코딩된 샷 및 시각적 품질 메트릭에 기반하여 하나 이상의 최적화 동작을 수행함으로써 복수의 인코딩된 비디오를 생성하는 단계, 및 복수의 인코딩된 비디오에 기반하여 복수의 비디오 비트레이트-품질 포인트를 계산하는 단계를 포함한다.
8. 조항 1 내지 조항 7 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 시각적 품질 메트릭은 지각 비디오 품질을 추정하는 비디오 다중방법 평가 융합 메트릭을 포함한다.
9. 조항 1 내지 조항 8 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 제1 래더 요건은 최소 허용 비트레이트, 최대 허용 비트레이트, 타겟 비트레이트 간격, 최소 시각적 품질 레벨, 또는 필수 해상도 중 적어도 하나를 지정한다.
10. 조항 1 내지 조항 9 중 어느 하나의 컴퓨터에 의해 구현되는 방법에 있어서, 비트레이트는 인코딩 래더에 포함된 제1 비트레이트-해상도 쌍과 연관된 제1 인코딩된 비디오에 걸쳐 변한다.
11. 일부 실시예들에서, 하나 이상의 비일시적 컴퓨터 판독가능한 매체는 명령어들을 포함하며, 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 복수의 볼록 껍질을 생성하는 단계 - 복수의 볼록 껍질에 포함된 각각의 볼록 껍질은 상이한 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타냄 -, 복수의 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계, 및 적어도 전체 볼록 껍질 및 제1 래더 요건에 기반하여 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계를 수행함으로써 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들을 생성하게 한다.
12. 조항 11의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 인코딩 래더는 복수의 인코딩된 비디오와 연관되는 복수의 비트레이트-해상도 쌍들을 포함한다.
13. 조항 11 또는 조항 12의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 제1 래더 요건은 품질 포화 요건을 포함하고, 인코딩 래더를 생성하는 단계는, 전체 볼록 껍질에 기반하여 품질 포화 비트레이트를 계산하는 단계, 품질 포화 비트레이트에 기반하여 전체 볼록 껍질로부터 제1 인코딩된 비디오와 연관된 제1 비디오 비트레이트-품질 포인트를 선택하는 단계, 제1 인코딩된 비디오의 평균 비트레이트와 제1 인코딩된 비디오의 해상도를 지정하는 제1 비트레이트-해상도 쌍을 생성하는 단계, 및 적어도 제2 래더 요건과 연관된 복수의 비트레이트-해상도 쌍들과 제1 비트레이트-해상도 쌍을 집성하여 인코딩 래더의 일부분을 생성하는 단계를 포함한다.
14. 조항 11 내지 조항 13 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 인코딩 래더를 생성하는 단계는, 제1 래더 요건에서 지정된 타겟 비트레이트 간격에 기반하여 전체 볼록 껍질로부터 복수의 비디오 비트레이트-품질 포인트를 선택하는 단계, 및 복수의 비디오 비트레이트-품질 포인트에 기반하여 복수의 인코딩된 비디오와 연관된 복수의 비트레이트-해상도 쌍들을 생성하는 단계를 포함한다.
15. 조항 11 내지 조항 14 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 인코딩 래더를 생성하는 단계는, 전체 볼록 껍질에서의 복수의 비디오 비트레이트-품질 포인트 중 어느 것도 제1 래더 요건을 만족시키지 않는다고 결정하는 단계, 제1 래더 요건에 기반하여 복수의 볼록 껍질에 포함된 제1 볼록 껍질로부터 적어도 하나의 비디오 비트레이트-품질 포인트를 선택하는 단계, 적어도 하나의 비디오 비트레이트-품질 포인트에 기반하여 적어도 하나의 인코딩된 비디오와 연관된 적어도 하나의 비트레이트-해상도 쌍을 생성하는 단계, 및 전체 볼록 껍질에 기반하여 생성된 복수의 비트레이트-해상도 쌍들과 적어도 하나의 비트레이트-해상도 쌍을 집성하여 인코딩 래더의 일부분을 생성하는 단계를 포함한다.
16. 조항 11 내지 조항 15 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 복수의 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계는, 복수의 볼록 껍질에 포함된 비디오 비트레이트-품질 포인트들의 합집합을 결정하는 단계, 비디오 비트레이트-품질 포인트들의 합집합과 연관된 경계를 식별하는 단계 - 비디오 비트레이트-품질 포인트들의 합집합에 포함된 어느 비디오 비트레이트-품질 포인트도 경계의 제1 측에 위치하지 않음 -, 및 경계를 따라 위치하지 않은 비디오 비트레이트-품질 포인트들의 합집합에 포함된 임의의 비디오 비트레이트-품질 포인트를 폐기하는 단계를 포함한다.
17. 조항 11 내지 조항 16 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 복수의 볼록 껍질을 생성하는 단계는, 제1 해상도로 그리고 복수의 인코딩 파라미터 세트에 걸쳐 미디어 타이틀에 포함된 각각의 샷을 인코딩하여 복수의 인코딩된 샷을 생성하는 단계, 복수의 인코딩된 샷 및 시각적 품질 메트릭에 기반하여 하나 이상의 최적화 동작을 수행함으로써 복수의 인코딩된 비디오를 생성하는 단계, 및 복수의 인코딩된 비디오에 기반하여 복수의 비디오 비트레이트-품질 포인트를 계산함으로써 복수의 볼록 껍질에 포함된 제1 볼록 껍질을 생성하는 단계를 포함한다.
18. 조항 11 내지 조항 17 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 제1 래더 요건은 최소 허용 비트레이트, 최대 허용 비트레이트, 타겟 비트레이트 간격, 최소 시각적 품질 레벨, 또는 필수 해상도 중 적어도 하나를 지정한다.
19. 조항 11 내지 조항 18 중 어느 하나의 하나 이상의 비일시적 컴퓨터 판독가능한 매체에 있어서, 인코딩 래더에 포함된 제1 비트레이트-해상도 쌍과 연관된 제1 인코딩된 비디오는 제1 인코딩 파라미터에 기반하여 생성되는 적어도 제1 인코딩된 샷 및 제2 인코딩 파라미터에 기반하여 생성되는 적어도 제2 인코딩된 샷을 포함한다.
20. 일부 실시예들에서, 시스템은 명령어들을 저장하는 하나 이상의 메모리, 및 하나 이상의 메모리에 결합된 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는 명령어들을 실행할 때, 시각적 품질 메트릭, 및 미디어 타이틀 및 제1 해상도 둘 다와 연관된 제1 복수의 인코딩된 샷에 기반하여 제1 볼록 껍질을 생성하는 단계, 시각적 품질 메트릭, 및 미디어 타이틀 및 제2 해상도 둘 다와 연관된 제2 복수의 인코딩된 샷에 기반하여 제2 볼록 껍질을 생성하는 단계, 제1 볼록 껍질 및 제2 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계, 및 전체 볼록 껍질, 제1 볼록 껍질 또는 제2 볼록 껍질 중 적어도 하나 및 제1 래더 요건에 기반하여 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계를 수행한다.
임의의 청구항에 기재된 임의의 청구항 요소 및/또는 본 출원에서 설명된 임의의 요소들의 임의의 조합 및 모든 조합들은 임의의 방식으로 실시예들 및 보호의 고려 범위 내에 속한다.
다양한 실시예들에 대한 설명들은 예시의 목적들로 제시되었지만, 포괄적인 것으로 의도되거나 개시된 실시예들로 제한되지는 않는다. 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 많은 수정들 및 변형들이 명백할 것이다.
본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 본 명세서에서 모두 일반적으로 "모듈", "시스템" 또는 "컴퓨터"로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합한 실시예의 형태를 취할 수 있다. 또한, 본 개시내용에서 설명된 임의의 하드웨어 및/또는 소프트웨어 기술, 프로세스, 기능, 구성요소, 엔진, 모듈, 또는 시스템은 회로 또는 회로들의 세트로서 구현될 수 있다. 또한, 본 개시내용의 양태들은 컴퓨터 판독가능한 프로그램 코덱이 구현된 하나 이상의 컴퓨터 판독가능한 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능한 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 신호 매체 또는 컴퓨터 판독가능한 저장 매체일 수 있다. 컴퓨터 판독가능한 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만, 이에 제한되는 것은 아니다. 컴퓨터 판독가능한 저장 매체의 보다 구체적인 예들(비-포괄적인 리스트)은 하나 이상의 와이어를 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리, 판독 전용 메모리, 소거 및 프로그래밍 가능 판독 전용 메모리, 플래시 메모리, 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리, 광학 저장 디바이스, 자기 저장 디바이스 또는 이들의 임의의 적절한 조합을 포함할 것이다. 본 문헌과 관련하여, 컴퓨터 판독가능한 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 이용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적인 매체일 수 있다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 위에서 설명되었다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서에 제공되어 기계를 생성할 수 있다. 명령어들은, 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서를 통해 실행될 때, 흐름도 및/또는 블록도의 블록 또는 블록들에서 지정된 기능들/동작들의 구현을 가능하게 한다. 이러한 프로세서들은 범용 프로세서들, 특수 목적 프로세서들, 주문형 프로세서들, 또는 필드 프로그래밍 가능 게이트 어레이들일 수 있지만, 이에 제한되지는 않는다.
도면들 내의 흐름도들 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도들 또는 블록도들 내의 각각의 블록은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대안 구현들에서, 그 블록에서 언급된 기능들이 도면들에서 언급된 순서와 다르게 발생할 수 있음에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 또는 그 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 점에 유의할 것이다.
전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들은 본 개시내용의 기본 범위를 벗어나지 않고 안출될 수 있으며, 그 범위는 다음의 청구항들에 의해 결정된다.

Claims (20)

  1. 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들(encoding ladders)을 생성하는 컴퓨터에 의해 구현되는 방법으로서,
    제1 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들(tradeoffs)을 나타내는 제1 볼록 껍질(convex hull)을 생성하는 단계;
    제2 해상도로 상기 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타내는 제2 볼록 껍질을 생성하는 단계;
    상기 제1 볼록 껍질 및 상기 제2 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계; 및
    적어도 상기 전체 볼록 껍질 및 제1 래더 요건에 기반하여 상기 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 인코딩 래더를 생성하는 단계는,
    상기 전체 볼록 껍질 및 상기 제1 래더 요건에 기반하여 복수의 인코딩된 비디오를 결정하는 단계; 및
    상기 복수의 인코딩 비디오에 기반하여 복수의 비트레이트-해상도 쌍들을 생성하는 단계 - 상기 비트레이트-해상도 쌍들 각각은 상기 복수의 인코딩된 비디오에 포함된 상이한 인코딩된 비디오의 평균 비트레이트 및 해상도를 지정함 -
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 제1 래더 요건은 품질 포화 요건을 포함하고, 상기 인코딩 래더를 생성하는 단계는,
    상기 전체 볼록 껍질에 기반하여 품질 포화 비트레이트를 계산하는 단계;
    상기 품질 포화 비트레이트에 기반하여 상기 전체 볼록 껍질로부터 제1 인코딩된 비디오와 연관된 제1 비디오 비트레이트-품질 포인트를 선택하는 단계;
    상기 제1 인코딩된 비디오의 평균 비트레이트와 상기 제1 인코딩된 비디오의 해상도를 지정하는 제1 비트레이트-해상도 쌍을 생성하는 단계; 및
    적어도 제2 래더 요건과 연관된 복수의 비트레이트-해상도 쌍들과 상기 제1 비트레이트-해상도 쌍을 집성하여 상기 인코딩 래더의 일부분을 생성하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 인코딩 래더를 생성하는 단계는,
    상기 제1 래더 요건에서 지정된 타겟 비트레이트 간격에 기반하여 상기 전체 볼록 껍질로부터 복수의 비디오 비트레이트-품질 포인트를 선택하는 단계; 및
    상기 복수의 비디오 비트레이트-품질 포인트에 기반하여 복수의 인코딩된 비디오와 연관된 복수의 비트레이트-해상도 쌍들을 생성하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  5. 제1항에 있어서,
    상기 인코딩 래더를 생성하는 단계는,
    상기 전체 볼록 껍질에서의 복수의 비디오 비트레이트-품질 포인트 중 어느 것도 상기 제1 래더 요건을 만족시키지 않는다고 결정하는 단계;
    상기 제1 래더 요건에 기반하여 상기 제1 볼록 껍질로부터 적어도 하나의 비디오 비트레이트-품질 포인트를 선택하는 단계;
    상기 적어도 하나의 비디오 비트레이트-품질 포인트에 기반하여 적어도 하나의 인코딩된 비디오와 연관된 적어도 하나의 비트레이트-해상도 쌍을 생성하는 단계; 및
    상기 전체 볼록 껍질에 기반하여 생성된 복수의 비트레이트-해상도 쌍들과 상기 적어도 하나의 비트레이트-해상도 쌍을 집성하여 상기 인코딩 래더의 일부분을 생성하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 제1 볼록 껍질은 비디오 비트레이트-품질 포인트들의 제1 세트를 포함하고, 상기 제2 볼록 껍질은 비디오 비트레이트-품질 포인트들의 제2 세트를 포함하고, 상기 전체 볼록 껍질은 적어도 상기 비디오 비트레이트-품질 포인트들의 제1 세트의 제1 서브세트 및 상기 비디오 비트레이트-품질 포인트들의 제2 세트의 제2 서브세트를 포함하는, 컴퓨터에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 제1 볼록 껍질을 생성하는 단계는,
    상기 제1 해상도로 그리고 복수의 인코딩 파라미터 세트에 걸쳐 상기 미디어 타이틀에 포함된 각각의 샷을 인코딩하여 복수의 인코딩된 샷을 생성하는 단계;
    상기 복수의 인코딩된 샷 및 시각적 품질 메트릭에 기반하여 하나 이상의 최적화 동작을 수행함으로써 복수의 인코딩된 비디오를 생성하는 단계; 및
    상기 복수의 인코딩된 비디오에 기반하여 복수의 비디오 비트레이트-품질 포인트를 계산하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  8. 제7항에 있어서,
    상기 시각적 품질 메트릭은 지각 비디오 품질을 추정하는 비디오 다중방법 평가 융합 메트릭을 포함하는, 컴퓨터에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 제1 래더 요건은 최소 허용 비트레이트, 최대 허용 비트레이트, 타겟 비트레이트 간격, 최소 시각적 품질 레벨, 또는 필수 해상도 중 적어도 하나를 지정하는, 컴퓨터에 의해 구현되는 방법.
  10. 제1항에 있어서,
    비트레이트는 상기 인코딩 래더에 포함된 제1 비트레이트-해상도 쌍과 연관된 제1 인코딩된 비디오에 걸쳐 변하는, 컴퓨터에 의해 구현되는 방법.
  11. 명령어들을 포함하는 하나 이상의 비일시적 컴퓨터 판독가능한 매체로서,
    상기 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
    복수의 볼록 껍질을 생성하는 단계 - 상기 복수의 볼록 껍질에 포함된 각각의 볼록 껍질은 상이한 해상도로 미디어 타이틀을 인코딩할 때의 품질과 비트레이트 사이의 인코딩 절충들을 나타냄 -;
    상기 복수의 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계; 및
    적어도 상기 전체 볼록 껍질 및 제1 래더 요건에 기반하여 상기 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계
    를 수행함으로써 미디어 타이틀들을 인코딩하기 위한 인코딩 래더들을 생성하게 하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  12. 제11항에 있어서,
    상기 인코딩 래더는 복수의 인코딩된 비디오와 연관되는 복수의 비트레이트-해상도 쌍들을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  13. 제11항에 있어서,
    상기 제1 래더 요건은 품질 포화 요건을 포함하고, 상기 인코딩 래더를 생성하는 단계는,
    상기 전체 볼록 껍질에 기반하여 품질 포화 비트레이트를 계산하는 단계;
    상기 품질 포화 비트레이트에 기반하여 상기 전체 볼록 껍질로부터 제1 인코딩된 비디오와 연관된 제1 비디오 비트레이트-품질 포인트를 선택하는 단계;
    상기 제1 인코딩된 비디오의 평균 비트레이트와 상기 제1 인코딩된 비디오의 해상도를 지정하는 제1 비트레이트-해상도 쌍을 생성하는 단계; 및
    적어도 제2 래더 요건과 연관된 복수의 비트레이트-해상도 쌍들과 상기 제1 비트레이트-해상도 쌍을 집성하여 상기 인코딩 래더의 일부분을 생성하는 단계
    를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  14. 제11항에 있어서,
    상기 인코딩 래더를 생성하는 단계는,
    상기 제1 래더 요건에서 지정된 타겟 비트레이트 간격에 기반하여 상기 전체 볼록 껍질로부터 복수의 비디오 비트레이트-품질 포인트를 선택하는 단계; 및
    상기 복수의 비디오 비트레이트-품질 포인트에 기반하여 복수의 인코딩된 비디오와 연관된 복수의 비트레이트-해상도 쌍들을 생성하는 단계
    를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  15. 제11항에 있어서,
    상기 인코딩 래더를 생성하는 단계는,
    상기 전체 볼록 껍질에서의 복수의 비디오 비트레이트-품질 포인트 중 어느 것도 상기 제1 래더 요건을 만족시키지 않는다고 결정하는 단계;
    상기 제1 래더 요건에 기반하여 상기 복수의 볼록 껍질에 포함된 제1 볼록 껍질로부터 적어도 하나의 비디오 비트레이트-품질 포인트를 선택하는 단계;
    상기 적어도 하나의 비디오 비트레이트-품질 포인트에 기반하여 적어도 하나의 인코딩된 비디오와 연관된 적어도 하나의 비트레이트-해상도 쌍을 생성하는 단계; 및
    상기 전체 볼록 껍질에 기반하여 생성된 복수의 비트레이트-해상도 쌍들과 상기 적어도 하나의 비트레이트-해상도 쌍을 집성하여 상기 인코딩 래더의 일부분을 생성하는 단계
    를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  16. 제11항에 있어서,
    상기 복수의 볼록 껍질에 기반하여 상기 전체 볼록 껍질을 결정하는 단계는,
    상기 복수의 볼록 껍질에 포함된 비디오 비트레이트-품질 포인트들의 합집합을 결정하는 단계;
    상기 비디오 비트레이트-품질 포인트들의 합집합과 연관된 경계를 식별하는 단계 - 상기 비디오 비트레이트-품질 포인트들의 합집합에 포함된 어느 비디오 비트레이트-품질 포인트도 상기 경계의 제1 측에 위치하지 않음 -; 및
    상기 경계를 따라 위치하지 않은 상기 비디오 비트레이트-품질 포인트들의 합집합에 포함된 임의의 비디오 비트레이트-품질 포인트를 폐기하는 단계
    를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  17. 제11항에 있어서,
    상기 복수의 볼록 껍질을 생성하는 단계는,
    제1 해상도로 그리고 복수의 인코딩 파라미터 세트에 걸쳐 상기 미디어 타이틀에 포함된 각각의 샷을 인코딩하여 복수의 인코딩된 샷을 생성하는 단계;
    상기 복수의 인코딩된 샷 및 시각적 품질 메트릭에 기반하여 하나 이상의 최적화 동작을 수행함으로써 복수의 인코딩된 비디오를 생성하는 단계; 및
    상기 복수의 인코딩된 비디오에 기반하여 복수의 비디오 비트레이트-품질 포인트를 계산함으로써 상기 복수의 볼록 껍질에 포함된 제1 볼록 껍질을 생성하는 단계
    를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  18. 제11항에 있어서,
    상기 제1 래더 요건은 최소 허용 비트레이트, 최대 허용 비트레이트, 타겟 비트레이트 간격, 최소 시각적 품질 레벨, 또는 필수 해상도 중 적어도 하나를 지정하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  19. 제11항에 있어서,
    상기 인코딩 래더에 포함된 제1 비트레이트-해상도 쌍과 연관된 제1 인코딩된 비디오는 제1 인코딩 파라미터에 기반하여 생성되는 적어도 제1 인코딩된 샷 및 제2 인코딩 파라미터에 기반하여 생성되는 적어도 제2 인코딩된 샷을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
  20. 시스템으로서,
    명령어들을 저장하는 하나 이상의 메모리; 및
    상기 하나 이상의 메모리에 결합된 하나 이상의 프로세서
    를 포함하며, 상기 하나 이상의 프로세서는 상기 명령어들을 실행할 때,
    시각적 품질 메트릭, 및 미디어 타이틀 및 제1 해상도 둘 다와 연관된 제1 복수의 인코딩된 샷에 기반하여 제1 볼록 껍질을 생성하는 단계;
    상기 시각적 품질 메트릭, 및 상기 미디어 타이틀 및 제2 해상도 둘 다와 연관된 제2 복수의 인코딩된 샷에 기반하여 제2 볼록 껍질을 생성하는 단계;
    상기 제1 볼록 껍질 및 상기 제2 볼록 껍질에 기반하여 전체 볼록 껍질을 결정하는 단계; 및
    상기 전체 볼록 껍질, 상기 제1 볼록 껍질 또는 상기 제2 볼록 껍질 중 적어도 하나 및 제1 래더 요건에 기반하여 상기 미디어 타이틀에 대한 인코딩 래더를 생성하는 단계
    를 수행하는, 시스템.
KR1020237029841A 2021-02-11 2022-02-07 타이틀별 인코딩 래더들을 생성하기 위한 기술들 KR20230143160A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/174,121 US11750821B2 (en) 2021-02-11 2021-02-11 Techniques for generating per-title encoding ladders
US17/174,121 2021-02-11
PCT/US2022/015455 WO2022173687A1 (en) 2021-02-11 2022-02-07 Techniques for generating per-title encoding ladders

Publications (1)

Publication Number Publication Date
KR20230143160A true KR20230143160A (ko) 2023-10-11

Family

ID=80446905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237029841A KR20230143160A (ko) 2021-02-11 2022-02-07 타이틀별 인코딩 래더들을 생성하기 위한 기술들

Country Status (6)

Country Link
US (1) US11750821B2 (ko)
EP (1) EP4292287A1 (ko)
JP (1) JP2024506188A (ko)
KR (1) KR20230143160A (ko)
AU (1) AU2022219906A1 (ko)
WO (1) WO2022173687A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230037152A1 (en) * 2021-07-30 2023-02-02 Meta Platforms, Inc. Combined convex hull optimization

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10742708B2 (en) * 2017-02-23 2020-08-11 Netflix, Inc. Iterative techniques for generating multiple encoded versions of a media title
US11166034B2 (en) 2017-02-23 2021-11-02 Netflix, Inc. Comparing video encoders/decoders using shot-based encoding and a perceptual visual quality metric
US11343492B2 (en) * 2019-03-15 2022-05-24 Mux, Inc. Method for generating video- and audience-specific encoding ladders
US10880354B2 (en) 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
US11115697B1 (en) * 2019-12-06 2021-09-07 Amazon Technologies, Inc. Resolution-based manifest generator for adaptive bitrate video streaming

Also Published As

Publication number Publication date
JP2024506188A (ja) 2024-02-09
US20220256168A1 (en) 2022-08-11
AU2022219906A1 (en) 2023-08-17
WO2022173687A1 (en) 2022-08-18
EP4292287A1 (en) 2023-12-20
US11750821B2 (en) 2023-09-05

Similar Documents

Publication Publication Date Title
US11871002B2 (en) Iterative techniques for encoding video content
US11444999B2 (en) Iterative techniques for generating multiple encoded versions of a media title
US11818375B2 (en) Optimizing encoding operations when generating encoded versions of a media title
US11870945B2 (en) Comparing video encoders/decoders using shot-based encoding and a perceptual visual quality metric
US11425432B2 (en) Techniques for efficiently performing subsequence-based encoding for a media title
US11196791B2 (en) Techniques for encoding a media title while constraining quality variations
US10841356B2 (en) Techniques for encoding a media title while constraining bitrate variations
KR20230143160A (ko) 타이틀별 인코딩 래더들을 생성하기 위한 기술들
AU2020333539B2 (en) Comparing video encoders/decoders using shot-based encoding and a perceptual visual quality metric

Legal Events

Date Code Title Description
A201 Request for examination