KR20140124415A - 다층 레이트 제어 기법 - Google Patents

다층 레이트 제어 기법 Download PDF

Info

Publication number
KR20140124415A
KR20140124415A KR1020147022689A KR20147022689A KR20140124415A KR 20140124415 A KR20140124415 A KR 20140124415A KR 1020147022689 A KR1020147022689 A KR 1020147022689A KR 20147022689 A KR20147022689 A KR 20147022689A KR 20140124415 A KR20140124415 A KR 20140124415A
Authority
KR
South Korea
Prior art keywords
video stream
buffer
encoded video
layer
bit
Prior art date
Application number
KR1020147022689A
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 KR20140124415A publication Critical patent/KR20140124415A/ko

Links

Images

Classifications

    • 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/187Methods 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 scalable video layer
    • 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/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 명세서에서는 다층 레이트 제어를 위한 개념들 및 기술들이 설명된다. 본 명세서에서 개시되는 개념들 및 기술들에 따르면, 비디오 서버는 비디오 데이터를 획득하고, 비디오 데이터를 다층 비디오 스트림으로 인코딩한다. 비디오 스트림의 계층들은 출력 버퍼들일 수 있으며, 버퍼들은 비트 사용을 결정하기 위해 모니터링될 수 있다. 레이트 제어기는 인코딩된 비디오 스트림의 각각의 계층에 대한 비트 사용 피드백을 획득하고, 비트 사용 피드백에 기초하여, 인코딩된 비디오 스트림의 각각의 계층과 관련된 양자화 파라미터를 결정할 수 있다. 양자화 파라미터들을 결정할 때, 레이트 제어기는 인코딩된 비디오 스트림 전체의 비트 레이트들뿐만 아니라, 인코딩된 비디오 스트림의 각각의 계층과 관련된 비트 레이트들 및 비트 사용 피드백도 고려할 수 있다. 추가적인 인코딩은 비디오 서버에 의해 결정된 양자화 파라미터들에 기초할 수 있다.

Description

다층 레이트 제어 기법{MULTI-LAYER RATE CONTROL}
인코딩된 비디오 데이터의 비트 레이트의 변화는 다양한 비디오 전달 및 저장 메커니즘들에 대해 문제를 유발할 수 있다. 예를 들어, 비트 레이트가 가용 대역폭을 초과하는 경우에 비디오가 중단될 수 있다. 유사하게, 비디오의 스트리밍 또는 전송 중에 비트 레이트가 감소하는 경우, 더 낮은 비트 레이트를 수용하기 위해 비디오로부터 비디오의 일부 상세들이 손실 또는 제거될 수 있으며, 이는 시청자들에 의해 인지될 수 있다. 이러한 변화들에 의해 유발되는 일부 문제들을 해결하기 위해, 일부 시스템들은 송신 동안 비트 레이트 제어 메커니즘들을 이용하여, 인코딩된 비디오 데이터의 비트 레이트를 조절하고/하거나 비트 레이트를 관리한다. 하나의 그러한 접근 방법은 비트 스트림을 분석하고 전체 비트 스트림에 대한 유지 가능 비트 레이트를 결정하는 것을 포함한다. 이러한 접근 방법은 일부 확장 불가 비트 스트림들에 대해 실용적일 수 있다.
그러나, 확장 가능 비디오 비트스트림들과 관련하여, 비트 레이트 변화 및/또는 비트 레이트를 제어하는 이러한 접근 방법은 성능 및 사용자 경험에 영향을 줄 수도 있다. 예를 들어, 확장 가능 비디오에 대한 레이트 제어의 한 가지 접근 방법은 전술한 바와 같은 전체 비디오 스트림을 인코딩하는 데 사용되는 동일한 접근 방법을 이용하여 비디오의 각각의 계층을 인코딩하는 것이다. 이러한 접근 방법도 이상적인 사용자 경험을 제공하지 못할 수 있다. 특히, 확장 가능 비디오를 이따금 전송하는 방식으로 인해, 비디오 데이터의 일부 계층들은 다른 계층들보다 많거나 적은 데이터를 포함한다. 따라서, 계층화된 비트 스트림들 전체에 간단한 레이트 제어 메커니즘들을 적용하면서 변화를 줄이는 것은 인코딩된 비디오 콘텐츠의 일부 계층들에 불균일하게 영향을 줄 수 있다. 예를 들어, 베이스 계층이 계층화된 비디오 데이터 내의 정보의 대부분을 포함하는 경우, 비디오의 베이스 계층은 계층화된 비디오 스트림 전체에 대해 비트 레이트 제어를 적용하는 것에 의해 가장 크게 영향을 받을 수 있다. 더구나, 각각의 계층이 단순히 특정한 결정된 대역폭 요구에 따라 인코딩되는 경우, 이러한 접근 방법은 다양한 계층들의 품질을 최대화하지 못할 수 있다. 그러한 감소는 비트 레이트 제어 메커니즘을 적용함으로써 제거 또는 감소되는 변화들보다 더 많이 사용자 경험에 부정적으로 영향을 미칠 수 있다.
더구나, 다양한 다운링크 및/또는 업링크 대역폭 능력들을 갖는 다양한 클래스의 장치들에 대해 비디오 회의 및/또는 다른 응용들 중에 확장 가능 비디오가 때때로 사용된다. 따라서, 전통적인 레이트 제어 메커니즘들의 사용은 수신기의 대역폭 제약을 수용하기 위해 다양한 비트 스트림들의 품질을 감소시킬 수 있으며, 따라서 모든 사용자들에 대해 품질을 감소시킬 수 있다. 예를 들어, 비디오 서버가 비디오를 2개의 수신기, 예를 들어 300Kbps 대역폭을 갖는 하나의 수신기 및 500Kbps를 갖는 다른 수신기에 제공하는 경우, 비디오 서버는 비디오를 300Kbps로 인코딩된 베이스 계층 및 200Kbps로 인코딩된 향상 계층을 갖는 확장 가능 비디오 스트림으로서 인코딩할 수 있다. 비디오 서버와 관련된 레이트 제어기는 종종 불완전하므로, 때때로 베이스 계층은 목표치인 300Kbps보다 낮은 레이트로 인코딩될 수 있으며, 이는 전체 스트림의 품질을 감소시켜, 제2 수신기가 이용할 수 있는 대역폭을 최대화하지 못한다. 이러한 예에서, 베이스 계층이 280Kbps로 떨어지는 경우, 제2 장치에 의해 수신될 수 있는 최대 스트림은 480Kbps일 수 있으며, 이는 가용 대역폭을 이용하지 못하고, 덜 이상적인 사용자 경험을 제공한다. 따라서, 전통적인 레이트 제어 메커니즘들을 확장 가능 비디오에 적용하고/하거나 레이트 제어 메커니즘들을 다층 비디오 스트림의 계층들에 독립적으로 적용하는 것은 다양한 비트 스트림들에 악영향을 줄 수 있고, 비디오 스트림의 품질을 감소시킬 수 있다.
본 명세서에서 이루어지는 개시는 이들 및 다른 사항들과 관련하여 제공된다.
본 명세서에서는 다층 레이트 제어에 대한 개념들 및 기술들이 설명된다. 본 명세서에서 개시되는 개념들 및 기술들에 따르면, 비디오 서버는 인코딩된 비디오 데이터의 다수의 계층에 레이트 제어 메커니즘들을 적용하는 동안에 비디오 데이터의 다수의 계층의 의존성들을 유지하고 고려한다. 다양한 실시예들에 따르면, 비디오 서버에서 실행되는 레이트 제어기에 의해 비트 사용 피드백 정보가 획득된다. 비트 사용 피드백 정보는 인코딩된 비디오 스트림의 인코딩된 비디오 콘텐츠의 다수의 계층 각각과 관련된 피드백 지시자들을 포함한다. 일부 실시예들에 따르면, 비트 사용 피드백 정보는 원시 비디오 데이터(raw video data)를 인코딩하여 인코딩된 비디오를 출력하는 인코더로부터, 인코딩된 비디오 스트림을 모니터링하는 것으로부터 그리고/또는 인코딩된 비디오의 전송 또는 스트리밍 전에 또는 그 동안에 인코더가 인코딩된 비디오 콘텐츠의 다수의 계층을 출력하는 실제 또는 가상 버퍼들로부터 획득된다. 일부 실시예들에서, 버퍼들의 기능은 다누설 버킷 가상 버퍼들(leaky bucket virtual buffers)에 의해 제공된다.
레이트 제어기는 피드백 지시자들을 획득하고, 피드백 지시자들 각각을 비디오 콘텐츠의 각각의 계층과 관련시킨다. 레이트 제어기는 특정 계층 위의 임의의 계층을 고려할 때 그 특정 계층과 관련된 피드백도 고려할 수 있다. 예를 들어, 레이트 제어기가 베이스 계층과 관련된 비트 사용 피드백을 획득하는 경우, 향상 계층들의 비트 사용을 고려할 때 이 비트 사용 피드백도 고려될 수 있다. 따라서, 인코딩된 비디오의 다양한 계층들 간의 의존성들이 본 명세서에서 설명되는 다층 레이트 제어 메커니즘들의 적용 동안 고려될 수 있다.
일부 실시예들에 따르면, 레이트 제어기는 계층들의 비트 레이트들이 어떻게 제어될지를 지시하는 양자화 파라미터들을 생성하도록 구성될 수도 있다. 구체적으로, 레이트 제어기는 다수의 양자화 파라미터를 결정할 수 있으며, 각각의 양자화 파라미터는 비디오 스트림의 각각의 계층에 대해 생성되고, 비디오 스트림의 상위 계층들을 고려할 때 고려될 수 있다. 따라서, 양자화 파라미터들은 비디오 스트림의 다수의 계층 사이의 의존성들을 고려하고 설명하는 동안에 결정될 수도 있다. 레이트 제어기는 양자화 파라미터들을 인코더로 출력하도록 구성될 수 있으며, 인코더는 양자화 파라미터들에 기초하여 다양한 계층들의 비트 레이트들을 조정할 수 있다. 따라서, 비디오 서버는 계층과 관련된 비트 레이트를 독립적으로 제어하거나 전체 비디오 스트림과 관련된 비트 레이트를 제어하는 대신에 또는 그에 더하여 비디오 스트림의 계층들의 의존성들을 고려하면서 비디오 스트림의 각각의 계층의 비트 레이트들을 제어함으로써 다층 레이트 제어를 제공할 수 있다.
일 양태에 따르면, 비디오 서버는 로컬 또는 원격 데이터 저장 장치로부터 비디오 데이터를 획득한다. 비디오 서버는 비디오 데이터를 다층 비디오 스트림으로 인코딩하도록 구성된 인코더를 실행한다. 인코더는 비디오 스트림을 버퍼들로 출력하며, 버퍼들은 인코딩된 비디오 스트림을 수신하는 클라이언트 장치로 전송되지 않은 비트들의 양 또는 수에 대응하는 비트 사용 피드백을 추적 또는 출력한다. 따라서, 비트 사용 피드백은 가용 네트워크 자원을 초과하는 비트들의 양 또는 수에 대응할 수 있다. 비디오 서버에서 실행되는 레이트 제어기는 버퍼들을 모니터링하고/하거나, 인코딩된 비디오 스트림의 각각의 계층에 대한 비트 사용 피드백을 획득할 수 있다.
다른 양태에 따르면, 레이트 제어기는 비트 사용 피드백에 기초하여, 인코딩된 비디오 스트림의 각각의 계층과 관련된 양자화 파라미터를 결정할 수 있다. 양자화 파라미터들의 결정 시에, 레이트 제어기는 인코딩된 비디오 스트림 전체의 비트 레이트들뿐만 아니라, 인코딩된 비디오 스트림의 각각의 계층과 관련된 비트 레이트들 및 비트 사용 피드백도 고려할 수 있다. 더구나, 레이트 제어기는 인코딩된 비디오 스트림의 특정 계층 위의 각각의 계층을 분석할 때 그 특정 계층과 관련된 비트 사용 피드백을 고려하며, 따라서 비디오의 하위 계층들에 대한 향상 계층들의 의존성을 고려하도록 구성될 수 있다. 따라서, 본 명세서에서 개시되는 개념들 및 기술들의 실시예들은 대역폭이 상위 향상 계층들을 위해 사용되기 전에 베이스 계층 및 최하위 향상 계층들에 대한 비트 레이트들을 최대화하는 데 사용될 수 있다. 게다가, 본 명세서에서 개시되는 개념들 및 기술들의 일부 실시예들은 (불완전한 레이트 제어로 인해) 특정 계층과 관련된 잔여 비트 예산을 고려되는 각각의 계층에 대한 다음 상위 계층으로 이동시킴으로써 특정 계층의 비트 레이트들을 최대화하는 데 사용될 수 있다.
전술한 발명 대상은 컴퓨터 제어 장치, 컴퓨터 프로세스, 컴퓨팅 시스템, 또는 컴퓨터 판독 가능 저장 매체와 같은 제조물로서 구현될 수 있다는 것을 알아야 한다. 이들 및 다양한 다른 특징들은 아래의 상세한 설명을 읽고 관련 도면들을 검토하는 것으로부터 명백해질 것이다.
이 요약은 상세한 설명에서 더 후술되는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 이 요약은 청구 발명 대상의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않으며, 이 요약이 청구 발명 대상의 범위를 한정하는 데 사용되는 것도 의도하지 않는다. 더구나, 청구 발명 대상은 본 명세서의 임의 부분에서 설명되는 임의의 또는 모든 단점을 해결하는 구현들로 한정되지 않는다.
도 1은 본 명세서에서 개시되는 다양한 실시예들에 대한 예시적인 동작 환경을 나타내는 시스템 도면이다.
도 2는 일 실시예에 따른 다층 레이트 제어를 제공하기 위한 방법의 양태들을 나타내는 흐름도이다.
도 3은 일 실시예에 따른 양자화 파라미터들을 결정하기 위한 방법의 양태들을 나타내는 흐름도이다.
도 4는 본 명세서에서 설명되는 실시예들의 양태들을 구현할 수 있는 컴퓨팅 시스템에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 나타내는 컴퓨터 아키텍처이다.
아래의 상세한 설명은 다층 레이트 제어를 위한 개념들 및 기술들과 관련된다. 본 명세서에서 설명되는 개념들 및 기술들에 따르면, 비디오 서버는 데이터 저장 장치로부터 비디오 데이터를 획득한다. 비디오 서버는 인코더를 호스팅(host) 또는 실행할 수 있다. 인코더는 비디오 데이터를 다층 비디오 스트림으로 인코딩하도록 구성될 수 있다. 인코더는 비디오 스트림을 다수의 버퍼로 출력할 수 있다. 구체적으로, 비디오 스트림의 각각의 계층은 버퍼 내로 전송되고, 비트 사용을 결정하기 위해 스트리밍 또는 송신 동안 모니터링될 수 있다. 버퍼들 또는 다른 메커니즘들은 인코딩된 비디오 스트림과 함께 전송되지 않은 비트들의 양 또는 수에 대응하는 비트 사용 피드백을 추적 또는 출력할 수 있다. 일부 실시예들에서, 비트 사용 피드백은 인코딩된 비디오 스트림의 전송 레이트들이 가용 네트워크 자원을 초과하는 정도에 대응한다.
레이트 제어기는 버퍼들을 모니터링하고/하거나, 인코딩된 비디오 스트림의 각각의 계층에 대한 비트 사용 피드백을 획득하고, 비트 사용 피드백에 기초하여, 인코딩된 비디오 스트림의 각각의 계층과 관련된 양자화 파라미터를 결정할 수 있다. 양자화 파라미터들의 결정 시에, 레이트 제어기는 인코딩된 비디오 스트림 전체의 비트 레이트들뿐만 아니라, 인코딩된 비디오 스트림의 각각의 계층과 관련된 비트 레이트들 및 비트 사용 피드백도 고려할 수 있다. 더구나, 레이트 제어기는 인코딩된 비디오 스트림의 특정 계층 위의 각각의 계층을 분석할 때 그 특정 계층과 관련된 비트 사용 피드백을 고려하며, 따라서 비디오의 하위 계층들에 대한 향상 계층들의 의존성을 고려하도록 구성될 수 있다. 따라서, 본 명세서에서 개시되는 개념들 및 기술들의 실시예들은 대역폭이 상위 향상 계층들을 위해 사용되기 전에 베이스 계층 및 최하위 향상 계층들에 대한 비트 레이트들을 최대화하는 데 사용될 수 있다. 게다가, 본 명세서에서 개시되는 개념들 및 기술들의 일부 실시예들은 (불완전한 레이트 제어로 인해) 특정 계층과 관련된 잔여 비트 예산을 고려되는 각각의 계층에 대한 다음 상위 계층으로 이동시킴으로써 특정 계층의 비트 레이트들을 최대화하는 데 사용될 수 있다.
본 명세서에서 설명되는 발명은 컴퓨터 시스템 상에서의 운영 체제 및 애플리케이션 프로그램들의 실행과 연계하여 실행되는 프로그램 모듈들과 일반적으로 관련하여 설명되지만, 이 분야의 기술자들은 다른 구현들이 다른 타입의 프로그램 모듈들과 관련하여 수행될 수 있다는 것을 인식할 것이다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 및 다른 타입의 구조를 포함한다. 더욱이, 이 분야의 기술자들은 본 명세서에서 설명되는 발명이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍 가능 소비자 전자 장치, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성들을 이용하여 실시될 수 있다는 것을 알 것이다.
아래의 상세한 설명에서는, 그의 일부를 형성하고 특정 실시예들 또는 예들을 예시적으로 도시하는 첨부 도면들을 참조한다. 이제, 여러 도면 전반에서 동일한 번호들이 동일한 요소들을 나타내는 도면들을 참조하여, 컴퓨팅 시스템, 컴퓨터 판독 가능 저장 매체 및 다층 레이트 제어를 위한 컴퓨터 구현 방법이 설명된다.
이제, 도 1을 참조하여, 본 명세서에서 제공되는 다양한 실시예들에 대한 하나의 동작 환경(100)의 양태들이 설명된다. 도 1에 도시된 동작 환경(100)은 비디오 서버(102)를 포함한다. 일부 실시예들에서, 비디오 서버(102)는 통신 네트워크("네트워크")(104)의 일부로서 동작하거나 그와 통신하지만, 이것은 반드시 그러한 것은 아니다. 다양한 실시예들에 따르면, 비디오 서버(102)의 기능은 서버 컴퓨터; 개인용 컴퓨터("PC"), 예를 들어 데스크탑, 태블릿 또는 랩탑 컴퓨터 시스템; 핸드헬드 컴퓨터; 내장형 컴퓨터 시스템; 또는 다른 컴퓨팅 장치에 의해 제공된다. 따라서, 비디오 서버(102)의 기능은 본 명세서에서 서버 컴퓨터에 의해 제공되는 것으로 설명되지만, 이러한 실시예들은 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다. 비디오 서버(102)의 하나의 예시적인 컴퓨팅 아키텍처가 도 4에 도시되며, 그를 참조하여 아래에 더 상세히 설명된다.
비디오 서버(102)는 운영 체제(106) 및 하나 이상의 소프트웨어 모듈, 예를 들어 레이트 제어기(108), 인코더(110) 및/또는 다른 소프트웨어 모듈들을 실행하도록 구성될 수 있다. 도 1에서는 레이트 제어기(108) 및 인코더(110)가 비디오 서버(102)에 위치하는 것으로 도시되지만, 이것은 반드시 그렇지는 않다는 것을 이해해야 한다. 구체적으로, 레이트 제어기(108) 및/또는 인코더(110)는 원할 경우에 비디오 서버(102)와 통신하는 개별 장치들 또는 모듈들로서 구현될 수 있다. 따라서, 도시된 실시예는 예시적인 것으로 이해되어야 하며, 결코 한정적인 것으로 해석되지 않아야 한다.
운영 체제(106)는 비디오 서버(102)의 동작을 제어하기 위한 컴퓨터 프로그램이다. 소프트웨어 모듈들은 다층 레이트 제어를 제공하기 위해서 본 명세서에서 설명되는 다양한 기능들을 제공하기 위해 운영 체제의 최상부에서 실행되도록 구성되는 실행 가능 프로그램들이다. 추가적인 그리고/또는 대안적인 소프트웨어, 애플리케이션 프로그램들, 모듈들 및/또는 다른 컴포넌트들이 비디오 서버(102)에 의해 실행될 수 있으므로, 도시된 실시예는 예시적인 것으로 이해되어야 하며, 결코 한정적인 것으로 해석되지 않아야 한다.
인코더(110)는 비디오 프레임, 원시 비디오 데이터 또는 다른 비디오 정보와 같은 비디오 데이터(112)를 수신하도록 구성된다. 일부 실시예들에서, 비디오 데이터(112)는 네트워크(104) 및/또는 비디오 서버(102)와 통신하면서 동작하는 데이터 저장 장치(114)로부터 수신 또는 검색된다. 따라서, 데이터 저장 장치(114)의 기능은 데이터베이스, 네트워크 데이터 저장 장치, 하드 드라이브, 메모리 장치 또는 다른 실제 또는 가상 데이터 저장 장치를 포함하지만 이에 한정되지 않는 하나 이상의 데이터 저장 장치에 의해 제공될 수 있다. 일부 다른 실시예들에서, 데이터 저장 장치(114)는 비디오 서버(102)와 관련된 메모리 장치 또는 기타 데이터 저장 장치를 포함한다. 따라서, 도 1은 데이터 저장 장치(114)를 비디오 서버(102)로부터 떨어져 있는 것으로 도시하지만, 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
다양한 실시예들에 따르면, 인코더(110)는 비디오 데이터(112)를 인코딩하여 비디오 정보의 둘 이상의 계층을 획득하도록 구성된다. 비디오 정보의 계층들은 인코더(110)에 의해 출력되고, 비디오 서버(102)에 의해 인코딩된 비디오 데이터 스트림("인코딩된 비디오 스트림")(116)으로서 전송 또는 스트리밍될 수 있다. 도시된 바와 같이, 인코딩된 비디오 스트림(116)은 다수의 비디오 계층(L1 내지 LN)(이하, 공동으로 그리고/또는 일반적으로 "계층들(L)"로서 지칭됨)을 포함할 수 있다. 일반적으로 이해되듯이, 제1 계층(L1)은 인코딩된 비디오 스트림(116)의 베이스 계층에 대응하며, 후속 계층들(L) 각각은 인코딩된 비디오 스트림(116)의 향상 계층들에 대응할 수 있다.
인코딩된 비디오 스트림(116)은 클라이언트 장치(118)에 의해 수신 또는 액세스될 수 있고, 인코딩된 비디오 스트림(116)의 적어도 베이스 계층(L1)이 시청될 수 있다. 인코딩된 비디오 스트림(116)의 다수의 계층(L) 각각을 수신할 수 있는 네트워크 접속을 설정하고/하거나 유지하기 위한 클라이언트 장치(118)의 능력에 따라, 인코딩된 비디오 스트림(116)의 베이스 계층(L1)이 하나 이상의 향상 계층(L2(도 1에 도시되지 않음) 내지 LN)에 의해 제공되는 상세와 더불어 클라이언트 장치(118)에서 시청될 수 있다. 따라서, 클라이언트 장치(118)는 인코딩된 비디오 스트림(116)의 다수의 계층(L)을 수신하기 위한 네트워크 대역폭을 설정하고/하거나 유지하기 위한 클라이언트 장치(118)의 능력에 따라, 인코딩된 비디오 스트림(116)을 다양한 상세 계층들과 더불어 수신 및 시청할 수 있다. 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
본 명세서에서 개시되는 개념들 및 기술들의 다양한 실시예들에 따르면, 레이트 제어기(108)는 (도 1에 도시된 바와 같은) 인코더(110)로부터 또는 인코더(110)에 의해 출력되는 인코딩된 비디오 스트림(116)을 모니터링함으로써 비트 사용 피드백 데이터("비트 사용 피드백")(120)를 획득하도록 구성된다. 다른 실시예들에서, 레이트 제어기(108)는 비디오 서버(102)와 관련되거나 그 안에 통합된 다른 보고 메커니즘들, 예를 들어 후술하는 버퍼들(122)로부터 비트 사용 피드백(120)을 지시하는 데이터를 모니터링 또는 수신하도록 구성된다. 레이트 제어기(108)는 또한 클라이언트 장치(118)와 같은 각각의 가입된 클라이언트로부터의 다운링크 대역폭(BWD)은 물론 업링크 대역폭(BWU)도 액세스, 수신 또는 결정하도록 구성될 수 있고, 이들 양 대역폭은 레이트 제어기(108)에 대한 입력들일 수 있다. 업링크 대역폭(BWU) 및 다운링크 대역폭(BWD)은 인코딩된 비디오 스트림(116)의 각각의 "서브스트림"의 목표 비트 레이트를 결정하는 데 사용될 수 있으며, 따라서 레이트 제어기(108)에 대한 입력으로서 간주될 수 있다. 본 명세서에서 사용될 때, 용어 "서브스트림"은 인코딩된 비디오 스트림(116)의 베이스 계층(L1) 및 여러 연속 향상 계층(L)을 포함하고/하거나 가질 수 있다. 일부 실시예들에 따르면, 비디오 서버(102)는 다운링크 대역폭(BWD)에 적어도 부분적으로 기초하여, 인코딩된 비디오 스트림(116)과 관련된 목표 비트 레이트를 결정한다. 일부 실시예들에 따르면, 비디오 서버(102)는 인코딩된 비디오 스트림(116)의 임의의 서브스트림의 최대 목표 비트 레이트가 비디오 서버(102)와 관련된 업링크 대역폭(BWU)을 초과할 수 없다는 제한 및 인코딩된 비디오 스트림(116)의 임의의 서브프레임의 목표 비트레이트가 서브프레임을 소비하는 클라이언트, 예컨대 클라이언트 장치(118)와 관련된 다운링크 대역폭(BWD)을 초과할 수 없다는 제한을 부과한다. 이러한 실시예들은 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
비트 사용 피드백(120)은 인코딩된 비디오 스트림(116)의 수신처로 전송되지 않은 비트들의 양 또는 수를 지시할 수 있다. 따라서, 비트 사용 피드백(120)을 분석하여, 인코딩된 비디오 스트림(116)으로서 인코딩된 비디오 데이터(112)가 임의의 특정 시간에서의 전송 또는 스트리밍 동안 얼마나 많이 방해, 폐기 또는 손실되었는지를 확인할 수 있다. 따라서, 비디오 서버(102)는 비트 사용 피드백(120)을, 인코딩된 비디오 스트림(116)을 스트리밍하는 데 사용되는 송신 매체의 대역폭 또는 다른 양태들의 지시자로서 이해할 수 있다.
도 1에 도시된 바와 같이, 비트 사용 피드백(120)은 다수의 피드백 지시자(FB1 내지 FBN)(이하, 일반적으로 "피드백 지시자들(FB)"로서 지칭되고/되거나, 공동으로 "비트 사용 피드백(120)"으로 지칭됨)를 지시하는 데이터를 포함할 수 있다. 다수의 피드백 지시자(FB)는 전술한 다수의 계층(L)에 각각 대응할 수 있다. 따라서, 예를 들어, 피드백 파라미터(FB1)는 인코딩된 비디오 스트림(116)의 베이스 계층(L1)과 관련된 비트 사용 피드백 지시자에 대응할 수 있다. 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
레이트 제어기(108)는 비트 사용 피드백("비트 사용 피드백")(120)을 다수의 다누설 버킷 버퍼(B1 내지 BN)(이하, 일반적으로 "버퍼(B)"로서 지칭되고/되거나, 공동으로 "버퍼들(122)"로 지칭됨) 내에 로딩하도록 구성될 수 있다. 도시된 실시예에서, 레이트 제어기(108)는 비트 사용 피드백(120)을 다수의 계층(L) 및/또는 다수의 피드백 파라미터(FB)에 각각 대응할 수 있는 버퍼들(B1 내지 BN) 내에 로딩한다. 특히 도 2-3을 참조하여 아래에 더 상세히 설명되는 바와 같이, 레이트 제어기(108)는 비트 사용 피드백(120)을 획득하고, 다수의 계층(L)과 관련된 피드백 파라미터들(FB)을 버퍼들(122) 내에 로딩하고, 계층들(L) 각각에 대해 대응하는 양자화 파라미터들(QP1 내지 QPN)(이하, 공동으로 "양자화 파라미터들(124)"로 지칭됨)을 결정하도록 구성될 수 있다. 레이트 제어기(108)는 양자화 파라미터들(124)을 인코더(110)로 출력하도록 구성될 수 있고, 인코더(110)는 비디오 데이터(112)의 인코딩 동안 양자화 파라미터들(124)을 사용할 수 있다.
본 명세서에서 개시되는 개념들 및 기술들의 다양한 실시예들에 따르면, 비디오 서버(102)는 레이트 제어기(108) 및 인코더(110)를 실행하여, 계층들(L) 간의 의존성들을 고려하면서, 인코딩된 비디오 스트림(116)의 각각의 계층(L)의 비트 레이트들을 제어할 수 있다. 따라서, 예를 들어, 인코딩된 비디오 스트림(116)의 베이스 계층(L1)과 관련된 비트 사용 레이트 정보가 비트 사용 피드백(120)에서 식별되고, 대응하는 버퍼(B1)에 추가될 수 있다. 이러한 비트 사용 레이트 정보는 인코딩된 비디오 스트림(116)의 임의의 다른 계층들(L)과 관련된 임의의 버퍼들(B)에도 추가될 수 있으며, 따라서 인코딩된 비디오 스트림(116)에 적용되는 임의의 비트 레이트 제어 메커니즘들이 향상 계층들(L2 내지 LN)의 개별 비트 사용 레이트를 고려하기 전에 베이스 계층(L1)과 관련된 적어도 비트 사용 레이트 정보를 고려하는 것이 보증될 수 있다.
하나의 고려되는 예에서, 비디오는 3개의 계층(L)을 포함한다. 따라서, 베이스 계층(L1)과 관련된 피드백 지시자(FB1)와 같은 비트 사용 레이트 정보는 버퍼들(B1, B2 및 B3)에 추가될 수 있다. 따라서, 제1 향상 계층(L2)과 관련된 피드백 지시자(FB2)의 고려 동안, 비디오 서버(102)는 베이스 계층(L1)과 관련된 비트 레이트 피드백 지시자(FB1) 및 제1 향상 계층(L2)을 고려할 수 있다. 따라서, 비디오의 계층들(L)이 고려될 때, 향상 계층들(L)의 비트 레이트들은 베이스 계층(L1) 및 하위 향상 계층들(L)의 비트 레이트들에 의존할 수 있다. 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
실시예들에 따르면, 비디오 서버(102)는 비디오 데이터(112)를 수신하고, 인코더(110)는 비디오 데이터(112)를 인코딩한다. 인코딩된 비디오 데이터(112)는 인코더(110)에 의해 인코딩된 비디오 스트림(116)으로서 출력될 수 있다. 일부 실시예들에 따르면, 인코딩된 비디오 스트림(116)은 버퍼들(122)을 통해 또는 그 안으로 전송한다. 다양한 실시예들에 따르면, 인코딩된 비디오 스트림(116)의 각각의 계층(L)은 버퍼들(122)의 일부로서 포함된 각각의 버퍼(B) 내로 전송될 수 있다.
일부 실시예들에서, 버퍼들(122)은 자가 보고하거나, 전술한 바와 같이 레이트 제어기(108) 또는 다른 모듈들, 장치들 또는 소프트웨어에 의해 모니터링되어 비트 사용 피드백(120)이 결정 또는 획득된다. 전술한 바와 같이, 비트 사용 피드백(120)은 버퍼들(122) 내에 포함된 다수의 버퍼(B)에 대응할 수 있는 다수의 피드백 지시자(FB)를 포함할 수 있다. 레이트 제어기(108)는 비트 사용 피드백(120)을 분석하고, 비트 사용 피드백(120)에 기초하여 양자화 파라미터들(124)을 생성하도록 구성될 수 있다. 다양한 실시예들에 따르면, 양자화 파라미터들(124)은 인코딩된 비디오 스트림(116)의 다수의 계층(L) 각각에 대해 결정될 수 있고 버퍼들(B)과 관련하여 전술한 바와 같이 계층들(L) 사이의 의존성들을 고려할 수 있는 각각의 양자화 파라미터(QP1 내지 QPN)를 포함한다.
레이트 제어기(108)는 양자화 파라미터들(124)을 인코더(110)로 출력하고, 인코더(110)는 양자화 파라미터들(124)에 따라 비디오 데이터(112)를 인코딩할 수 있다. 따라서, 비디오 서버(102)는 인코딩된 비디오 스트림(116)의 다수의 계층(L)과 관련된 다수의 버퍼(B)를 모니터링하고, 계층들(L) 각각에 대한 양자화 파라미터들(124)을 결정하고, 결정된 양자화 파라미터들(124)에 기초하여 비디오 데이터(112)의 인코딩을 제어할 수 있다. 따라서, 본 명세서에서 개시되는 개념들 및 기술들의 실시예들은 계층과 관련된 비트 레이트를 독립적으로 제어하거나 전체적인 출력된 인코딩된 비디오 스트림(116)과 관련된 비트 레이트를 제어하는 대신에 또는 그에 더하여 레이트 제어 메커니즘들을 적용할 때 인코딩된 비디오 스트림(116)의 계층들(L) 사이의 의존성들을 고려하면서 인코딩된 비디오 스트림(116)의 각각의 계층(L)에 대한 비트 레이트 사용 정보를 취할 수 있다.
따라서, 본 명세서에서 개시되는 개념들 및 기술들의 실시예들은 인코딩된 비디오 스트림(116)의 각각의 계층(L)의 비트 레이트들을 제어하는 것을 포함할 수 있다. 일부 실시예들에서, 이것은 인코딩된 비디오 스트림(116)의 하위 레벨들(L)이 향상 계층들(L)의 인코딩 전에 최대 레이트로 인코딩되는 것을 보증함으로써 비디오 서버(102)의 성능을 개선할 수 있고/있거나 사용자 경험을 개선할 수 있다. 일부 실시예들에서, 비디오 서버(102)는 업링크 대역폭(BWU) 및/또는 다운링크 대역폭(BWD)에 기초하여 최대 비트 레이트들을 결정하도록 구성된다. 더구나, 다수의 계층(L) 및 다수의 계층(L) 간의 의존성들을 고려할 때, 비디오 서버(102)는 특정 계층(LN)과 관련된 잔여 비트 예산, 예를 들어 불완전한 레이트 제어로부터 발생하는 잔여 비트 예산을 고려되는 각각의 계층(L)에 대한 다음 상위 계층(LN +1)으로 이동시킴으로써 특정 계층(LN +1)의 비트 레이트들을 최대화하도록 구성될 수 있다. 다층 레이트 제어를 위한 본 명세서에서 개시되는 개념들 및 기술들의 이들 및 다른 양태들은 도 2-4를 참조하여 아래에 더 상세히 설명된다.
도 1은 하나의 비디오 서버(102), 하나의 네트워크(104) 및 하나의 클라이언트 장치(118)를 도시한다. 그러나, 동작 환경(100)의 일부 구현들은 다수의 비디오 서버(102), 다수의 네트워크(104) 및 다수의 클라이언트 장치(118)를 포함하거나 어떠한 클라이언트 장치도 포함하지 않는다는 것을 이해해야 한다. 따라서, 도시된 실시예들은 예시적인 것으로 이해되어야 하며, 결코 한정적인 것으로 해석되지 않아야 한다.
이제, 도 2를 참조하여, 일 실시예에 따른, 다층 레이트 제어를 제공하기 위한 방법(200)의 양태들이 상세히 설명된다. 여기서 개시되는 방법들의 동작들은 임의의 특정 순서로 제공될 필요는 없으며, 대안적인 순서(들)에서의 일부 또는 모든 동작들의 수행이 가능하고 고려된다는 것을 이해해야 한다. 동작들은 설명 및 예시의 편의를 위해 입증된 순서로 제공되었다. 첨부된 청구항들의 범위로부터 벗어나지 않고서 동작들이 추가되고, 생략되고/되거나, 동시에 수행될 수 있다.
도시된 방법들은 임의의 시간에 종료될 수 있으며, 그 전체가 수행될 필요가 없다는 것도 이해해야 한다. 여기서 개시되는 방법들의 일부 또는 모든 동작들 및/또는 실질적으로 균등한 동작들은 본 명세서에서 정의되는 바와 같은 컴퓨터 저장 매체 내에 포함된 컴퓨터 판독 가능 명령어들의 실행에 의해 수행될 수 있다. 명세서 및 청구항들에서 사용되는 바와 같은 용어 "컴퓨터 판독 가능 명령어들" 및 이들의 변형들은 여기서 루틴, 애플리케이션, 애플리케이션 모듈, 프로그램 모듈, 프로그램, 컴포넌트, 데이터 구조, 알고리즘 등을 포함하기 위해 확장하여 사용된다. 컴퓨터 판독 가능 명령어들은 단일 프로세서 또는 멀티프로세서 시스템, 미니 컴퓨터, 메인프레임 컴퓨터, 개인용 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서 기반, 프로그래밍 가능 소비자 전자 장치, 이들의 조합 등을 포함하는 다양한 시스템 구성들에서 구현될 수 있다.
따라서, 여기서 설명되는 논리적인 동작들은 (1) 컴퓨팅 시스템에서 실행되는 컴퓨터 구현 액트들 또는 프로그램 모듈들의 시퀀스로서 그리고/또는 (2) 컴퓨팅 시스템 내의 상호접속된 기계 논리 회로들 또는 회로 모듈들로서 구현된다는 것을 알아야 한다. 구현은 컴퓨팅 시스템의 성능 및 기타 요건에 의존하는 선택의 문제이다. 따라서, 여기서 설명되는 논리적 동작들은 상태들, 동작들, 구조적 장치들, 액트들 또는 모듈들로서 다양하게 지칭된다. 이러한 동작들, 구조적 장치들, 액트들 및 모듈들은 소프트웨어에서, 펌웨어에서, 특수 목적 디지털 논리에서 그리고 이들의 임의 조합에서 구현될 수 있다.
본 발명의 개념들을 예시 및 설명하는 목적을 위해, 여기서 개시되는 방법들은 비디오 서버(102)에 의해 레이트 제어기(108) 및/또는 인코더(110)의 실행을 통해 수행되는 것으로 설명된다. 이러한 실시예들은 예시적이며, 결코 한정적인 것으로 간주되지 않아야 한다는 것을 이해해야 한다. 구체적으로, 추가적인 또는 대안적인 장치들이 레이트 제어기(108) 및/또는 인코더(110)에 더하여 또는 그 대신에 다양한 소프트웨어 모듈들의 실행을 통해 여기서 개시되는 방법들과 관련하여 여기서 설명되는 기능을 제공할 수 있다.
방법(200)은 동작 202에서 시작되며, 여기서 비디오 서버(102)는 도 1과 관련하여 전술한 비디오 데이터(112)와 같은 비디오 데이터를 수신한다. 전술한 바와 같이, 비디오 데이터(112)는 비디오 서버(102)에 저장될 수 있거나 데이터 저장 장치(114)와 같은 원격 데이터 저장 장치에 저장될 수 있다. 따라서, 동작 202는 로컬 또는 원격 데이터 저장 장치로부터 비디오 데이터(112)를 수신하는 동작을 포함할 수 있다.
동작 202로부터, 방법(200)은 동작 204로 진행되고, 여기에서 비디오 서버(102)는 비디오 서버(102)에 의해 생성될 비디오 출력의 계층들에 대한 양자화 파라미터들(124)을 결정한다. 도 1에 도시된 바와 같이, 비디오 출력은 다양한 실시예들에서 인코딩된 비디오 스트림(116) 및 인코딩된 비디오 스트림(116)의 다수의 계층(L)에 대응할 수 있다. 따라서, 동작 204는 인코딩된 비디오 스트림(116)의 각각의 계층(L)에 대한 각각의 양자화 파라미터(QP)를 결정하는 동작을 포함할 수 있다. 양자화 파라미터들(124)을 결정하는 추가 상세들은 도 3을 참조하여 아래에 설명된다.
방법(200)은 인코딩된 비디오 스트림(116)의 스트리밍 동안 비디오 서버(102)에 의해 여러 번 반복될 수 있다는 것을 이해해야 한다. 따라서, 방법(200)의 제1 반복은 디폴트 양자화 파라미터들(124)을 이용하여 비디오 데이터(112)를 인코딩할 수 있는데, 이는 도 3과 관련하여 본 명세서에서 설명되는 동작들이 아직 비디오 서버(102)에 의해 수행되지 않았을 수 있기 때문이다. 방법(200)의 후속 반복들은 동작 204에서 결정되고 도 3과 관련하여 아래에 더 상세히 설명되는 양자화 파라미터들(124)에 의존할 수 있다. 따라서, 도 2에 도시된 방법(200)의 실시예는 비디오 서버(102)로부터의 비디오 콘텐츠의 스트리밍 동안 방법(200)의 특정 반복에 대응할 수 있거나 대응하지 않을 수 있다. 따라서, 도시된 실시예는 결코 한정적인 것으로 해석되지 않아야 한다.
동작 204로부터, 방법(200)은 동작 206으로 진행되고, 여기서 비디오 서버(102)는 비디오 데이터(112)를 인코딩한다. 다양한 실시예들에 따르면, 비디오 서버(102)는 동작 204에서 결정된 양자화 파라미터들(124)에 따라 비디오 데이터(112)를 인코딩한다. 도 1과 관련하여 상세히 설명된 바와 같이, 비디오 서버(102)는 양자화 파라미터들(124)을 이용하여 비디오 데이터(112)를 인코딩하여, 다층 레이트 제어를 제공할 수 있다. 더 구체적으로, 인코딩된 비디오 스트림(116)의 각각의 계층(L)과 관련된 비트 사용 피드백 정보를 이용하여, 계층(L) 및 임의의 상위 계층들(L)과 관련된 버퍼들(122)과 같은 다누설 버킷 버퍼들을 채울 수 있다. 예를 들어, 제1 향상 계층(L2)과 관련된 비트들은 관련 버퍼(B2) 및 임의의 다른 향상 계층들(L3 내지 LN)과 관련된 모든 버퍼들(B3 내지 BN)의 충만에 기여할 수 있다. 이 실시예는 예시적이고 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
따라서, 본 명세서에서 개시되는 개념들 및 기술들의 실시예들은 인코딩된 비디오 스트림(116)의 각각의 계층(L)과 관련된 비트 레이트를 제어할 수 있다. 본 명세서에서 설명되는 다층 레이트 제어를 제공하는 동안, 비디오 서버(102)의 실시예들은 전체 비트 레이트들뿐만 아니라, 계층들(L)의 비트 레이트들, 계층들(L) 사이의 의존성들도 고려할 수 있다. 따라서, 인코딩된 비디오 스트림(116)의 향상 계층(L)은 인코딩된 비디오 스트림(116)의 베이스 계층(L)이 고려될 때까지 분석되지 않을 수 있으며, 따라서 향상 계층(L)과 베이스 계층(L) 사이의 의존성이 강제된다. 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
동작 206으로부터, 방법(200)은 동작 208로 진행되고, 여기서 비디오 서버(102)는 인코딩된 비디오 스트림(116)을 출력한다. 인코딩된 비디오 스트림(116)은 동작 202에서 수신되고, 동작 204에서 결정된 양자화 파라미터들(124)에 따라 동작 206에서 인코딩된 비디오 데이터(112)에 대응할 수 있다. 비디오 서버(102)는 인코딩된 비디오 스트림(116)을 클라이언트 장치(118)로, 다른 비디오 서버들로 스트리밍하고/하거나, 인코딩된 비디오 스트림(116)을 방송하도록 구성될 수 있다. 따라서, 동작 208은 인코딩된 비디오 스트림(116)을 도 1 및 4에 도시된 것들을 포함하지만 이에 한정되지 않는 다양한 장치들 또는 네트워크 접속들로 출력하는 동작을 포함할 수 있다. 동작 208로부터, 방법(200)은 동작 210으로 진행된다. 방법(200)은 동작 210에서 종료된다.
이제, 도 3을 참조하여, 일 실시예에 따른, 양자화 파라미터들(124)을 결정하기 위한 방법(300)의 양태들이 상세히 설명된다. 구체적으로, 도 2와 관련하여 전술한 바와 같이, 도 3은 전술한 동작 204의 실행 동안 제공될 수 있는 방법(200)의 추가 상세들을 도시한다. 도 3을 참조하여 여기서 설명되는 기능은 다른 시간들에 제공될 수 있으므로, 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
방법은 동작 302에서 시작되고, 여기서 비디오 서버(102)는 인코딩된 비디오 스트림(116)의 베이스 계층(L1)을 선택한다. 일반적으로 이해하듯이, 인코딩된 비디오 스트림(116)은 다수의 계층(L)을 포함할 수 있고, 베이스 계층(L1)은 인코딩된 비디오 스트림(116)의 제1 계층에 대응할 수 있다. 다양한 실시예들에 따르면, 베이스 계층(L1)은 인코딩된 비디오 스트림(116)과 관련된 비디오 데이터(112)의 대부분 및/또는 인코딩된 비디오 스트림(116)의 다른 계층들(L)에 포함된 비디오 데이터(112)의 부분들보다 큰 비디오 데이터(112)의 불균일한 양을 포함할 수 있지만, 반드시 포함하지는 않는다. 일부 실시예들에 따르면, 비디오 서버(102)는 베이스 계층(L1)을 양자화 파라미터들(124)을 결정하기 위한 시작 포인트로서 선택하지만, 이것은 반드시 그렇지는 않다. 따라서, 도시된 실시예는 하나의 고려되는 실시예를 나타내는 것으로 이해되어야 하며, 결코 한정적인 것으로 해석되지 않아야 한다.
동작 302로부터, 방법(300)은 동작 304로 진행되며, 여기서 비디오 서버(102)는 선택된 계층(L)과 관련된 비트 사용 정보를 지시하는 비트 사용 피드백 데이터(120) 또는 기타 데이터를 획득한다. 동작 304의 제1 반복에서, 비트 사용 정보는 베이스 계층(L1)과 관련된 피드백 파라미터(FB1)를 포함할 수 있다. 동작 304의 후속 반복들에서, 후술하는 바와 같이, 비트 사용 정보는 선택된 계층(LN)과 관련된 피드백 파라미터(FBN)를 포함할 수 있다. 이러한 실시예들은 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
도 1을 참조하여 전술한 바와 같이, 비트 사용 정보는 비트 사용 피드백(120) 내에 포함될 수 있다. 전술한 바와 같이, 일부 실시예들에서, 비트 사용 피드백(120)은 인코더(110)로부터 레이트 제어기(108)에 의해 수신된다. 다른 실시예들에서, 레이트 제어기(108)는 인코딩된 비디오 스트림(116) 또는 버퍼들(122)을 모니터링하여 비트 사용 피드백(120)을 결정한다. 또 다른 실시예들에서, 레이트 제어기(108)는 인코딩된 비디오 스트림(116) 또는 버퍼들(122)을 모니터링하도록 구성되는 다른 장치들 또는 모듈들로부터 비트 사용을 지시하기 위한 비트 사용 피드백(120) 또는 기타 데이터를 수신한다. 따라서, 동작 304는 비트 사용 피드백(120)을 획득하는 동작, 비트 사용 피드백(120)을 수신하는 동작, 및/또는 다른 정보를 수신하는 동작은 물론, 비디오 서버(102)에 의해 분석되고 있는 특정 레벨(L)과 관련된 비트 사용 피드백(120) 내의 비트 사용 정보를 식별하는 동작도 포함할 수 있다.
동작 304로부터, 방법(300)은 동작 306으로 진행되며, 여기서 비디오 서버(102)는 분석되고 있는 특정 레벨(LN)과 관련된 비트 사용 피드백을 특정 레벨(LN) 및 모든 상위 레벨들(L)과 관련된 임의의 버퍼들(122)에 추가한다. 예를 들어 베이스 계층(L1)이 분석되고 있는 방법(300)의 제1 반복 동안, 베이스 계층(L1)과 관련된 피드백 파라미터(FB1)가 베이스 계층(L1)에 대한 버퍼(B1) 및 향상 계층들(L2 내지 LN)에 대한 버퍼들(B2 내지 BN)에 대응하는 모든 버퍼들(122)에 추가될 수 있다. 따라서, 베이스 계층(L1)과 관련된 비트 사용 정보가 고려되고, 인코딩된 비디오 스트림(116)의 각각의 계층(L)과 관련된 버퍼들(B)에 추가될 수 있다는 것을 알 수 있다.
방법(300)의 후속 반복들에서, 비디오 서버(102)는 분석되고 있는 계층(L)으로부터의 비트 사용 정보를 관련 버퍼(B) 및 임의의 상위 버퍼들(122)에 추가할 수 있다. 따라서, 제1 향상 계층(L2)에 대해, 계층(L2)과 관련된 피드백 정보는 계층(L2)과 관련된 버퍼(B2) 및 임의의 상위 향상 계층들(L3 내지 LN)과 관련된 버퍼들(B3 내지 BN)에 추가될 수 있다. 그러나, 일부 실시예들에서, 비디오 서버(102)는 베이스 계층(L1)과 관련된 버퍼(B1)로부터 계층(L2)과 관련된 피드백 정보를 뺄 수 있다. 따라서, 비디오 서버(102)의 일부 실시예들은 층들의 상위 계층들이 아니라 하위 계층들에 대한 의존성을 고려한다. 이 실시예는 예시적이며, 결코 한정적인 것으로 해석되지 않아야 한다는 것을 이해해야 한다.
동작 306으로부터, 방법은 동작 308로 진행되며, 여기서 비디오 서버(102)는 선택된 계층(L)과 관련된 양자화 파라미터(124)를 결정한다. 따라서, 예를 들어, 방법(300)의 제1 반복에서, 비디오 서버(102)는 동작 308에서 베이스 계층(L1)에 대한 양자화 파라미터(QP1)를 결정할 수 있다. 방법(300)의 후속 반복들에서, 비디오 서버(102)는 인코딩된 비디오 스트림(116)의 각각의 분석되는 계층(L)에 대한 양자화 파라미터들(124)을 결정할 수 있다. 양자화 파라미터들(124)은 인코더(110)가 인코딩된 비디오 스트림(116)의 각각의 계층(L)을 어떻게 인코딩할지를 지시할 수 있으며, 동작 306에서 채워진 다양한 버퍼들(B) 및 동작 306에서 채워진 버퍼들(B)의 비트레이트 사용 피드백에 기초할 수 있다. 따라서, 예를 들어, 동작 308은 분석되는 계층(L)은 물론, 임의의 상위 계층들(L)과 관련된 버퍼들(B)의 비트 사용 피드백을 검사하는 동작을 포함할 수 있다. 따라서, 비디오 서버(102)에 의해 결정되는 양자화 파라미터들(124)은 계층들(L)과 관련하여 전술한 의존성들에 기초할 수 있다.
동작 308로부터, 방법(300)은 동작 310으로 진행되며, 여기서 비디오 서버(102)는 인코딩된 비디오 스트림(116)이 분석된 추가 계층(L)을 포함하는지를 판단한다. 동작 310에서 비디오 서버(102)가 인코딩된 비디오 스트림(116)이 분석될 추가 계층(L)을 포함하는 것으로 결정하는 경우, 방법(300)은 동작 312로 진행되며, 여기서 비디오 서버(102)는 인코딩된 비디오 스트림(116)의 다음 향상 계층(L)을 선택한다. 다양한 실시예들에 따르면, 비디오 서버(102)는 제1 향상 계층(L2)으로부터 시작하여 최종 향상 계층(LN)이 고려될 때까지 계속하여 순차적으로 향상 계층들(LN)을 선택한다. 계층들(L)은 다른 순서로 고려될 수 있으므로, 이 실시예는 예시적이며, 결코 한정으로서 해석되지 않아야 한다는 것을 이해해야 한다.
동작 312로부터, 방법(300)은 동작 304로 복귀한다. 동작 304-310은 비디오 서버(102)가 동작 310의 임의의 반복에서 인코딩된 비디오 스트림(116)의 다른 계층(L)이 분석을 위해 남지 않은 것으로 결정할 때까지 비디오 서버(102)에 의해 반복될 수 있다. 다른 실시예에서, 비디오 서버(102)는 임의의 시간에 가용 대역폭이 고갈되는 경우에 방법(300)의 반복을 중단할 수 있다. 비디오 서버(102)가 동작 310의 임의의 반복에서 다른 계층(L)이 인코딩된 비디오 스트림(116) 내에 포함되지 않은 것으로 결정하는 경우, 방법(300)은 동작 314로 진행된다.
동작 314에서, 비디오 서버(102)는 동작 308에서 결정된 양자화 파라미터들(124)을 인코더(110)로 출력한다. 도 2를 참조하여 전술한 바와 같이, 인코더(110)는 양자화 파라미터들(124)에 따라 비디오 데이터(122)의 인코딩을 변경할 수 있다. 따라서, 방법들(200, 300)은 다층 레이트 제어를 제공하기 위해 비디오 서버(102)에 의해 실행될 수 있다. 동작 314로부터, 방법(300)은 동작 316으로 진행된다. 방법(300)은 동작 316에서 종료된다.
도 4는 다층 레이트 제어를 제공하기 위해 본 명세서에서 설명되는 소프트웨어 컴포넌트들을 실행할 수 있는 장치에 대한 예시적인 컴퓨터 아키텍처(400)를 나타낸다. 따라서, 도 4에 도시된 컴퓨터 아키텍처(400)는 서버 컴퓨터, 이동 전화, PDA, 스마트폰, 데스크탑 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 랩탑 컴퓨터 또는 다른 컴퓨팅 장치에 대한 아키텍처를 나타낸다. 컴퓨터 아키텍처(400)는 본 명세서에서 설명되는 소프트웨어 컴포넌트들의 임의의 양태들을 실행하는 데 사용될 수 있다.
도 4에 도시된 컴퓨터 아키텍처(400)는 중앙 처리 유닛(402)("CPU"), 랜덤 액세스 메모리(406)("RAM") 및 판독 전용 메모리("ROM")(408)를 포함하는 시스템 메모리(404), 및 메모리(404)를 CPU(402)에 결합하는 시스템 버스(410)를 포함한다. 예를 들어 시동 동안에 컴퓨터 아키텍처(400) 내의 요소들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템이 ROM(408)에 저장된다. 컴퓨터 아키텍처(400)는 운영 체제(106), 레이트 제어기(108), 인코더(110) 및 버퍼들(122)을 저장하기 위한 대용량 저장 장치(412)를 더 포함한다. 도 4에는 도시되지 않았지만, 대용량 저장 장치(412)는 또한 필요한 경우에 비디오 데이터(112), 인코딩된 비디오 스트림(116)에 대응하는 데이터, 최적화 파라미터들(124) 및/또는 다른 데이터를 저장하도록 구성될 수 있다.
대용량 저장 장치(412)는 버스(410)에 접속된 대용량 저장 장치 제어기(도시되지 않음)를 통해 CPU(402)에 접속된다. 대용량 저장 장치(412) 및 관련 컴퓨터 판독 가능 매체는 컴퓨터 아키텍처(400)에 대해 비휘발성 저장을 제공한다. 여기에 포함된 컴퓨터 판독 가능 매체의 설명은 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 저장 장치를 참조하지만, 이 분야의 기술자들은 컴퓨터 판독 가능 매체가 컴퓨터 아키텍처(400)에 의해 액세스될 수 있는 임의의 이용 가능 컴퓨터 저장 매체 또는 통신 매체일 수 있다는 것을 알아야 한다.
통신 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 반송파 또는 다른 전송 매체와 같은 피변조 데이터 신호 내에 포함하며, 임의의 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 신호의 특성들 중 하나 이상이 변경 또는 설정된 신호를 의미한다. 한정이 아니라 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속들과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 임의의 위의 것들의 조합들도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
한정이 아니라 예로서, 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 예를 들어, 컴퓨터 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 반도체 메모리 기술, CD-ROM, 디지털 다기능 디스크("DVD"), HD-DVD, BLU-RAY) 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터 아키텍처(400)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되지 않는다. 청구항들의 목적을 위해, 표현 "컴퓨터 저장 매체" 및 그 변형들은 파동, 신호 및/또는 다른 일시적이고/이거나 비유형적인 통신 매체 자체는 포함하지 않는다.
다양한 실시예들에 따르면, 컴퓨터 아키텍처(400)는 네트워크(104)와 같은 네트워크를 통해 원격 컴퓨터들에 대한 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 컴퓨터 아키텍처(400)는 버스(410)에 접속된 네트워크 인터페이스 유닛(414)을 통해 네트워크(414)에 접속할 수 있다. 네트워크 인터페이스 유닛(414)은 다른 타입의 네트워크들 및 원격 컴퓨터 시스템들, 예를 들어 클라이언트 장치(118)에 접속하는 데에도 사용될 수 있다는 것을 알아야 한다. 컴퓨터 아키텍처(400)는 또한 키보드, 마우스 또는 전자 스타일러스(도 4에 도시되지 않음)를 포함하는 다수의 다른 장치로부터 입력을 수신 및 처리하기 위한 입출력 제어기(416)를 포함할 수 있다. 유사하게, 입출력 제어기(416)는 디스플레이 스크린, 프린터, 또는 다른 타입의 출력 장치(도 4에 또한 도시되지 않음)에 출력을 제공할 수 있다.
본 명세서에서 설명되는 소프트웨어 컴포넌트들은 CPU(402) 내에 로딩되어 실행될 때 CPU(402) 및 전체 컴퓨터 아키텍처(400)를 범용 컴퓨팅 시스템으로부터 본 명세서에서 설명되는 기능을 촉진하도록 맞춤화되는 특수 목적 컴퓨팅 시스템으로 변환할 수 있다는 것을 알아야 한다. CPU(402)는 개별적으로 또는 공동으로 임의 수의 상태들을 취할 수 있는 임의 수의 트랜지스터들 또는 다른 개별 회로 요소들로부터 구성될 수 있다. 구체적으로, CPU(402)는 본 명세서에서 개시되는 소프트웨어 모듈들 내에 포함된 실행 가능 명령어들에 응답하여 유한 상태 기계로서 동작할 수 있다. 이러한 컴퓨터 실행 가능 명령어들은 CPU(402)가 상태들 사이에서 전이하는 방법을 지정함으로써 CPU(402)를 변환할 수 있으며, 따라서 CPU(402)를 구성하는 트랜지스터들 또는 다른 개별 하드웨어 요소들을 변환할 수 있다.
본 명세서에서 제공되는 소프트웨어 모듈들의 인코딩은 또한 본 명세서에서 제공되는 컴퓨터 판독 가능 매체의 물리 구조를 변환할 수 있다. 물리 구조의 구체적인 변환은 본 명세서의 상이한 구현들에서 다양한 팩터들에 의존할 수 있다. 그러한 팩터들의 예들은 컴퓨터 판독 가능 매체를 구현하는 데 사용되는 기술, 컴퓨터 판독 가능 매체가 주요 또는 보조 저장 장치로서 특화되는지 등을 포함할 수 있지만 이에 한정되지 않는다. 예를 들어, 컴퓨터 판독 가능 매체가 반도체 기반 메모리로서 구현되는 경우, 본 명세서에서 개시되는 소프트웨어는 반도체 메모리의 물리 상태를 변환함으로써 컴퓨터 판독 가능 매체 상에 인코딩될 수 있다. 예를 들어, 소프트웨어는 반도체 메모리를 구성하는 트랜지스터, 커패시터 또는 다른 개별 회로 요소의 상태를 변환할 수 있다. 소프트웨어는 또한 그러한 컴포넌트들의 물리 상태를 변환하여 그러한 컴포넌트들 상에 데이터를 저장할 수 있다.
다른 예로서, 본 명세서에서 개시되는 컴퓨터 판독 가능 매체는 자기 또는 광학 기술을 이용하여 구현될 수 있다. 그러한 구현들에서, 본 명세서에서 제공되는 소프트웨어는 소프트웨어가 자기 또는 광학 매체 내에 인코딩될 때 자기 또는 광학 매체의 물리 상태를 변환할 수 있다. 이러한 변환들은 주어진 자기 매체 내의 특정 위치들의 자기 특성들을 변경하는 것을 포함할 수 있다. 이러한 변환들은 또한 주어진 광학 매체 내의 특정 위치들의 물리적 특징들 또는 특성들을 변경하여 그러한 위치들의 광학 특성들을 변경하는 것을 포함할 수 있다. 본 명세서의 사상 및 범위로부터 벗어나지 않고서, 물리 매체의 다른 변환들이 가능하며, 위의 예들은 이러한 설명을 용이하게 하기 위해 제공될 뿐이다.
위에 비추어, 본 명세서에서 제공되는 소프트웨어 컴포넌트들을 저장 및 실행하기 위해 컴퓨터 아키텍처(400) 내에서 많은 타입의 물리적 변환들이 발생한다는 것을 알아야 한다. 컴퓨터 아키텍처(400)는 핸드헬드 컴퓨터, 내장형 컴퓨터 시스템, 개인용 휴대 단말기, 및 이 분야의 기술자들에게 알려진 다른 타입의 컴퓨팅 장치를 포함하는 다른 타입의 컴퓨팅 장치들을 포함할 수 있다는 것도 알아야 한다. 컴퓨터 아키텍처(400)는 도 4에 도시된 컴포넌트들 모두를 포함하지는 않을 수 있거나, 도 4에 명확히 도시되지 않은 다른 컴포넌트들을 포함할 수 있거나, 도 4에 도시된 것과 완전히 다른 아키텍처를 이용할 수 있다는 것도 고려된다.
상기 내용에 기초하여, 다층 레이트 제어를 위한 기술들이 본 명세서에서 개시되었다는 것을 알아야 한다. 본 명세서에서 제시된 내용은 컴퓨터의 구조적 특징들, 방법적 변환 액트들, 특정 컴퓨팅 기계 및 컴퓨터 판독 가능 매체에 고유한 언어로 설명되었지만, 첨부된 청구범위에서 정의되는 발명은 본 명세서에서 설명된 특정 특징들, 액트들 및 매체들로 한정될 필요는 없다는 것을 이해해야 한다. 오히려, 특정 특징들, 액트들 및 매체들은 청구범위를 구현하는 예시적인 형태들로서 개시된다.
전술한 내용은 예시적으로 제공될 뿐이며 한정적으로 해석되지 않아야 한다. 도시되고 설명된 실시예들 및 응용들을 따르지 않으면서 그리고 아래의 청구범위에서 설명되는 본 발명의 진정한 사상 및 범위로부터 벗어나지 않으면서 본 명세서에서 설명된 내용에 대해 다양한 수정들 및 변경들이 행해질 수 있다.

Claims (10)

  1. 컴퓨터로 구현되는, 비디오 전송을 위한 다층 레이트 제어를 제공하기 위한 방법으로서,
    데이터 저장 장치로부터 비디오 데이터를 획득하는 단계와,
    인코딩된 비디오 스트림 내에 포함될 복수의 계층과 관련된 복수의 양자화 파라미터를 결정하는 단계와,
    비디오 서버에서, 상기 양자화 파라미터에 따라 상기 비디오 데이터를 인코딩하여 상기 인코딩된 비디오 스트림을 획득하는 단계와,
    상기 인코딩된 비디오 스트림을 출력하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 양자화 파라미터를 결정하는 단계는
    상기 인코딩된 비디오 스트림의 베이스 계층(base layer)을 선택하는 단계와,
    상기 베이스 계층과 관련된 비트 사용 피드백(bit usage feedback) 및 향상 계층(enhancement layer)과 관련된 추가적인 비트 사용 피드백을 포함하는 비트 사용 정보를 획득하는 단계와,
    상기 베이스 계층과 관련된 제1 버퍼 및 상기 향상 계층과 관련된 제2 버퍼에 상기 비트 사용 피드백을 추가하는 단계와,
    상기 제2 버퍼에 상기 추가적인 비트 사용 피드백을 추가하는 단계와,
    상기 베이스 계층에 대한 상기 복수의 양자화 파라미터 중의 제1 양자화 파라미터 및 상기 향상 계층에 대한 상기 복수의 양자화 파라미터 중의 제2 양자화 파라미터를 결정하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 인코딩된 비디오 스트림이 분석될 다른 계층을 포함하는지를 판단하는 단계와,
    상기 인코딩된 비디오 스트림이 분석될 상기 다른 계층을 포함하지 않는다는 판단에 응답하여 상기 복수의 양자화 파라미터를 출력하는 단계와,
    상기 인코딩된 비디오 스트림이 분석될 상기 다른 계층을 포함한다는 판단에 응답하여 상기 인코딩된 비디오 스트림의 다음 향상 계층을 선택하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 인코딩된 비디오 스트림을 출력하는 단계는 상기 인코딩된 비디오 스트림을 상기 비디오 서버와 통신하는 클라이언트 장치로 스트리밍하는 단계를 포함하는
    방법.
  5. 제1항에 있어서,
    상기 인코딩된 비디오 스트림을 출력하는 단계는 상기 인코딩된 비디오 스트림을 복수의 버퍼로 출력하는 단계를 포함하는
    방법.
  6. 제5항에 있어서,
    상기 복수의 버퍼는 상기 인코딩된 비디오 스트림의 베이스 계층과 관련된 제1 버퍼, 상기 인코딩된 비디오 스트림의 제1 향상 계층과 관련된 제2 버퍼, 및 상기 인코딩된 비디오 스트림의 제2 향상 계층과 관련된 제3 버퍼를 포함하는
    방법.
  7. 제6항에 있어서,
    상기 베이스 계층과 관련된 제1 비트 사용 피드백, 상기 제1 향상 계층과 관련된 제2 비트 사용 피드백 및 상기 제2 향상 계층과 관련된 제3 비트 사용 피드백을 포함하는 비트 사용 정보를 획득하는 단계를 더 포함하는
    방법.
  8. 제7항에 있어서,
    상기 제1 버퍼, 상기 제2 버퍼 및 상기 제3 버퍼에 상기 제1 비트 사용 피드백을 추가하는 단계와,
    상기 제2 버퍼 및 상기 제3 버퍼에 상기 제2 비트 사용 피드백을 추가하는 단계와,
    상기 제3 버퍼에 상기 제3 비트 사용 피드백을 추가하는 단계와 제1 버퍼, 상기 제2 버퍼 및 상기 제3 버퍼에 기초하여 상기 복수의 양자화 파라미터 중 제1 양자화 파라미터를, 상기 제2 버퍼 및 상기 제3 버퍼에 기초하여 상기 복수의 양자화 파라미터 중 제2 양자화 파라미터를, 그리고 상기 제3 버퍼에 기초하여 상기 복수의 양자화 파라미터 중 제3 양자화 파라미터를 결정하는 단계
    를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 인코딩된 비디오 스트림을 출력하는 단계는 상기 인코딩된 비디오 스트림을 방송하는 단계를 포함하는
    방법.
  10. 컴퓨터 판독 가능 명령어를 저장한 컴퓨터 저장 매체로서,
    상기 컴퓨터 판독 가능 명령어는 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금
    데이터 저장 장치로부터 비디오 데이터를 획득하고,
    상기 컴퓨터에서, 상기 비디오 데이터를 인코딩하여, 인코딩된 비디오 스트림을 획득하고,
    상기 인코딩된 비디오 스트림을 버퍼로 출력하고,
    상기 인코딩된 비디오 스트림의 베이스 계층을 선택하고,
    상기 베이스 계층과 관련된 제1 비트 사용 정보 및 상기 인코딩된 비디오 스트림의 향상 계층과 관련된 제2 비트 사용 정보를 갖는 비트 사용 피드백을 획득하고,
    상기 베이스 계층과 관련된 상기 버퍼 중의 제1 버퍼 및 상기 향상 계층과 관련된 상기 버퍼 중의 제2 버퍼에 상기 제1 비트 사용 정보를 추가하고,
    상기 버퍼 중 상기 제2 버퍼에 상기 제2 비트 사용 정보를 추가하고,
    상기 제1 버퍼 및 상기 제2 버퍼에 기초하여 상기 베이스 계층의 제1 양자화 파라미터를, 그리고 상기 제2 버퍼에 기초하여 상기 제1 향상 계층의 제2 양자화 파라미터를 결정하고,
    상기 컴퓨터에서, 상기 양자화 파라미터에 따라 상기 비디오 데이터를 인코딩하게 하는
    컴퓨터 저장 매체.
KR1020147022689A 2012-02-14 2013-02-05 다층 레이트 제어 기법 KR20140124415A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/372,512 2012-02-14
US13/372,512 US20130208809A1 (en) 2012-02-14 2012-02-14 Multi-layer rate control
PCT/US2013/024686 WO2013122768A1 (en) 2012-02-14 2013-02-05 Multi-layer rate control

Publications (1)

Publication Number Publication Date
KR20140124415A true KR20140124415A (ko) 2014-10-24

Family

ID=48945528

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022689A KR20140124415A (ko) 2012-02-14 2013-02-05 다층 레이트 제어 기법

Country Status (6)

Country Link
US (1) US20130208809A1 (ko)
EP (1) EP2798848A4 (ko)
JP (1) JP2015510355A (ko)
KR (1) KR20140124415A (ko)
CN (1) CN104106265A (ko)
WO (1) WO2013122768A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318251A1 (en) * 2012-05-22 2013-11-28 Alimuddin Mohammad Adaptive multipath content streaming
US9363131B2 (en) * 2013-03-15 2016-06-07 Imagine Communications Corp. Generating a plurality of streams
US10893266B2 (en) * 2014-10-07 2021-01-12 Disney Enterprises, Inc. Method and system for optimizing bitrate selection
EP3151562B1 (en) * 2015-09-29 2020-06-17 Dolby Laboratories Licensing Corporation Feature based bitrate allocation in non-backward compatible multi-layer codec via machine learning
US11830225B2 (en) * 2018-05-30 2023-11-28 Ati Technologies Ulc Graphics rendering with encoder feedback

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE9103381L (sv) * 1991-11-15 1993-03-08 Televerket Foerfarande och apparat foer bildkodning med val av steghoejd i kvantiseraren
JP2979900B2 (ja) * 1993-05-26 1999-11-15 日本ビクター株式会社 記録媒体
US5515377A (en) * 1993-09-02 1996-05-07 At&T Corp. Adaptive video encoder for two-layer encoding of video signals on ATM (asynchronous transfer mode) networks
US5652616A (en) * 1996-08-06 1997-07-29 General Instrument Corporation Of Delaware Optimal disparity estimation for stereoscopic video coding
JP3263901B2 (ja) * 1997-02-06 2002-03-11 ソニー株式会社 画像信号符号化方法及び装置、画像信号復号化方法及び装置
JPH11112998A (ja) * 1997-10-01 1999-04-23 Matsushita Electric Ind Co Ltd 映像信号階層化符号化装置
JP2000333163A (ja) * 1999-05-24 2000-11-30 Sony Corp 復号装置及び方法、符号化装置及び方法、画像処理システム、画像処理方法
US6351491B1 (en) * 1999-06-23 2002-02-26 Sarnoff Corporation Apparatus and method for optimizing the rate control for multiscale entropy encoding
US6263022B1 (en) * 1999-07-06 2001-07-17 Philips Electronics North America Corp. System and method for fine granular scalable video with selective quality enhancement
US6788740B1 (en) * 1999-10-01 2004-09-07 Koninklijke Philips Electronics N.V. System and method for encoding and decoding enhancement layer data using base layer quantization data
US6687779B1 (en) * 2000-07-14 2004-02-03 Texas Instruments Incorporated Method and apparatus for transmitting control information across a serialized bus interface
US7646816B2 (en) * 2001-09-19 2010-01-12 Microsoft Corporation Generalized reference decoder for image or video processing
KR100540655B1 (ko) * 2003-01-23 2006-01-10 삼성전자주식회사 비디오 코딩시의 비트율 제어 방법 및 장치
US7403660B2 (en) * 2003-04-30 2008-07-22 Nokia Corporation Encoding picture arrangement parameter in picture bitstream
US20050201629A1 (en) * 2004-03-09 2005-09-15 Nokia Corporation Method and system for scalable binarization of video data
KR101149255B1 (ko) * 2004-04-02 2012-05-25 톰슨 라이센싱 복잡도 가변 비디오 인코더를 위한 방법 및 장치
KR20070061818A (ko) * 2004-09-17 2007-06-14 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치, 음성 복호 장치, 통신 장치 및 음성부호화 방법
US9124907B2 (en) * 2004-10-04 2015-09-01 Nokia Technologies Oy Picture buffering method
US7974341B2 (en) * 2005-05-03 2011-07-05 Qualcomm, Incorporated Rate control for multi-layer video design
US8229983B2 (en) * 2005-09-27 2012-07-24 Qualcomm Incorporated Channel switch frame
US9113147B2 (en) * 2005-09-27 2015-08-18 Qualcomm Incorporated Scalability techniques based on content information
US8107537B2 (en) * 2006-02-02 2012-01-31 Sharp Laboratories Of America, Inc. Picture layer rate control for video encoding
US7912123B2 (en) * 2006-03-01 2011-03-22 Streaming Networks (Pvt.) Ltd Method and system for providing low cost robust operational control of video encoders
CN101043619A (zh) * 2006-03-24 2007-09-26 华为技术有限公司 视频编码的误差控制系统和方法
EP1855271A1 (en) * 2006-05-12 2007-11-14 Deutsche Thomson-Brandt Gmbh Method and apparatus for re-encoding signals
EP2057847A4 (en) * 2006-08-31 2011-12-21 Samsung Electronics Co Ltd VIDEO CODING ARRANGEMENT AND METHOD AND VIDEO ENCODING ARRANGEMENT AND METHOD
US8577168B2 (en) * 2006-12-28 2013-11-05 Vidyo, Inc. System and method for in-loop deblocking in scalable video coding
US20080212673A1 (en) * 2007-03-01 2008-09-04 Peisong Chen Systems and Methods for Adaptively Determining I Frames for Acquisition and Base and Enhancement Layer Balancing
KR101375663B1 (ko) * 2007-12-06 2014-04-03 삼성전자주식회사 영상을 계층적으로 부호화/복호화하는 방법 및 장치
JP2009182442A (ja) * 2008-01-29 2009-08-13 Univ Of Fukui 動画像符号化・復号システム、並びにそれに用いる動画像符号化装置および動画像復号装置
JP4844595B2 (ja) * 2008-06-26 2011-12-28 日本ビクター株式会社 階層符号化装置、非階層符号化変換装置、階層符号化プログラム、および非階層符号化変換プログラム
DK2663076T3 (en) * 2009-04-20 2016-12-05 Dolby Laboratories Licensing Corp Filter Selection for video preprocessing of video applications
US8908758B2 (en) * 2010-01-06 2014-12-09 Dolby Laboratories Licensing Corporation High performance rate control for multi-layered video coding applications
CN102726046B (zh) * 2010-01-27 2015-09-09 杜比实验室特许公司 用于图像和视频编解码中的参考处理的方法和系统
US8644383B2 (en) * 2011-03-10 2014-02-04 Microsoft Corporation Mean absolute difference prediction for video encoding rate control

Also Published As

Publication number Publication date
US20130208809A1 (en) 2013-08-15
EP2798848A4 (en) 2016-01-06
WO2013122768A1 (en) 2013-08-22
JP2015510355A (ja) 2015-04-02
CN104106265A (zh) 2014-10-15
EP2798848A1 (en) 2014-11-05

Similar Documents

Publication Publication Date Title
US20210021878A1 (en) System and Method for Automatically Selecting Encoding/Decoding for Streaming Media
JP6469788B2 (ja) メディアコンテンツの適応型ストリーミングのための品質情報の使用
US10856030B1 (en) Bitrate selection for video streaming
US8379670B2 (en) Method and device for transmitting video data
KR20140124415A (ko) 다층 레이트 제어 기법
US10869048B2 (en) Method, device and system for transmitting and receiving pictures using a hybrid resolution encoding framework
WO2019119950A1 (zh) 视频编码处理方法、装置及具有视频编码功能的应用
WO2012119459A1 (zh) 数据传输的方法、装置和系统
US11677797B2 (en) Techniques for encoding a media title while constraining quality variations
WO2017053154A1 (en) Speech encoding
US20240022481A1 (en) System and method for optimizing deployment of a processing function in a media production workflow
US20200169593A1 (en) Techniques for encoding a media title while constraining bitrate variations
WO2021092821A1 (en) Adaptively encoding video frames using content and network analysis
US9525641B1 (en) Facilitating buffer wait time determination based on device- or entity-related conditions
JP2015510355A5 (ko)
CN114025190B (zh) 多码率调度方法和多码率调度装置
CN115427972A (zh) 用于适配变化的约束的系统和方法
CN111510715B (zh) 视频处理方法、系统、计算机设备及存储介质
US20210075843A1 (en) Quality Metadata Signaling for Dynamic Adaptive Streaming of Video
JP7310212B2 (ja) データ中継装置、データ中継方法及びプログラム
US9253484B2 (en) Key frame aligned transcoding using statistics file
US20240098247A1 (en) Content-adaptive Encoder Preset Prediction for Adaptive Live Streaming
CN115427971A (zh) 用于调整变化的资源限制的系统和方法
CN116033148A (zh) 一种视频编码方法、装置、计算机设备及存储介质
KR20140103569A (ko) 적응적 계층 선택을 위한 장치 및 방법, 이를 구비한 서버

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid