KR20060065482A - 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스 - Google Patents

스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스 Download PDF

Info

Publication number
KR20060065482A
KR20060065482A KR1020050099595A KR20050099595A KR20060065482A KR 20060065482 A KR20060065482 A KR 20060065482A KR 1020050099595 A KR1020050099595 A KR 1020050099595A KR 20050099595 A KR20050099595 A KR 20050099595A KR 20060065482 A KR20060065482 A KR 20060065482A
Authority
KR
South Korea
Prior art keywords
frame
bit rate
coding bit
client
rate
Prior art date
Application number
KR1020050099595A
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
Priority claimed from US11/010,040 external-priority patent/US7543073B2/en
Priority claimed from US11/010,113 external-priority patent/US7536469B2/en
Priority claimed from US11/010,114 external-priority patent/US20060143678A1/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060065482A publication Critical patent/KR20060065482A/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model

Abstract

스트리밍 미디어 데이터의 코딩 비트 레이트를 제어하는 시스템 및 프로세스가 제공된다. 이 코딩 비트 레이트 제어는 평균 코딩 비트 레이트를 네트워크의 평균 전송 비트 레이트에 가깝게 유지하면서(따라서 데이터 재생의 품질을 최대화하면서) 버퍼가 언더플로우하지 않도록 클라이언트 버퍼 지속기간을 제어하기 위해 코딩 비트 레이트를 동적으로 조정하는 것을 포함한다. 최적의 선형 2차 제어의 이론을 사용하여, 클라이언트 버퍼 지속기간은 가능한 한 목표 레벨에 가깝게 유지되면서도 여전히 코딩 비트 레이트(및 따라서 품질)를 가능한 한 일정하게 유지한다. 게다가, 순간 코딩 비트 레이트의 자연스러운 변동으로 인한 버퍼 지속기간의 변경이 네트워크 혼잡으로 인한 버퍼 지속기간의 변경으로 오인되지 않도록 리키 버킷 모델(leaky bucket model)이 제어 루프에 포함된다.
스트리밍 미디어 데이터, 코딩 비트 레이트, 전송 비트 레이트, 리키 버킷 모델

Description

스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템 및 프로세스{A SYSTEM AND PROCESS FOR CONTROLLING THE CODING BIT RATE OF STREAMING MEDIA DATA}
도 1은 본 발명을 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 장치를 나타낸 도면.
도 2는 간략화된 스트리밍 미디어 통신 파이프라인의 블록도.
도 3은 코딩된 비트 스트림 내의 비트가 도 2의 통신 파이프라인에서의 점 A, B, C, 및 D를 통과하는 스케줄을 비트 대 미디어 시간의 관점에서 나타낸 그래프.
도 4는 코딩 스케줄을 포함하는 버퍼 튜브를 비트 대 미디어 시간의 관점에서 나타낸 그래프.
도 5는 도착 스케줄 및 그의 상한을 클라이언트 시간 대 미디어 시간으로 나타내는 그래프로서, 상한이 시간에 따라 더 나은 안정성을 제공하기 위해 점차적으로 재생 마감 시각보다 앞서가는 목표 스케줄에 맞춰 제어되는 것인 그래프.
도 6은 목표 도착 스케줄 설계를 나타내는 그래프.
도 7a 및 도 7b는 2개의 서로 다른 목표 도착 스케줄을 나타낸 것으로서, 도 7a는 로그 스케줄을 나타내고 도 7b는 2-구분 선형 스케줄을 나타낸 것인 도면.
도 8은 여러가지 전송 레이트에 대한 버퍼 튜브를 나타낸 그래프.
도 9는 지수 평균을 설명하는 그래프.
도 10은 버퍼 튜브 변화 및 제어 목표 조정을 나타낸 그래프.
도 11a 내지 도 11c는 본 발명에 따른 코딩 비트 레이트 제어 프로세스의 실시예를 나타낸 플로우차트.
도 12는 보수적인 코딩 비트 레이트 상향-전환 절차에서 사용되는 보수적인 한계를 나타내는 타임라인을 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
200: 인코더
202: 디코더
204: 네트워크
206: 인코더 버퍼
208: 디코더 버퍼
참조 문헌
[1] G.J. Conklin, G.S. Greenbaum, K.O. Lillevold, A.F. Lippman, 및 Y.A. Reznik의 Video coding for streaming media delivery on the Internet(인터넷을 통한 스트리밍 미디어 전달을 위한 비디오 코딩). IEEE Trans. Circuits and Systems for Video Technology, 11(3):269-281, 2001년 3월, 스트리밍 비디오에 관한 특별판.
[2] T.Wiegand 및 G. Sullivan의 Joint video specification rec. h.264 & 14496-10 avc. Non-Final Draft of Final Draft International Standard(FDIS) JVT-G050, ITU-T & ISO/IEC, Pattaya, Thailand, 2003년 3월.
[3] V.J. Ribeiro, R.H. Riedi, J. Navratil, L. Cottrell, 및 R.G. Baraniuk의 pathchirp:efficient available bandwidth estimation for network paths(경로 첩: 네트워크 경로에 대한 효율적인 가용 대역폭 추정). In Proc. Passive and Active Measurement Workshop(PAM), La Jolla, CA. 2003년 4월.
[4] R. Rejaie, M. Handley, 및 D. Estrin의 Layered quality adaptation for Internet streaming video(인터넷 스트리밍 비디오의 계층화된 품질 적응). IEEE J. Selected Areas in Communications, 18(12):2530-2543, 2000년 12월.
[5] Q. Zhang, Y.Q. Zhang, 및 W. Zhu의 Resource allocation for multimedia streaming over the Internet(인터넷을 통한 멀티미디어 스트리밍을 위한 자원 할당). IEEE Trans. Multimedia, 3(3):339-355, 2001년 9월.
[6] B.J. Kim, Z. Xiong, 및 W.A. Pearlman의 Low bit-rate scalable video coding with 3D set partitioning in hierarchical trees(3-D SPIHT). IEEE Trans. Circuits and Systems for Video Technology, 10(8):1374-1387, 2000년 12월.
[7] F. Wu, S. Li, 및 Y.Q. Zhang의 A framework for efficient progressive fine granularity scalable video coding(효율적인 순차적 소단위 확장가능 비디오 코딩). IEEE Trans. Circuits and Systems for Video Technology, 11(3):301-317, 2001년 3월.
[8] J. Li의 Embedded audio coding(eac) with implicit psychoacoustic masking(묵시적 음향심리적 마스킹을 갖는 내장 오디오 코딩). In Proc. Int'l Conf. Multimedia, 592-601페이지, Nice, France, 2002년 12월. ACM.
[9] P. de Cuetos 및 K.W. Ross의 Adaptive rate control for streaming stored fine-grained scalable video(저장된 소단위 확장가능 비디오를 스트리밍하기 위한 적응적 레이트 제어). In Proc. Int'l Workshop on Network and Operating Systems Support for Digital Audio and Video(NOSSDAV), Miami Beach, FL, 2002년 5월.
[10] J. Ribas-Corbera, P.A. Chou, 및 S. Regunathan의 A generalized hypothetical reference decoder for H.264/AVC(H.264/AVC에 대한 일반화된 가상 참조 디코더). IEEE Trans. Circuits and Systems for Video Technology, 13(7), 2003년 7월.
[11] B.D.O. Anderson 및 J.B. Moore의 Optimal Control: Linear Quadratic Methods(최적 제어: 선형 2차 방법). Prentice Hall, 1990.
[12] S. Keshav의 Packet-pair flow control(패킷쌍 흐름 제어). http://www.cs.cornell.edu/-skeshav/papers.html.
[13] P.A. Chou 및 Z. Miao의 "Rate-distortion optimized streaming of packetized media(패킷화된 미디어의 레이트-왜곡 최적화된 스트리밍)", Microsoft Research technical Report MSR-TR-2001-35, 2001년 2월.
본 발명은 스트리밍 미디어의 코딩 비트 레이트를 제어하는 것에 관한 것으로서, 보다 상세하게는 전체 스트리밍 세션에 걸쳐 고속 시동, 연속 재생, 및 최대 품질 및 원활성을 제공하는 스트리밍 미디어 데이터의 코딩 비트 레이트를 제어하는 시스템 및 프로세스에 관한 것이다.
인터넷을 통하여 주문형 미디어를 스트리밍함에 있어서의 주된 기술적 문제는 아마도 변화하는 네트워크 상태에 적응해야 한다는 것이다. 경쟁하는 통신 프로세스들이 시작하고 종료될 때, 가용 대역폭, 패킷 손실 및 패킷 지연 모두가 변동된다. 수 초 동안 지속되는 네트워크 정지가 일어날 수 있고 또 일어난다. 자원 예약 및 서비스 품질 지원이 도움이 될 수 있지만 이들이 네트워크 자원이 안정되도록 보장할 수는 없다. 네트워크 경로가 예를 들어 무선 링크를 포함하는 경우, 그의 용량이 때로는 간섭에 의해 감소될 수 있다. 따라서, 상업용 스트리밍 미디어 시스템은 불리한 네트워크 상태에 대해 안정성이 있을 필요가 있다. 게다가, 이러한 안정성은 공격적(무반응적) 전송[aggressive(nonreactive) transmission]만으로 달성될 수 없다. 심지어 모든 패킷 손실에 대한 재전송을 갖는 고정 비트 레이트 전송(constant bit rate transimssion)이라도 채널 용량보다 높은 처리용량을 달성할 수는 없다. 따라서, 네트워크에 대한 어느 정도의 적응성이 요구된다.
최종 사용자는 양호한 스트리밍 미디어 시스템이 이하의 거동을 나타낼 것으 로 기대하고 있다. 즉, 주문시에 재생되는 콘텐츠는 낮은 지연으로 시작하고 일단 시작되었으면 사용자에 의해 중단되지 않는 한 연속적으로 재생되며, 이용가능한 평균 통신 대역폭이 주어진 경우 가능한 최고의 품질로 재생된다. 변화하는 네트워크 상태에도 불구하고 이러한 기대를 충족시키기 위해, 디코딩 및 재생 이전에 클라이언트에서의 콘텐츠의 버퍼링이 요구된다.
클라이언트에서의 버퍼링은 몇가지 개별적인 그렇지만 동시적인 목적에 도움이 된다. 첫째, 이는 클라이언트가 패킷 전송 지연에서의 단기적인 변동(즉, "지터")을 보상할 수 있게 해준다. 둘째, 이는 필요한 경우 패킷 손실 복원을 수행할 클라이언트 시간을 제공한다. 셋째, 이는 클라이언트가 네트워크 대역폭의 감소 동안에 계속하여 콘텐츠를 재생할 수 있게 해준다. 그리고, 마지막으로, 이는 콘텐츠가 가변 비트 레이트로 코딩될 수 있게 해주며, 따라서 전체 품질을 극적으로 향상시킬 수 있다. 유의할 점은 소위 고정 비트 레이트(constant bit rate, CBR)코딩된 콘텐츠라도 실제로는 주어진 크기의 디코딩 버퍼의 제약 내에서 가변 비트 레이트로 코딩된다는 것이다. 디코딩 버퍼 크기가 클수록, 품질은 더 좋아진다. 요구되는 디코딩 버퍼링은 더 큰 클라이언트 버퍼의 일부이다.
클라이언트 버퍼의 크기는 버퍼 지속기간(duration)이라고 하는 버퍼 내의 콘텐츠의 초 수(the number of seconds of content)로서 표현될 수 있다. 버퍼 지속기간은 콘텐츠가 버퍼에 들어갈 때 증가하는 경향이 있고 콘텐츠가 버퍼에서 나갈 때 감소하는 경향이 있다. 콘텐츠는 실시간의 초당 v초의 콘텐츠의 레이트로, 재생될 때 버퍼에서 나가며, 여기서 v는 재생 속도(playback speed)이다(일반적으 로 정상 재생에 대해서는 1, 아마도 고속 재생에 대해서는 1보다 크거나, 저속 재생에 대해서는 1보다 작음). 콘텐츠는 네트워크를 통해 클라이언트에 도착할 때 실시간의 초당 ra/rc 초의 콘텐츠의 레이트로 버퍼에 들어가며, 여기서 ra도착 레이트(arrival rate), 즉 실시간의 초당 클라이언트에 도착하는 평균 비트 수이고, rc코딩 비트 레이트(coding bit rate), 즉 1초의 콘텐츠를 인코딩하는 데 필요한 평균 비트 수이다. 따라서, 버퍼 지속기간은 ra를 증가시키고 rc를 감소시키며 및/또는 v를 감소시킴으로써 증가될 수 있다(버퍼 지속기간을 감소시키기 위해서는 역으로 하면 된다). 버퍼 지속기간이 ra를 변경하거나 v를 변경함으로써 언제라도 제어될 수 있지만, 이들 양은 일반적으로 장기간 동안 자유롭게 제어할 수는 없다. 도착 레이트 ra는 대체로 네트워크 용량에 의해 결정되는 반면, 재생 속도 v는 대체로 사용자 취향에 의해 결정된다. 따라서, 네트워크 용량이 지속된 기간 동안 극적으로 떨어지는 경우, 코딩 비트 레이트를 감소시키는 것이 버퍼가 재충전되는 동안 재생이 중지(v=0)되는 리버퍼링 이벤트(rebuffering event)를 방지하는 적당한 유일한 방법이다.
따라서, 변화하는 네트워크 상태에 대한 적응성은 버퍼 뿐만 아니라 콘텐츠의 코딩 비트 레이트 rc를 조정하는 어떤 수단을 필요로 한다. 이것은 다중 비트 레이트(multi bit rate, MBR) 코딩, 즉 대단위(coarse grained) 또는 소단위(fine grained) 확장가능 코딩(scalable coding)과 함께 스트리밍 전환에 의해 행해질 수 있다. 현재의 상용 스트리밍 미디어 시스템[1]은 MBR 코딩은 물론 대단위 확장성(coarse grained scalability)의 한 형태인 씨닝(thinning)에 의존한다. MBR 코딩에서는, 의미론적으로 동일한 콘텐츠가 서로 다른 코딩 비트 레이트에서 대안적인 비트 스트림들로 인코딩되고 서버에 있는 동일한 미디어 파일에 저장되며, 그에 따라 아마도 비트 스트림 전환[2]을 사용하여 콘텐츠가 코딩 비트 레이트 rc에 대응하는 서로 다른 품질 수준으로 스트리밍될 수 있게 된다. 대단위 확장가능 코딩[MPEG-2/4 시간(temporal) 또는 SNR 확장성 등]에서, 콘텐츠는 몇개의 서브스트림, 즉 계층(layer)으로 인코딩되고, 따라서 코딩 비트 레이트 rc는 한번에 한 계층의 콘텐츠를 (아마도 제한된 횟수로) 부가 또는 누락시킴으로써 큰 증분으로(in large deltas) 변화할 수 있다. 씨닝은 종속 비디오 프레임(P 및 B 프레임)이 독립 비디오 프레임(I 프레임) 앞에서 누락되고 차례로 독립 비디오 프레임이 오디오 프레임 앞에서 누락되는 대단위 확장성의 특수한 경우이다. 장래의 상용 시스템은 소단위 확장성(fine grained scalability, FGS)도 지원할 수 있다. 소단위 확장가능 코딩(3D SPIHT[6], MPEG-4 FGS[7], 또는 EAC[8] 등)은 코딩 비트 레이트 rc가 때로는 프리젠테이션당 1바이트 정도로 작은 증분으로 언제라도 변화될 수 있게 해준다. FGS 코딩은 가변적인 네트워크 상태에 적응함에 있어서 많은 유연성을 제공하고 또 이러한 상태 하에서 품질을 향상시킬 수 있음은 입증될 수 있다.
변화하는 네트워크 상태에 적응하기 위해 콘텐츠의 코딩 비트 레이트 rc를 조정하는 기존의 기술 중 어떤 예는 전송 레이트와 코딩 비트 레이트를 분리시키는 de Cuetos 및 Ross[9]를 포함한다. 이들은 전송 레이트가 네트워크 전송 프로토콜(TCP 또는 TFRC)에 의해 결정되는 것으로 가정한다. 이것에 기초하여, 이들은 적응적 코딩 비트 레이트 제어를 위한 발견적 실시간 알고리즘(heuristic real time algorithm)을 개발하고 전송 레이트가 스트리밍 이전에 주어진 경우 그의 성능을 최적의 오프라인 코딩 비트 레이트 제어 정책과 비교한다. Rejaie, Handley 및 Estrin[4]의 연구는 기본적으로 2가지 메카니즘을 포함하는 유니캐스트 혼잡 제어와 관련하여 계층화된 비디오(layered video)를 전송하는 방식을 제안한다. 한 메카니즘은 계층을 부가 및 누락시키는 대단위 메카니즘(coarse-grained mechanism)이다(전체적인 코딩 비트 레이트 및 품질을 변화시킴). 다른 하나는 수신기 버퍼를 관리하는 소단위 층간 대역폭 할당 메카니즘(fine-grained interlayer bandwidth allocation mechanism)이다(전체적인 코딩 비트 레이트 또는 품질을 변화시키지 않음). 이 방식에서의 잠재적인 문제는 이 방식이 한번에 한 계층[아마도 대단위 계층(coarse layer)]을 부가 또는 누락시킴으로써 코딩 비트 레이트를 변화시킨다는 것이다. 계층이 FGS 코딩된 미디어의 경우에서와 같이 소단위(fine-grained)인 경우, 한번에 하나의 (소단위) 계층을 부가 또는 누락시키는 것은 일반적으로 코딩 비트 레이트의 충분히 신속한 변화를 제공할 수 없다. 게다가, 부가 및 누락 메카니즘이 오히려 경험적이기 때문에, 이 메카니즘은 간단히 말해 FGS 미디어에 적합하지 않을 수 있다. Q. Zhang, Zhu 및 Y-Q. Zhang[5]의 연구는 코딩 비트 레이트를 추정된 네트워크 대역폭에 적응시키는 자원 할당 방식을 제안한다. 본 방법의 신규한 점은 이들이 오디오/비디오 스트리밍 이외에 파일 전송 및 웹 브 라우징 등의 모든 응용의 왜곡을 최소화(또는 등가적으로 품질을 최대화)하는 것을 고려하고 있다는 것이다. 그렇지만, 이들의 최적화 프로세스는 개개의 스트림의 원활성을 포함하지 않으며 잠재적인 품질 변동을 유발할 수 있다.
그렇지만, 버퍼링 및 코딩 비트 레이트의 조정 기능이 있음에도, 주문시에 인터넷을 통해 미디어를 스트리밍하는 기존의 기술은 2가지 문제점이 있다.
1. 재생이 종종 네트워크 혼잡 동안 정지된다. 즉, 고 비트 레이트 콘텐츠의 재생 동안, 네트워크 비트 레이트가 콘텐츠 비트 레이트 아래로 떨어지면, 클라이언트 버퍼는 콘텐츠가 없어지게 되고 클라이언트가 리버퍼링하는 동안("리버퍼링" 이벤트라고 함) 재생이 중단된다.
2. 시동 지연이 종종 너무 길다(약 5초).
이들 문제 둘다에 대한 기존의 해결책이 있지만, 이들이 항상 제대로 동작하는 것은 아니다. 첫번째 문제에 대한 한 해결책은 네트워크를 통해 전송되는 평균 비트 레이트(전송 비트 레이트)에 비해 낮은 코딩 비트 레이트로 인코딩된 콘텐츠를 스트리밍하는 것이다. 이것은 버퍼가 시간에 따라 보강되게 할 수 있다. 클라이언트 상에 미재생된 정보를 이와같이 많이 예비해두면, 일시적인 네트워크 혼잡이 재생에 영향을 주지 않게 된다. 그렇지만, 이 해결책은 2가지 문제점을 갖는다. 첫째, 콘텐츠의 코딩 비트 레이트는 네트워크의 평균 전송 비트 레이트만큼 높지 않으며, 따라서 품질이 생각보다 더 낮다. 둘째, 버퍼는 거의 스트리밍된 파일 자체만큼 크게 증대될 수 있다. 이것은 클라이언트 장치 상의 너무 많은 자원 을 요구할 수 있다.
첫번째 문제에 대한 다른 해결책은 동일한 콘텐츠에 대한 서로 다른 코딩 비트 레이트 간을 전환하여 네트워크의 전송 비트 레이트와 일치시키려고 노력하면서 클라이언트 버퍼를 일정한 레벨에 (일반적으로 약 10초) 유지시키도록 하는 것이다. 그렇지만, 여전히 리버퍼링 이벤트가 실제로 통상 관측되는데 그 이유는 스트림을 전환할 정확한 시각을 선택하는 것이 어렵기 때문이다. 한가지 이유는 소위 고정 비트 레이트 인코딩(constant bit rate encoding)에서도 콘텐츠의 순간 코딩 비트 레이트에 자연스러운 변동이 있기가 어려우며 이것이 클라이언트 버퍼 관리 알고리즘을 혼란시킬 수 있기 때문이다.
상기 두번째 문제(긴 시동 지연)도 역시 다수의 해결책을 가지고 있다. 한 해결책은 신속한 초기 전송 레이트 버스트(quick initial transmission rate burst)로 클라이언트 버퍼를 신속하게 채우는 것이다. 클라이언트 버퍼가 충만해 있으면, 재생이 안전하게 시작될 수 있다. 그렇지만, 이 해결책은 몇가지 문제를 갖는다. 첫째, 수 초 동안 전송 비트 레이트를 증가시키는 것은 네트워크에 충분한 "여유 공간(headroom)"이 있을 때만 적용가능하다. 따라서, 이는 예를 들어 모뎀 연결의 경우에는 적용가능하지 않은 것이 보통이다. 둘째, 이는 네트워크를 압박하여 네트워크 내의 다른 응용들이 중단되게 만든다. 버스트 기간 동안 80%나 되는 패킷 손실이 있고 이는 동일한 병목 지점을 공유하는 모든 TCP 연결이 중단될 수 있음이 밝혀졌다. 셋째, 함축적으로는, 네트워크에 버스트를 위한 여유 공간이 있는 경우, 스트리밍 응용은 파일의 나머지 동안에 그가 이용가능한 전체 대역폭을 사용하지 않을 수 있으며, 이는 품질이 요구되는 것보다 더 낮다는 것을 의미한다.
두번째 문제에 대한 다른 해결책은 콘텐츠를 실시간보다 더 느리게 재생하여 클라이언트 버퍼가 보강되는 동안 재생이 시작할 수 있게 해주는 것이다. 이것은 혁신적인 해결책이지만, 명백한 시간적 왜곡을 갖는다.
두번째 문제에 대한 마지막 해결책은 콘텐츠의 코딩 비트 레이트를 네트워크의 전송 비트 레이트 아래로 일시적으로 낮추어 클라이언트 버퍼가 보강되는 동안 재생이 시작될 수 있게 해주는 것이다. 이것은 Chou 등[13]에 의해 제안된 해결책이다.
본 발명의 시스템 및 프로세스는 기존의 기술의 문제점을 해결하고 전체 스트리밍 세션에 걸쳐 고속 시동, 연속 재생, 및 최대 품질 및 원활성을 제공한다.
유의할 점은 이상의 단락에서는 물론 본 명세서의 나머지에서, 설명이 한쌍의 각괄호 내에 포함된 숫자 지시자로 식별되는 여러가지 개개의 간행물을 참조한다는 것이다. 예를 들어, 이러한 참조 문헌은 "참조 문헌[1]" 또는 간단히 "[1]"로 기재함으로써 식별될 수 있다. 각각의 지시자에 대응하는 간행물을 비롯한 참조 문헌의 목록은 [종래기술의 문헌]에서 찾아볼 수 있다.
본 발명은 컴퓨터 네트워크를 통해 서버로부터 클라이언트로 전송되는 스트리밍 미디어 데이터의 코딩 비트 레이트를 제어하는 시스템 및 프로세스에 관한 것이다. 일반적으로, 이 코딩 비트 레이트 제어는 클라이언트 버퍼 지속기간을 제어하기 위해 스트리밍 미디어 데이터의 코딩 비트 레이트를 동적으로 조정하는 것을 포함한다. 이것의 목적은 평균 코딩 비트 레이트를 네트워크의 평균 전송 비트 레이트에 가깝게 유지하면서(따라서 데이터의 재생의 품질을 최대화하면서) 클라이언트 버퍼가 언더플로우하는 것을 방지하기 위한 것이다. 코딩 비트 레이트 제어의 문제점은 선형 2차 최적 제어에서의 통상의 문제로서 수식화되어 있으며, 여기서 클라이언트 버퍼 지속기간은 가능한 한 목표 레벨에 가깝게 제어된다. 연속적인 프레임에 걸친 평균 코딩 비트 레이트의 원활성도 역시 최적 제어 프로세스의 일부로서 코딩 비트 레이트를 변경할지 여부를 결정할 때 고려된다. 이것은 네트워크 상태가 변화할 때 더 높고 더 안정된 품질을 제공한다. 게다가, 주어진 평균 코딩 비트 레이트에 대해 발생하는 순간 코딩 비트 레이트의 자연스러운 변동이 명백하게 고려된다. 이것은 순간 코딩 비트 레이트의 자연스러운 변동으로 인한 버퍼 지속기간의 변화가 네트워크 혼잡으로 인한 버퍼 지속기간의 변화로 잘못 인식되지 않도록 리키 버킷 모델을 제어 루프에 포함시킴으로써 달성된다. 유의할 점은 본 발명의 시스템 및 프로세스에서, 클라이언트 버퍼의 실제의 충만도가 아니라 비트의 클라이언트 버퍼로의 도착 시각에 관한 상한이 목표 레벨로 제어된다. 상한은 코딩 비트 레이트의 리키 버킷 모델에 기초한다.
클라이언트 버퍼가 언더플로우하지 않도록 하면서 평균 코딩 비트 레이트를 네트워크의 평균 전송 비트 레이트에 가깝게 유지시키는 것은 상기한 사용자 기대 중 2가지를 만족시킨다. 즉, 버퍼가 결코 언더플로우하지 않는 경우, 버퍼는 연속 재생을 할 수 있다. 게다가, 평균 코딩 비트 레이트를 네트워크의 평균 전송 비트 레이트에 가깝게 유지시킨다는 것은 이용가능한 평균 통신 대역폭이 주어진 경우 데이터가 가능한 최고의 품질로 재생된다는 것을 의미한다. 이것은 시동 지연의 나머지 문제를 남겨둔다. 이 문제는 본 발명의 시스템 및 프로세스에서 시간에 따라 클라이언트 버퍼의 크기를 제어함으로써 해결된다. 보다 구체적으로는, 상기한 클라이언트 버퍼 목표 레벨이 작은 상태로 시작하고 이어서 시간에 따라 서서히 증대되도록 조정된다. 버퍼가 초기에 작은 경우, 버퍼는 더 짧은 시동 지연을 가능하게 해준다. 게다가, 버퍼가 종국에는 크게 증대될 수 있기 때문에, 버퍼는 시스템의 안정성을 향상시키는 것은 물론 높은, 거의 일정한 품질을 생성한다. 따라서, 클라이언트 버퍼 관리가 스트리밍 미디어 시스템의 성능에 영향을 주는 주요 요소이다.
보다 상세하게는, 본 발명의 시스템 및 프로세스는 서버에 의해 지원되는 다수의 코딩 비트 레이트 중 하나를 나타내는 스트리밍 미디어 데이터 스트림을 생성하는 서버를 포함한다. 처음에, 서버는 시동 기간 동안 코딩 비트 레이트를 선택한다. 그렇지만, 시동 기간 이후에, 클라이언트는 코딩 비트 레이트 요청을 서버에 제공한다. 이에 응답하여, 서버는 스트리밍 미디어 데이터를, 클라이언트에 의해 요청된 레이트에 가장 가까운, 가장 적절한 지원되는 코딩 비트 레이트로 전송한다. 클라이언트에 의해 요청된 코딩 비트 레이트는 스트리밍 미디어 데이터의 고품질 재생을 제공하면서 서버로부터 스트리밍 미디어 데이터를 수신하는 데 사용되는 클라이언트의 디코더 버퍼를 원하는 지속기간 레벨까지 충만된 상태로 유지시키는 것으로 추정되는 레이트이다.
클라이언트는 상기의 선형 2차 최적 제어 기술을 사용하여 계속적으로 원하 는 결과를 제공하는 코딩 비트 레이트를 계산한다. 이 코딩 비트 레이트 계산은 고려 중인 프레임의 추정된 가장 늦은 예상 도착 시각과 소정의 목표 도착 시각 간의 차이를 감소시키고 동시에 코딩 비트 레이트의 변화를 소정의 정도까지 감소시키는 코딩 비트 레이트를 프레임별로 결정하는 단계를 포함한다. 상기한 리키 버킷 모델을 포함하는 일 실시예에서, 코딩 비트 레이트 계산은 서버의 인코더 버퍼의 상태를 나타내는 파라미터에 기초한다. 이들 파라미터는 서버에 의해 계산되어 스트리밍 미디어 데이터와 함께 클라이언트에 제공된다.
보다 상세하게는, 서버는 먼저 지원되는 코딩 비트 레이트에 대응하는 데이터 스트림이 그로부터 스트리밍되는 경우에 존재하게 되는 인코더 버퍼의 초기 상태를 정의하는 일련의 파라미터를 계산한다. 지원되는 코딩 비트 레이트 각각에 대해 별도의 일련의 파라미터가 계산되고, 스트리밍 미디어 데이터의 프리앰블로 클라이언트에 제공된다. 이들 파라미터는 데이터 스트림과 연관된 코딩 비트 레이트, 데이터 스트림의 코딩 비트 레이트와 함께 이용되는 인코더 버퍼의 크기, 및 데이터 스트림의 코딩 비트 레이트로 나타내어진 초기의 인코더 버퍼 충만도를 표시하는 값을 포함한다. 유의할 점은 각각의 지원되는 코딩 비트 레이트와 함께 이용되는 인코더 버퍼의 크기가 변하며, 코딩 비트 레이트 및 초기의 인코더 버퍼 충만도가 주어진 경우, 스트리밍 프로세스의 임의의 시점에서 데이터 스트림을 여전히 포함하게 되는 최소 크기 버퍼가 되도록 선택된다는 것이다.
초기의 인코더 버퍼 파라미터 이외에, 서버는 또한 서버에 의해 지원되는 각각의 코딩 비트 레이트에 대해 생성된 스트리밍 미디어 데이터의 각 프레임에 대한 상한 갭을 계산한다. 이 상한 갭은 이제 막 생성된 프레임이 인코더 버퍼에 완전히 입력된 후에 서버의 인코더 버퍼가 그 안에 현재 들어 있는 비트에 더하여 포함할 수 있는 데이터 비트의 수로서 정의된다. 보다 상세하게는, 각 프레임에 대한 상한 갭은 인코더 버퍼 크기와 이제 막 생성된 프레임의 삽입 이후의 인코더 버퍼 충만도에 대한 마지막 계산된 값 간의 차이로서 계산된다. 이제 막 생성된 프레임의 삽입 이후의 인코더 버퍼 충만도 값은 이제 막 생성된 프레임의 삽입 이전의 인코더 버퍼 충만도 값의 마지막 계산된 값과 그 이제 막 생성된 프레임의 크기의 합으로서 계산된다. 이제 막 생성된 프레임의 삽입 이전의 인코더 버퍼 충만도 값은 이제 막 생성된 프레임 바로 이전에 생성된 프레임의 삽입 이후의 인코더 버퍼 충만도에 대한 계산된 값과 그 이전의 프레임과 연관된 코딩 비트 레이트를 상기 이전의 프레임과 연관된 순간 프레임 레이트로 나눈 것 간의 차이 또는 0 중에서 어느 쪽이든 더 큰 것으로서 계산된다. 순간 프레임 레이트는 그 다음 프레임이 인코딩될 것으로 스케줄링된 시각 - 이제 막 생성된 프레임이 인코딩된 시각의 역수와 같다. 일 실시예에서, 서버는 코딩 레이트의 변화 이후에 생성된 프레임 시퀀스의 첫번째 프레임에 대해 계산된 상한 갭을, 시퀀스의 첫번째 프레임과 연관된 데이터의 일부로서의 프레임 시퀀스와 연관된 코딩 비트 레이트의 표시와 함께 클라이언트에 제공한다. 다른 실시예에서, 서버는 생성된 모든 프레임과 함께 갭 값을 제공한다.
클라이언트는 클라이언트 버퍼를 대략 원하는 지속기간 레벨에 유지시키기 위해, 인코더 버퍼 파라미터 및 상한 갭 값을 이용하여 고려 중인 프레임의 추정된 가장 늦은 예상 도착 시각과 그 프레임의 소정의 목표 도착 시각 간의 차이를 감소시키는 코딩 비트 레이트를 프레임별로 결정한다. 상한 갭이 코딩 비트 레이트의 변화 이후의 첫번째 프레임과 함께만 제공되는 경우, 클라이언트는 갭 값을 포함하지 않는 프레임에 대한 상한 갭을 추정한다. 또한 유의할 점은 상기의 초기 인코더 버퍼 상태가 주어진 경우, 클라이언트가 수신된 모든 프레임에 대한 상한 갭 값을 추정하는 것이 가능하다는 것이다. 따라서, 서버가 계속적으로 갭 값을 계산하여 제공하도록 구성되어 있지 않은 대체 실시예에서, 클라이언트 컴퓨터는 여전히 자체적으로 이들을 계산할 수 있다.
새로운 평균 코딩 비트 레이트를 갖는 프레임이 클라이언트에 도착할 때, 상한 갭의 천이가 있다. 이 천이는 수 초 정도일 수 있으며, 따라서 무시할 수 있기 보다는 제어기에 혼란을 줄 수 있다. 이것에 대한 한 해결책은 제어 목표 스케줄에 동시적인 천이를 도입하는 것이다. 이를 위해, 서버는 또한 코딩 비트 레이트 변화 이후의 첫번째 프레임을 나타내는 각각의 프레임에 대한 천이값을 계산한다. 이 천이값은 첫번째 프레임이 새로운 코딩 비트 레이트로 인코딩된 경우 이 첫번째 프레임 바로 이전에 생성된 프레임과 연관되어질 상한 갭과 이전의 코딩 비트 레이트로 인코딩된 프레임과 실제로 연관된 상한 갭 간의 차이를 나타낸다. 천이값은 코딩 비트 레이트의 변화 이후의 첫번째 프레임과 함께 클라이언트에 제공된다. 클라이언트는 이제 막 수신된 "첫번째" 프레임과 연관된 현재 스케줄링된 목표 도착 시각을 제공된 천이값 만큼 천이시키고, 장래의 프레임에 대한 현재 스케줄링된 목표 도착 시각은 이들 도착 시각이 모두 그 프레임에 대한 이전의 목표 도착 시각 에 어떤 기간에 걸쳐 접근하고 또 궁극적으로는 그와 일치하도록 천이된다. 이와 같이, 코딩 비트 레이트가 변화될 때 상한 갭 천이의 역효과는 완화되고 목표 도착 시각 값이 궁극적으로 다시 일치하게 된다.
각각의 프레임에 대한 목표 도착 시각과 관련하여, 이들은 프레임의 목표 시각과 그의 재생 시각 간의 시간이, 시동 기간 이후에는, 프레임의 실제 도착 시각이 그의 목표 도착 시각 이후가 되도록 야기할 수 있는 네트워크 지터, 지연 및 처리용량 변화로 인해 프레임이 그의 스케줄링된 재생 시각 이후에 도착하게 되는 일이 없도록 충분히 크게 되도록 선택된다. 시동 기간 동안에, 목표 도착 시각은 시동 지연을 감소시키는 데 도움을 주기 위해 목표 도착 시각이 재생 시각에 더 가깝게 되도록 선택된다. 일 실시예에서, 이것은 로그 목표 스케줄(logarithmic target schedule)을 사용하여 각 프레임에 대한 목표 도착 시각을 설정함으로써 달성된다. 다른 실시예에서, 이것은 2-구분 선형 목표 스케줄(two-piece linear target schedule)을 사용하여 각 프레임에 대한 목표 도착 시각을 설정함으로써 달성되며, 여기서 시동 기간 동안에 도착하는 프레임에 대한 목표 도착 시각과 재생 시각 간의 차이는 네트워크 지터, 지연 및 처리용량 변화를 고려하기 위해 충분히 큰 소정의 시간까지 선형적으로 증가하고 그 이후에 차이는 거의 일정하게 유지된다.
유의할 점은 시동 지연이 클라이언트의 디코더 버퍼가 초기의 코딩 비트 레이트에서 언더플로우 상태가 일어나지 않도록 보장하는 데 필요한 최소량의 데이터를 그 안에 가질 때 스트리밍 미디어 데이터의 첫번째 프레임의 재생을 시작함으로 써 추가로 최소화될 수 있다는 것이다. 또한, 도착 레이트가 코딩 비트 레이트에 대해 증가함에 따라 언더플로우 상태가 일어나지 않도록 보장하는 데 필요한 최소량의 데이터가 감소하기 때문에, 초기의 코딩 비트 레이트는 클라이언트에서의 스트리밍 미디어 데이터의 예상 도착 레이트보다 낮은 레벨로 설정될 수 있다. 따라서, 코딩 비트 레이트에서의 클라이언트 요청이 변화하기 이전의 시동 기간에, 서버는 초기의 코딩 비트 레이트로 스트리밍 미디어 데이터를 제공한다. 일 실시예에서, 초기의 코딩 비트 레이트는 대략 예상 도착 레이트의 1/2로 설정되며, 여기서 예상 도착 레이트는 네트워크 상에서 이용가능한 현재의 대역폭에서 서버로부터의 예상 전송 레이트인 것으로 추정된다. 유의할 점은 시동 기간이 초기의 코딩 비트 레이트에 대해 계산된 고려 중인 프레임의 추정된 가장 늦은 도착 시각이 그 프레임에 대한 목표 도착 시각보다 더 빠르게 되는 첫번째 경우가 있기 이전의 기간으로서 정의될 수 있다는 것이다.
클라이언트가 코딩 비트 레이트의 변화도 역시 소정의 정도까지 감소시키는 각각의 프레임에 대한 코딩 비트 레이트를 식별하는 것과 관련하여, 유의할 점은 소정의 정도가 코딩 비트 레이트가 증가되었는지 여부에 따라 변할 수 있다는 것이다. 코딩 비트 레이트가 증가된 경우, 코딩 비트 레이트의 임의의 장래의 변화가 최소화되는 소정의 정도는 코딩 비트 레이트의 마지막 변화가 레이트를 감소시킨 경우의 소정의 정도와 비교하여 더 크게 된다. 또한, 코딩 비트 레이트의 큰 또는 빈번한 변화로 인한 품질 변동을 최소화하는 것도 또한 바람직하다. 코드 비트 레이트 변화를 안정화시키기 위해, 이하의 동작이 취해질 수 있다. 첫째, 클라이언 트가 증가를 나타내는 새로운 코딩 비트 레이트를 식별하는 경우에, 새로운 코딩 비트 레이트는 새로운 레이트가 프레임의 현재의 이동 평균 도착 레이트를 초과하지 않을 때만 서버로부터 요청되어진다. 다른 실시예에서, 새로운 코딩 비트 레이트가 프레임의 현재의 이동 평균 도착 레이트를 초과할지라도, 현재의 클라이언트 버퍼 지속기간이 소정의 기간(예를 들어, 60초)이 경과하기 이전에 더 높은 코딩 비트 레이트에서 소모되지 않을 것으로 추정되는 양만큼 원하는 지속기간 레벨을 초과하는 경우, 증가를 나타내는 새로운 코딩 비트 레이트가 서버에 요청되어진다. 그렇지만, 클라이언트가 감소를 나타내는 새로운 코딩 비트 레이트를 식별하는 경우, 새로운 코딩 비트 레이트가 바로 이전의 코딩 비트 레이트로부터 상당한 이탈을 나타낼지라도 그 새로운 코딩 비트 레이트가 서버에 요청된다. 이렇게 하는 이유는 코딩 레이트가 감소될 때 클라이언트 버퍼가 언더플로우할 위험이 거의 없기 때문이다.
프레임의 상기한 이동 평균 도착 레이트와 관련하여, 이 레이트를 계산하는 새로운 절차가 본 발명의 시스템 및 프로세스에서 이용된다. 보다 상세하게는, 이동 평균 도착 레이트는 현재 수신된 패킷의 순간 도착 레이트와 '1 - 부분 가중 인자'의 곱에 가산되는, 현재 수신된 패킷의 바로 이전의 패킷에 대해 계산된 이동 평균 도착 레이트와 부분 가중 인자의 곱을 계산함으로써 패킷별로 계산된다. 이 계산에서, 부분 가중 인자는 과거에서와 같이 상수가 아니라, 그 대신에 수신된 패킷 간의 도착간 갭(inter-arrival gap)에 기초한다. 보다 상세하게는, 현재 수신 된 패킷 k에 대한 부분 가중 인자 β(k)는
Figure 112005059723522-PAT00001
과 같이 계산되며, 여기서 α는 소정의 시간 상수의 역수이고, t(k)는 현재의 패킷에 대한 실제 도착 시각이며, t(k-1)은 현재의 패킷 바로 이전에 수신된 패킷의 실제 도착 시각이고, t(0)은 스트리밍 미디어 데이터의 첫번째 패킷의 도착 시각이다. 이 경우, 현재의 패킷 k의 순간 도착 레이트 ra(k)는
Figure 112005059723522-PAT00002
와 같이 계산되고, 여기서 b(k)는 현재의 패킷의 크기이다. b(k)가 비트로 표현되고 ta(k)-ta(k-1)가 초로 표현되는 경우, 이동 평균 도착 레이트는 스트리밍 미디어 데이터 비트의 도착 레이트(비트/초)를 나타낸다. 유의할 점은 유사한 절차가 스트리밍 미디어의 레이트의 임의의 단위에 대해 이용될 수 있다는 것이다.
앞서 언급한 바와 같이, 서버는 서버에 의해 지원되는 다수의 코딩 비트 레이트 중 하나를 나타내는 데이터 스트림을 생성하고 데이터 스트림을, 클라이언트에 의해 요청된 레이트에 가장 가까운 가장 적절한 지원되는 코딩 비트 레이트로 전송한다. 이용가능한 코딩 비트 레이트의 수는 데이터가 어떻게 인코딩되느냐에 달려있다. 예를 들어, 소단위 확장가능 코딩 방식(fine grain scalable coding scheme)이 사용되는 경우, 이론적으로는 많은 수의 레이트가 이용가능할 수 있다(그렇지만, 실용적인 이유로 그 수는 더 낮을 수 있다, 예를 들어, 50). 그렇지만, 대단위 확장가능 코딩 방식(coarse grain scalable coding scheme) 또는 다중 비트 레이트 코딩 방식(multiple bit rate coding scheme)이 이용되는 경우, 서버로부터 이용가능한 더 제한된 수의 코딩 비트 레이트가 있을 수 있다. 따라서, 어떤 경우에, 클라이언트에 의해 식별된 최적 코딩 비트 레이트가 서버로부터 이용가능하지 않을 수 있다. 게다가, 일치하는 코딩 비트 레이트가 이용가능할 지라도, 상한 갭은 그 레이트로의 전환이 클라이언트 버퍼 언더플로우를 가져올 위험이 있을 정도일 수 있다. 이러한 경우, 본 발명의 시스템 및 프로세스는 클라이언트에 의해 식별된 최적 코딩 비트 레이트를 고려하여 이용가능한 레이트로부터 가장 적절한 코딩 비트 레이트를 결정하는 기술을 포함한다. 유의할 점은 이용가능한 레이트가 스트리밍 미디어 데이터의 프리앰블로 서버로부터 클라이언트로 제공될 수 있다는 것이다. 이러한 경우에, 클라이언트 자체는 분석을 수행하고 그 결과 얻어지는 지원되는 코딩 비트 레이트를 서버에 요청하게 된다. 그렇지만, 대체 실시예에서, 클라이언트는 그가 식별한 최적 코딩 비트 레이트를 요청하고, 서버는 어느 지원되는 레이트가 가장 적절한지를 판정하기 위해 분석을 수행한다. 서버는 이어서 선택된 코딩 비트 레이트를 나타내는 데이터 스트림을 제공한다. 어느 경우든지, 분석은 클라이언트에 의해 식별된 최적 코딩 비트 레이트와 같은 지원되는 코딩 비트 레이트를, 또는 같은 것이 없는 경우 그에 가장 가까운 작은쪽 레이트를 찾아내는 것을 포함한다. 발견된 지원되는 코딩 비트 레이트가 스트리밍 미디어 데이터의 마지막 생성된 프레임과 연관된 코딩 비트 레이트보다 낮을 때마다, 모든 장래의 프레임(또는 클라이언트에 의해 지정된 프레임으로 시작하는 프레임)은 그 지원되는 레이트로 생성된다. 그렇지만, 발견된 지원되는 코딩 비트 레이트가 마지막 생 성된 프레임과 연관된 코딩 비트 레이트보다 높을 때, 마지막 생성된 프레임이 발견된 지원되는 코딩 비트 레이트로 인코딩된 경우 그 프레임과 연관된 상한 갭과 현재의 코딩 비트 레이트로 인코딩된 그 프레임과 연관된 상한 갭 간의 차이가 최대 허용가능 차이값보다 작거나 같은지가 판정된다. 차이가 최대 허용가능 차이값보다 작은 경우, 영향받는 장래의 프레임은 발견된 지원되는 레이트로 생성된다. 그렇지만, 차이가 최대 허용가능 차이값보다 작지 않은 경우, 그 다음으로 낮은 지원되는 코딩 비트 레이트가 발견되고 궁극적으로 적절한 레이트를 식별하기 위해 이상의 동작들이 반복된다.
최대 허용가능 차이값은 클라이언트에 의해 계산되고, 서버가 분석을 하고 있는 경우, 클라이언트는 그 값을 새로운 코딩 비트 레이트의 데이터에 대한 요청과 함께 제공한다. 클라이언트는 클라이언트에 의해 고려 중인 프레임보다 바로 앞서 서버에 의해 제공되는 프레임이 요청된 코딩 비트 레이트로 코딩된 경우 그 프레임과 연관된 가장 늦은 예상 도착 시각이 그 프레임의 목표 도착 시각에서 그의 재생 마감 시각까지의 기간의 소정의 일부(예를 들어, 그 시간의 1/3)보다 크지 않도록, 최대 허용가능 차이값을 선택한다.
이제 막 기술한 이점 이외에, 본 발명의 다른 이점은 본 명세서에 첨부된 도면과 관련하여 읽어갈 때 이하의 상세한 설명으로부터 명백하게 될 것이다.
본 발명의 특정의 특징, 측면 및 이점은 이하의 설명, 첨부된 청구항 및 첨부 도면을 참조하면 더 잘 이해될 것이다.
본 발명의 양호한 실시예의 이하의 설명에서, 본 명세서의 일부를 형성하는 첨부 도면을 참조하며, 첨부 도면에는 예로서 본 발명이 실시될 수 있는 특정의 실시예가 도시되어 있다. 다른 실시예들이 이용될 수 있으며 본 발명의 범위를 벗어나지 않고 구조상의 변경이 행해질 수 있음을 잘 알 것이다.
I. 컴퓨팅 환경
본 발명의 양호한 실시예에 대한 설명을 제공하기 전에, 본 발명의 일부분이 구현될 수 있는 적당한 컴퓨팅 환경에 대한 간략한 전체적인 설명이 기술된다. 도 1은 적당한 컴퓨팅 시스템 환경(100)의 예를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 사용 또는 기능의 범위에 관해 어떤 제한을 암시하려는 의도가 아니다. 또한, 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 예시된 컴포넌트들 중 임의의 것 또는 이들의 임의의 조합에 관하여 어떤 의존관계 또는 요건을 갖는 것으로 해석되어서도 안된다.
본 발명은 많은 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 본 발명에서 사용하기에 적합할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 및 기타 등등을 포함하지만, 이에 한정되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조, 기타 등등을 포함한다. 본 발명은 또한 작업들이 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함한 여러가지 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)를 포함할 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 제한이 아닌 예로서, 이러한 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌 버스라고도 하는 PCI(Peripheral Component Interconnect) 버스가 있다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 둘다를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체 를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체 둘다를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를, 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 구현하며, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 그의 특성 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크나 직접 유선 연결 등의 유선 매체, 또는 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상기한 것 중 임의의 것의 조합도 역시 컴퓨터 판독가능 매체의 범위 내에 포함된다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(110) 내의 구성요소들 간의 정보 전송을 돕는 기본적인 루틴을 포함하는 기본 입/출력 시스템(133)(BIOS)은 일반적으로 ROM(131)에 저장되어 있다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 의해 즉각 액세 스가능하고 및/또는 현재 처리되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한이 아닌 예로서, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 예시하고 있다.
컴퓨터(110)는 또한 기타의 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형 비휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그에 기록하는 광학 디스크 드라이브(155)를 예시하고 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 기타의 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM, 및 기타 등등을 포함하지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140) 등의 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 연결되어 있으며, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150) 등의 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 연결되어 있다.
이상에서 기술하고 도 1에 예시된 드라이브 및 그의 관련 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)의 기타 데이터의 저장을 제공한다. 예를 들어, 도 1에서, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 예시되어 있다. 유의할 점은 이들 컴포넌트가 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일한 것이거나 다른 것일 수 있다는 것이다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 이들이 서로 다른 복사본임을 예시하기 위해 여기에서는 서로 다른 번호가 부기되어 있다. 사용자는 키보드(162) 및 통상 마우스, 트랙볼 또는 터치 패드라고 하는 포인팅 디바이스(161) 등의 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 또는 기타 등등을 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 연결되어 있지만, 병렬 포트, 게임 포트 또는 USB(Universal Serial Bus) 등의 기타의 인터페이스 및 버스 구조에 의해 연결될 수 있다. 모니터(191) 또는 기타의 유형의 디스플레이 장치도 역시 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 연결되어 있다. 모니터 이외에, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 연결될 수 있는 스피커(197) 및 프린터(196) 등의 기타의 주변 출력 장치를 포함할 수 있다. 일련의 이미지(193)를 캡처할 수 있는 (디지털/전자 정지화상 또는 비디오 카메라 등의) 카메라(192)도 역시 퍼스널 컴퓨터(110)로의 입력 장치로서 포함될 수 있다. 게다가, 단지 하나의 카메라가 도시되어 있지만, 다수의 카메라가 퍼스널 컴퓨터(110)로의 입력 장치로서 포함될 수 있다. 하나 이상의 카메라로부터의 이 미지(193)는 적절한 카메라 인터페이스(194)를 통해 컴퓨터(110)에 입력된다. 이 인터페이스(194)는 시스템 버스(121)에 연결되어 있으며, 그에 따라 이미지가 RAM(132) 또는 컴퓨터(110)와 연관된 다른 데이터 저장 장치 중 하나로 보내져 그 안에 저장될 수 있게 된다. 그렇지만, 유의할 점은 이미지 데이터가 카메라(192)를 사용할 필요없이 상기한 컴퓨터 판독가능 매체 중 임의의 것으로부터도 컴퓨터(110)에 입력될 수 있다는 것이다.
컴퓨터(110)는 원격 컴퓨터(180) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타의 통상적인 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(110)와 관련하여 상기한 구성요소들 중 다수 또는 그 전부를 포함하지만, 도 1에는 단지 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN)(171) 및 원거리 통신망(WAN)(173)을 포함하지만, 기타의 네트워크도 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 규모의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 일반적으로 모뎀(172) 또는 인터넷 등의 WAN(173)을 통한 통신을 설정하는 기타의 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타의 적절한 메카니즘을 통해 시스템 버스(121)에 연 결될 수 있다. 네트워크화된 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈 또는 그의 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 1은 원격 애플리케이션 프로그램(185)을 메모리 장치(181)에 존재하는 것으로 예시하고 있다. 도시된 네트워크 연결이 예시적인 것이고 또 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있음을 잘 알 것이다.
지금까지 예시적인 오퍼레이팅 환경에 대해 기술하였으며, 이 설명 섹션의 나머지 부분은 본 발명을 구현하는 프로그램 모듈에 대한 설명에 할애할 것이다.
II. 문제 수식화
A. 시간 좌표 시스템
시간을 표현하는 데 사용되는 시간 좌표 시스템들, 즉 클럭들을 구분하는 것이 이익이 된다. 본 명세서에서, 미디어 시간(media time)은 원본 콘텐츠를 캡처 및 타임스탬프하는 데 사용되는 장치 상에서 동작하는 클럭을 말하는 반면, 클라이언트 시간(client time)은 콘텐츠를 재생하는 데 사용되는 클라이언트 상에서 실행되는 클럭을 말한다. 미디어 시간은 미디어 캡처 시의 실시간인 것으로 가정되는 반면, 클라이언트 시간은 미디어 재생 시의 실시간이다. 심볼 τ는 미디어 시간을 표현하는 데 사용되고, 심볼 t는 클라이언트 시간을 표현하는 데 사용되며, 대응하는 이벤트를 가리키는 첨자 및 다른 인수를 갖는다. 예를 들어, τd(0), τd(1), τd(2), ...는 프레임 0,1,2,...의 재생 마감 시각(playback deadline)을 미디어 시 간으로 표현하는 데 사용되는 반면, td(0), td(1), td(2), ...는 클라이언트에서 프레임 0,1,2,...의 재생 마감 시각을 표현하는 데 사용된다. 콘텐츠는 실시간의
Figure 112005059723522-PAT00003
배의 레이트로 재생될 수 있다. 따라서, 미디어 시간으로부터 클라이언트 시간으로의 변환은 수학식 1과 같이 표현될 수 있다.
Figure 112005059723522-PAT00004
여기서, t0 및 τ0는 각각 미디어 및 클라이언트 좌표 시스템에서의 프레임 0의 재생(또는 탐색 또는 리버퍼링 이벤트 이후의 첫번째 프레임의 재생) 등의 통상의 초기 이벤트의 시각을 나타낸다.
B. 리키 버킷 모델(Leaky Bucket Model)
당분간 인코더(200) 및 디코더(202)가 네트워크(204)의 등시성 통신 채널(isochronous communication channel)을 통해 실시간으로 실행되는 시나리오를 상정한다. 이 경우, 순간 코딩 비트 레이트를 순간 채널 레이트에 일치시키기 위해, 도 2에 예시한 바와 같이, 인코더(200)와 네트워크(204) 사이에 인코더 버퍼(206)가 필요하고, 네트워크(204)와 디코더(202) 사이에 디코더 버퍼(208)가 필요하다. 스케줄은 코딩된 비트 스트림 내의 연속적인 비트가 통신 파이프라인 내의 주어진 지점을 통과하는 시각의 시퀀스이다. 도 3의 그래프는 도 2의 지점 A, B, C, 및 D를 통과하는 비트의 스케줄을 나타낸 것이다. 스케줄 A는 캡처된 프레임이 순간적 으로 인코딩되어 인코더 버퍼에 들어가는 스케줄이다. 이 스케줄은 n번째 스텝(step)이 시각 τ(n)에서 b(n) 비트 만큼 상승하는 계단이며, 여기서 τ(n)은 프레임 n이 인코딩되는 시각이고, b(n)은 그 결과의 인코딩에서의 비트 수이다. 스케줄 B 및 C는 비트가 개별적으로 통신 채널에 들어가고 나오는 스케줄이다. 이들 스케줄에서의 기울기는 R 비트/초이고, 여기서 R은 채널의 통신 레이트이다. 스케줄 D는 프레임이 디코더 버퍼로부터 제거되어 프리젠테이션을 위해 순간적으로 디코딩되는 스케줄이다. 유의할 점은 스케줄 D가 단지 스케줄 A의 천이(shift)이라는 것이다. 또한 유의할 점은 스케줄 B가 스케줄 A의 하한(lower bound)이고, 스케줄 C가 스케줄 D의 상한(upper bound)이라는 것이다. 실제로, 스케줄 A와 스케줄 B 간의 갭은 임의의 시점에서 인코더 버퍼의 크기(단위: 비트)를 나타내는 반면, 스케줄 C와 스케줄 D 간의 갭은 이와 마찬가지로 디코더 버퍼의 크기를 나타낸다. 인코더 및 디코더 버퍼 크기는 상보적이다. 따라서, 코딩 스케줄(A 또는 D)이 버퍼 튜브(buffer tube) 내에 포함될 수 있으며, 이 버퍼 튜브는 도 4의 그래프에 나타낸 바와 같이 기울기 R, 높이 B 및 튜브의 상단으로부터의 초기 오프셋 Fd(또는 등가적으로 튜브의 하단으로부터의 초기 오프셋 Fe=B-Fd)을 갖는다. D=Fd/R가 첫번째 비트가 수신기에 도착하는 시각과 첫번째 프레임이 디코딩되는 시각 간의 시동 지연(startup delay)임을 알 수 있다. 따라서, 주어진 R에 대해 Fd를 최소화하는 것이 관심 대상이다.
리키 버킷(leaky bucket)은 인코더 버퍼에 대한 비유(metaphor)이다. 인코 더는 시각 τ(n)에서 리키 버킷으로 b(n) 비트를 덤프(dump)하고, 그 비트들은 레이트 R로 빠져나간다. 일반적으로, 버킷이 때로는 비게 될 정도로 리크 레이트(leak rate) R이 높게 될 수 있다. 따라서, 프레임 n 바로 이전의 인코더 버퍼 충만도(encoder buffer fullness) Fe(n)는 버킷에 부가되고 프레임 n 바로 이후의 인코더 버퍼 충만도 Be(n)는 동적 시스템에 따른 초기 인코더 버퍼 충만도 Fe(0)=Fe로부터의 버킷 이볼브(bucket evolve)에 부가된다.
Figure 112005059723522-PAT00005
Figure 112005059723522-PAT00006
여기서,
Figure 112005059723522-PAT00007
은 순간 프레임 레이트(단, n=0, 1, 2, ...)이다. R이 충분히 낮은 경우, 버킷은 결코 마르지(언더플로우차지) 않지만, R이 너무 낮은 경우, 버킷은 궁극적으로 오버플로우한다. 버킷이 결코 마르지 않을 정도의 최대 R은 비트 스트림의 평균 코딩 비트 레이트 rc가 되도록 택한다. 이것은 이하의 2개의 단락에서 보다 명확하게 된다.
크기 B, 레이트 R, 및 초기 충만도 Fe를 갖는 리키 버킷은 모든 n에 대해 Be(n)≤B인 경우, 스텝 {(b(n), τ(n))}을 특징으로 갖는 스케줄을 갖는 스트림을 내포(contain)한다고 말해진다. 리크 레이트 R 및 초기 충만도 Fe가 주어진 경우 스트림을 내포하는 데 필요한 최소 버킷 크기는 다음과 같이 정의되고,
Figure 112005059723522-PAT00008
대응하는 초기 디코더 버퍼 충만도는 다음과 같이 정의된다.
Figure 112005059723522-PAT00009
Fe를 넘는 이들 각각의 최소값은 다음과 같이 나타낸다.
Figure 112005059723522-PAT00010
Figure 112005059723522-PAT00011
놀랍게도 이들 각각은 Fe의 동일한 값에 의해 최소화된다는 것이 [10, 정리 2]에 나타내어져 있으며, 따라서 다음과 같이 된다.
Figure 112005059723522-PAT00012
따라서, 스케줄 {(b(n), τ(n))}을 갖는 비트 스트림에서 각각의 비트 레이트 R에 대해, 스트림을 내포하고 또 최소 버퍼 크기 B는 물론 최소 시동 지연 D=Fe/R을 갖는 독자적인 리키 버킷이 있다. 이들 파라미터는 상기 식들로 계산될 수 있다.
충분히 낮은 리크 레이트 R의 경우, 리키 버킷은 초기 충만도 Fe=Fe min(R)로 시작할 때 언더플로우하지 않는다. 최대의 이러한 레이트 R은 코딩 스케줄 {(b(n), τ(n))}을 갖는 비트 스트림의 평균 코딩 비트 레이트 rc로서 사용될 수 있다.
rc보다 큰 리크 레이트 R도 역시 이용될 수 있다. Be min(R) 및 Bd min(R) 둘다가 R에 관하여 감소하고, 구분적 선형(piecewise linear)이며, 또 볼록하다는 것이 [10]에 나타내어져 있다. 따라서, 전송 레이트 R이 평균 코딩 비트 레이트 rc보다 큰 경우, 시동 지연 D=Fd min(R)/R은 D=Fd min(rc)/R에 비해 감소될 수 있다. 이 사실이 섹션 IV-A에서 사용된다.
리크 레이트 R=rc, 크기 B=Be min(rc), 및 초기 디코더 버퍼 충만도 Fd=Fd min(rc)를 갖는 리키 버킷은 따라서 도 4에서와 같이 코딩 스케줄의 경계를 이루는 직선 버퍼 튜브(straight buffer tube)에 대응한다. 미디어 파일 내의 각각의 스트림은 코딩 스케줄을 가지며, 따라서 각각의 스트림은 스트림의 평균 코딩 비트 레이트 rc와 같은 기울기를 갖는 직선 버퍼 튜브에 대응한다. 버퍼 튜브의 크기 B 및 코딩 스케줄에 대한 그의 오프셋 Fe(또는 Fd)은 가변 비트 레이트(variable bit rate, VBR) 스트림(확장가능 스트림의 고정 품질 서브스트림 등)에 대한 상기 공식에 의해 계산되거나 스트림이 고정 비트 레이트(constant bit rate, CBR) 스트림인 경우 그 스트림을 인코딩하는 데 사용되는 실제 인코더 버퍼의 크기 B 및 초기 상태 Fe로부터 획득될 수 있다.
이하에서는, 도 4에 나타낸 바와 같이, 버퍼 튜브 상한(upper bound) 및 코딩 스케줄 간의 프레임 n에서의 갭 g(n)이 고려된다. 유의할 점은 디코더 버퍼 충만도 Fd(n)=B-Fe(n)가 다음과 같이 표현될 수도 있다는 것이다.
Figure 112005059723522-PAT00013
여기서, rc(n)은 버퍼 튜브의 코딩 비트 레이트이며, 이제부터 코딩 비트 레이트 제어가 적용되고 스트림이 전환될 때 서로 다른 프레임이 서로 다른 코딩 비 트 레이트를 갖는 서로 다른 버퍼 튜브 내에 있을 수 있음을 고려한다.
C. 레이트 제어 모델
당분간 비트가 클라이언트에 고정 레이트 ra로 도착하는 것으로 가정한다. 그러면, 프레임 n(크기 b(n)을 가짐)은 프레임 n-1보다 b(n)/ra초 후에 클라이언트에 도착한다. 실제로, 비트의 인덱스는 그의 도착 시각에 비례한다. 도 4의 스케줄의 수직 스케일을 ra로 나누면, 도 5에 나타낸 바와 같이, 비트가 아닌 클라이언트 시간의 관점에서의 스케줄이 얻어진다. 코딩 스케줄을 ra로 나눈 것이 도착 스케줄이 되고, 이는 각각의 n에 있어서 프레임 n의 클라이언트 도착 시각 ta(n)을 제공한다. 버퍼 튜브 상한(단위: 비트)을 ra로 나눈 것이 버퍼 튜브 상한(단위: 시간)이 되고, 이는 각각의 n에 있어서 프레임 n이 도착할 것으로 보장되는 시각 tb(n)을 제공한다. 동 도면에, 재생 마감 시각(playback deadline)이 도시되어 있으며, 이는 프레임 n이 (순간 디코딩 이후에) 재생되기로 스케줄링된 시각 td(n)이다. 따라서, 프레임의 도착 시각과 그의 재생 마감 시각 간의 갭이 프레임 도착 시의 클라이언트 버퍼 지속기간이다. 이것은 연속 재생이 가능하도록 음의 값이 되어서는 안된다.
실제, 도착 레이트는 고정되어 있지 않다. ta(n-1) 및 ta(n)이 각각 프레임 n 및 프레임 n-1의 도착 시각인 경우,
Figure 112005059723522-PAT00014
은 프레임 n에서의 순간 도착 레이트(instantaneous arrival rate)로서 정의될 수 있다. 실제로, 프레임 n에서의 평균 도착 레이트는 섹션 IV-C에서 상세히 기술하는 바와 같이, ra(n)의 이전의 값의 이동 평균
Figure 112005059723522-PAT00015
에 의해 추정된다. 따라서, 수학식 11을 사용하여, 프레임 n의 도착 시각은 다음과 같이 프레임 n-1의 도착 시각의 항으로 표현될 수 있다.
Figure 112005059723522-PAT00016
Figure 112005059723522-PAT00017
여기서, v(n) 항은 저속 이동 평균(slowly moving average)
Figure 112005059723522-PAT00018
을 사용하는 효과를 포착하는 에러 항이다. 그렇지만, 수학식 10으로부터,
Figure 112005059723522-PAT00019
임을 알 수 있으며, 따라서 (수학식 13에 수학식 14를 대입하면)
Figure 112005059723522-PAT00020
이 얻어진다.
이제, 프레임 n의 버퍼 튜브 상한(단위: 시간)을
Figure 112005059723522-PAT00021
같이 정의하면,
Figure 112005059723522-PAT00022
이 되고, 다음과 같은 업데이트 방정식이 얻어지고,
Figure 112005059723522-PAT00023
여기서,
Figure 112005059723522-PAT00024
은 다시 말
Figure 112005059723522-PAT00025
하면 국부적으로 일정한 도착 레이트를 중심으로 한 변동을 포착하는 에러 항이다.
수학식 16을 사용하여, 클라이언트는 측정된 도착 시각 tb(n-1), 추정된 도착 레이트
Figure 112005059723522-PAT00026
, 및 g(n-1)(이는 프레임 n-1 내의 데이터와 함께 클라이언트로 전송되거나 섹션 V-E에서 기술한 바와 같이 클라이언트에서 계산될 수 있음)로부터 tb(n-1)을 계산할 수 있다. 이어서, 프레임 레이트 및 도착 레이트가 대체로 일정한 것으로 가정할 때, 수학식 18을 사용하여, 클라이언트는 tb(n)이 원하는 값에 도달하도록 코딩 비트 레이트 rc(n)를 제어할 수 있다. 이 관점으로부터, 수학식 18은 피드백 제어 시스템의 상태 천이 방정식으로서 간주될 수 있으며, 따라서 코딩 비트 레이트를 조절하기 위해 제어-이론적 방법(control-theoretic approach)을 사용하는 것이 가능하다.
D. 제어 목적
수학식 18에 정의된 상태 천이 방정식을 사용하여, 무정지 재생(uninterrupted playback)은 클라이언트 버퍼가 언더플로우하지 않도록 코딩 비트 레이트를 조절함으로써 달성될 수 있다. 시간에 따라 증가하는 안전 여유(margin of safety)를 도입하기 위해, 도 5에 도시한 바와 같이, 목표 스케줄(target schedule)이 도입되며, 목표 스케줄의 재생 마감 시각으로부터의 거리는 시간에 따라 서서히 증가한다. 코딩 비트 레이트를 조절함으로써, 버퍼 튜브 상한이 목표 스케줄을 쫓아가도록 그 상한의 제어가 시도된다. 버퍼 튜브 상한이 목표 스케줄에 가까운 경우, 모든 프레임의 도착 시각은 그의 재생 마감 시각보다 확실히 더 이르게 되며, 따라서 무정지 재생이 보장된다. 유의할 점은 실제 도착 시각(그의 상한이 아님)을 목표에 맞춰 제어하는 결과 프레임당 비트 수가 대략 일정하게 되며, 이에 따라 전체적으로 품질이 아주 나빠지게 된다. 리키 버킷 모델을 고려함으로써, 순간 코딩 비트 레이트가 주어진 평균 코딩 비트 레이트의 이전에 확립된 범위 내에서 콘텐츠의 인코딩 복잡도에 따라 자연스럽게 변동할 수 있게 해주는 제어를 확립하는 것이 가능하다.
상한을 목표 스케줄에 맞춰 제어하는 것이 우리의 주된 목적이지만, 코딩 비트 레이트의 큰 변화 또는 빈번한 변화로 인한 품질 변동을 최소화하는 것도 요망된다. 이것은 비용 함수(cost function)에 상대 코딩 비트 레이트 차이에 대한 패널티를 도입함으로써 달성될 수 있다.
tT(n)가 프레임 n에 대한 목표를 나타내는 것으로 할 때, 이하의 비용 함수는 2가지 관심사 모두를 반영하는 데 사용되고,
Figure 112005059723522-PAT00027
여기서, 첫번째 항은 버퍼 튜브 상한의 목표 스케줄로부터의 편차에 패널티를 주고, 두번째 항은 연속적인 프레임들 간의 상대 코딩 비트 레이트 차이에 패널티를 준다. N은 제어 윈도우 크기이고, σ는 2개의 항의 균형을 맞추기 위한 라그랑쥐 승수(Lagrange multiplier) 또는 가중 파라미터이다.
III. 최적 제어 솔루션
최적 제어 솔루션을 제시하기에 앞서, 목표 스케줄의 설계 원리에 대해 기술한다.
A. 목표 스케줄 설계
도 6은 예시적인 목표 스케줄을 나타낸 그래프이다. 재생 마감 시각과 목표 스케줄 간의 갭은 원하는 클라이언트 버퍼 지속기간(단위: 클라이언트 시간)이다. 스트리밍의 시작에서 갭이 작게 되면 작은 시동 지연이 가능하게 되는 반면, 갭이 시간에 따라 서서히 증가하면 수신기의 지터, 지연 및 처리용량 변화의 억압 능력이 점차적으로 증대된다.
목표 스케줄의 기울기는 평균 코딩 비트 레이트를 평균 도착 레이트에 관련시킨다. tT(n)을 프레임 n에 대한 목표라고 하자. 도 6에 예시된 바와 같이, 프레 임 n에서의 목표 스케줄의 기울기는 다음과 같이 된다.
Figure 112005059723522-PAT00028
상한 tb(n)이 목표 스케줄과 완전히 일치하고(즉, tb(n)=tT(n)) 또, 도착 레이트 ra가 일정한 경우(즉, w(n-1) 항이 없어지는 경우), 수학식 18로부터,
Figure 112005059723522-PAT00029
이 된다.
따라서, 기울기가 작은 경우, 즉 1/v보다 작은 경우, ra/rc는 v보다 크고, 클라이언트 시간의 초당 초 이상의 콘텐츠가 수신되어, 클라이언트 버퍼(클라이언트 시간의 초당 단지 v초의 콘텐츠를 재생함)가 커지게 된다. 시간에 따라 기울기가 1/v에 가까워질 때, ra/rc는 v에 가까워지고 버퍼는 비교적 일정하게 유지되는데(순간 코딩 비트 레이트의 변동으로 인한 변화는 제외함), 그 이유는 콘텐츠가 동일한 속도 v로 수신되어 재생되기 때문이다. 그 다음에, 일반적인 설계 아이디어를 나타내는 2개의 목표 스케줄 함수가 제시된다.
1) 로그 목표 스케줄(Logarithmic Target Schedule)
목표 스케줄 tT을 선택하는 한 방법은 클라이언트 버퍼 지속기간이 시간에 따라 로그적으로 증가하게 하는 것이다. 구체적으로 말하면, td가 재생 마감시각인 경우, 어떤 시작 시각 td0보다 큰 각각의 td에 대해,
Figure 112005059723522-PAT00030
이 된다.
수학식 1에 의하면 td=td0+(τdd0)/v이기 때문에, 이것은 다음과 같이 되고,
Figure 112005059723522-PAT00031
따라서, 프레임 0에서의(td=td0일 때의) 초기 기울기는 s(0)=(1-b)/v이다. b=0.5로 설정하는 것은 초기에 rc/ta=0.5/v임을 암시하며, 그에 따라 클라이언트 버퍼는 처음에 실시간의 2배로 커지게 된다. 게다가, a=0.15로 설정하는 것은 클라이언트 버퍼 지속기간이 v에 상관없이 1분 후에 7.68초, 10분 후에 15.04초, 및 100분 후에 22.68초가 됨을 의미한다.
2) 2-구분 선형 목표 스케줄
목표 스케줄 tT을 선택하는 다른 방법은 클라이언트 버퍼 지속기간이 미디어 시간의 a초에 도달할 때까지 버퍼 지속기간을 클라이언트 시간의 초당 미디어 시간 의 b초의 레이트로 선형적으로 증가하게 하고, 그 이후에는 일정하게 유지하는 것이다. 구체적으로 말하면, 어떤 시작 시각 td0보다 큰 각각의 td에 대해,
Figure 112005059723522-PAT00032
이다.
초기 기울기는 다시 말하지만 s(0)=(1-b)/v이다. b=0.5로 설정하는 것은 처음에 rc/ra=0.5/v임을 의미하며, 이에 따라 클라이언트 버퍼가 처음에 실시간의 2배로 커가게 된다. 게다가, a=10로 설정하는 것은 v에 상관없이 클라이언트 버퍼 지속기간이 클라이언트 시간의 20초 후에 미디어 시간의 10초에 도달하게 됨을 의미한다.
도 7a 및 도 7b는 상기 2가지 목표 스케줄의 그래프를 나타낸 것이다. 알 수 있는 바와 같이, 10초의 클라이언트 버퍼 지속기간이 지터, 지연, 및 네트워크 변동(network fluctuation)에 대해 안전한 레벨인 것으로 생각되는 경우, 2-구분 선형 목표 스케줄은 20초 내에 안전 레벨에 도달하며, 이는 로그 목표 스케줄보다 훨씬 더 빠르다. 한편, 2-구분 선형 목표 스케줄의 기울기는 더 오랫동안 더 낮게 유지되며(따라서 코딩 비트 레이트 및 품질이 더 오랫동안 낮다), 게다가 그의 기울기가 0.5/v에서 1/v로 변하는 20초에서 급격한 변화를 겪는다. 따라서, 비록 제어기 설계에서의 원활성 목적으로 인해 코딩 비트 레이트가 스케줄 자체만큼 급격 하지는 않지만, 코딩 비트 레이트는 로그 목표 스케줄에서와 같이 원활하게 변하지 않는다.
B. 최적 제어기 설계
수학식 18로부터, 코딩 비트 레이트 rc(n)의 관점에서의 버퍼 튜브 상한 tb(n)의 전개에 대해 기술하는 기본적인 상태 천이 방정식을 돌이켜보자.
Figure 112005059723522-PAT00033
여기서, 이제부터 프레임 레이트 f 및 평균 도착 레이트
Figure 112005059723522-PAT00034
가 비교적 일정한 것으로 가정한다. 이 가정으로부터의 편차는 w(n)에 의해 포착된다.
코딩 비트 레이트를 조정함으로써 상한을 제어하는 것이 요망된다. 각각의 프레임이 클라이언트에 도착할 때, 피드백 루프는 코딩 비트 레이트를 조정하기 위해 서버로 메시지를 전송할 수 있다. 그렇지만, 유의할 점은 프레임 n이 클라이언트에 완전히 도착할 때쯤에 프레임 n+1은 이미 서버로부터 스트리밍하기 시작하였다는 것이다. 따라서, 프레임 n+1에 대한 코딩 비트 레이트 rc(n+1)는 시각 ta(n)까지는 이미 결정되어 있어야만 한다. 실제로, 시각 ta(n)에서, 프레임 n+2는 제어기가 코딩 비트 레이트를 결정할 수 있는 가장 빠른 프레임이다. 따라서, 시각 ta(n)에서, 제어기의 일은 rc(n+2)를 선택하는 것이어야만 한다. 피드백 루프에서의 이러한 1-프레임 지연은 명백히 설명되어야만 한다.
간단함을 위해, 목표 스케줄은 프레임 n이 도착하는 시각을 중심으로 선형화되어 있다. 선형화는 특정의 점에서 원래의 목표 스케줄에 접하는 선을 대략적인 목표 스케줄로서 사용하는 것과 동등하다. 따라서,
Figure 112005059723522-PAT00035
무제한으로 증가하는 상한의 변화를 직접 제어하는 것보다는, 안정성을 위해 에러 공간 수식화(error space formulation)가 사용된다. 에러를 다음과 같이 정의하면,
Figure 112005059723522-PAT00036
그 결과,
Figure 112005059723522-PAT00037
Figure 112005059723522-PAT00038
Figure 112005059723522-PAT00039
이로부터,
Figure 112005059723522-PAT00040
Figure 112005059723522-PAT00041
이어서, 제어 입력은 다음과 같이 정의되고,
Figure 112005059723522-PAT00042
여기서,
Figure 112005059723522-PAT00043
은 아마도 rc(n+1)의 양자화된 버전(섹션 IV-D에 정의되어 있음)이며, 외란(disturbance)은 다음과 같이 정의된다.
Figure 112005059723522-PAT00044
그러면, 수학식 33은 다음과 같이 쓸 수 있다.
Figure 112005059723522-PAT00045
따라서, 에러 벡터를 다음과 같이 정의하면,
Figure 112005059723522-PAT00046
시스템의 에러 공간 표현은 다음과 같이,
Figure 112005059723522-PAT00047
즉, 적절한 행렬 Ф, Г 및 Гd에 대해 e(n+1)=Фe(n)+Гu(n)+Гdd(n)로서 표현될 수 있다.
외란 d(n)이 순수 화이트 노이즈(pure white noise)인 것으로 가정하고 또 완전 상태 측정(perfect state measurement)(즉, e(n)의 모든 성분이 추정기를 사용하지 않고 측정될 수 있음)을 가정하면, 외란 d(n)은 제어기 설계에 영향을 미치 지 않는다. 따라서, 수학식 39로 표현된 선형 제어기가 사용될 수 있으며,
Figure 112005059723522-PAT00048
여기서, G는 피드백 이득(feedback gain)이다. 프레임 n이 완전히 수신될 때쯤에, e(n)의 모든 요소가 클라이언트에서 이용가능하며, 따라서 u(n)이 계산될 수 있다. 이어서, 프레임 n+2에 대한 이상적인 코딩 비트 레이트는 수학식 40과 같이 계산될 수 있다.
Figure 112005059723522-PAT00049
최적 선형 제어기를 찾는 것이란 섹션 II-D에 정의된 2차 비용 함수를 최소화하는 피드백 이득 G*을 찾는 것이다. 설계를 계속하기에 앞서, 임의의 프레임 레이트 f에 대한 최대 계수(full rank)를 갖는 시스템 가제어성 행렬(controllability matrix) C
Figure 112005059723522-PAT00050
이 먼저 검사된다. 따라서, 시스템은 완전 가제어(completely controllable)이고, 상태 e(n)는 임의의 바람직한 값으로 조절될 수 있다. 이제, 섹션 II-D에 정의된 비용 함수가 다음과 같음을 상기하자.
Figure 112005059723522-PAT00051
Figure 112005059723522-PAT00052
여기서, Q=CTC(C=[1 0 0]임)이고, R=σ이다. 그러면, 코딩 비트 레이트 변동을 평활화(smooth)(즉, 비용 함수 I를 최소화)하는 동안 목표 스케줄을 추적하는 원래의 제어 문제는 에러 공간에서의 표준 조절기 문제(standard regulator problem)로 변환된다. N→
Figure 112005059723522-PAT00053
으로 하면, 무한 구간(infinite horizon) 최적 제어 문제는 2 단계, 즉 1) S를 얻기 위해 DARE(discrete algebraic Riccati equation, 이산 대수 Riccati 방정식)의 해를 구하는 단계,
Figure 112005059723522-PAT00054
및 2) 최적 피드백 이득을 계산하는 단계에서
Figure 112005059723522-PAT00055
최적의 조절기를 획득하기 위해 [11, 섹션 3.3]에서의 결과를 적용함으로써 해가 구해진다. Q가 비음의 정부호(nonnegative definite)이고 R이 양의 정부호(positive definite)인 경우, S(그에 따라, G*)의 존재성 및 유일성이 보장되며, 이는 이 경우에 입증하기 간편한다.
C. 프레임 레이트
이전의 섹션에서, 프레임 레이트가 일정한 것으로 가정하였다. 이 가정은 오디오가 없는 비디오 등의 단일 매체를 스트리밍할 때 타당하다. 가변 프레임 레이트 비디오는 보통 프레임을 건너뜀으로써 달성되며, 이는 b(n)으로 설정함으로써 처리될 수 있다. 그렇지만, 보통은 비디오 및 오디오가 함께 스트리밍되며, 그의 병합된 코딩 스케줄은 고정 프레임 레이트를 갖지 않을 수 있다. 고정 프레임 레이트 f가 있는 경우에도, 예를 들어 피드백 레이트를 감소시키기 위해 f보다 낮은 레이트로 제어기를 동작시키는 것이 바람직할 수 있다.
이 문제를 해결하기 위해, 실제로 가상 프레임 레이트(virtual frame rate)라는 개념이 사용된다. 가상 프레임 레이트 f가 선택되며, 예를 들어 f=1fps(초당 프레임)이고, 미디어 시간은 크기 1/f의 구간들로 분할되고, 각각의 구간 내에 도착하는 (오디오 및 비디오) 프레임들 모두는 디코딩 및 재생 마감 시각이 구간의 끝이 되는 가상 프레임으로서 모델링된다.
이 방법은 몇가지 이점을 갖는다. 첫째, 이 방법은 전체 피드백 이득(universal feedback gain)의 오프라인 설계를 가능하게 해주며, 이는 스트림 또는 스트림들의 실제 프레임 레이트와는 상관없다. 둘째, 이 방법은 클라이언트로부터 서버로의 피드백의 레이트가 감소될 수 있게 해준다. 그리고, 마지막으로, 가상 프레임들 간의 간격이 일반적으로 RTT(round trip time)보다 안전할 정도로 더 크기 때문에, 에러 공간 모델에서의 1-프레임 지연(이전 섹션에서 설명됨)은 피드백 지연을 모델링하기에 충분하다. 그렇지 않은 경우, 길이 RTT/f의 시프트 레지스터를 사용하여 네트워크 지연을 표현하기 위해 대략 RTT/f개의 부가의 상태 변수를 갖는 피드백 지연을 모델링할 필요가 있다.
본 설명의 나머지에서, 가상 프레임 레이트 f=1fps가 사용되며, 간단히 프레임 레이트라고 한다. 마찬가지로, 가상 프레임은 간단히 프레임이라고 한다.
유의할 점은 본 제어기 설계 원리에서, 버퍼 튜브 상한의 제어 목표로부터의 편차는 σ값을 감소시킴으로써 감소될 수 있다. σ값의 더 작은 값은 비용 함수에서의 편차 항(deviation term)에 대한 비교적 큰 패널티(relative larger penalty)를 의미하며, 따라서 상한이 목표를 더 가깝게 쫓아가도록 만든다. 그렇지만, 이것은 코딩 비트 레이트 평활성을 희생시킨 대가로 일어나는데, 그 이유는 비용 함수에서의 대응하는 항이 더 적게 가중되기 때문이다. σ=500에서 버퍼 튜브 상한이 제어 목표로부터 약간만 벗어나는 동안 코딩 비트 레이트가 바람직하지 않은 변동을 갖는다는 것을 알았다. 한편, 큰 σ 값은 확실히 더 평활한 코딩 비트 레이 트를 제공하지만, 클라이언트 버퍼 언더플로우를 야기할 수 있는데, 그 이유는 버퍼튜브 상한이 제어 목표로부터 상당히 벗어날 수 있기 때문이다. 따라서, σ의 양호한 선택은 이 트레이드-오프를 고려해야만 한다. 본 발명의 시스템 및 프로세스의 검증된 실시예에서, 코딩 비트 레이트가 상향 전환될 때 σ=4000이 선택되었고 하향 전환될 때 σ=2000이 선택되었다. 유의할 점은 클라이언트 버퍼 언더플로우의 가능성을 더 감소시키기 위해 약간 더 공격적인 전략이 후자의 경우에 가능하다는 것이다.
IV. 스트리밍에 있어서의 실제 문제
A. 고속 시동
이전의 섹션에 기술한 바와 같이, 시동 지연은 콘텐츠가 클라이언트에 처음으로 도착하기 시작할 때로부터 재생이 시작될 때까지의 기간의 길이를 말한다. 이 기간 동안, 콘텐츠는 패킷 지터, 재전송 지연, 네트워크 대역폭의 변동, 및 순간 코딩 비트 레이트의 변동을 저지하기 위해 수신기 버퍼에 축적된다. 더 긴 시동 지연이 동적 네트워크 환경에서 연속 재생을 유지할 수 있는 가능성을 증가시킨다는 것은 생각할 수 있다. 한편, 사용자는 시동 지연이 가능한 한 작을 것으로 기대한다. 따라서, 안정성을 유지하면서 시동 지연을 감소시킬 수 있는 기술을 조사하는 것이 바람직하다. 한가지 가능한 방법은 스트리밍의 시작에서 콘텐츠를 정상 레이트(normal rate)보다 더 고속으로 전송하는 것이다. 이 버스팅(bursting) 기술은 확실히 짧은 시간 내에 버퍼 지속기간을 확실히 증대시킨다. 그렇지만, 이 는 이용가능하지 않을 수조차 있는 정상보다 더 높은 초기 대역폭을 요구함으로써 네트워크에 추가의 부담을 준다.
본 발명의 시스템 및 프로세스는 적응적 미디어(adaptive media)의 속성을 이용하는 대안적인 고속 시동(fast startup) 기술을 이용한다. 이전의 섹션에서 기술한 바와 같이, 초기의 코딩 비트 레이트 rc를 도착 레이트 ra(필요한 경우 재생 속도 v로 나눔)의 1/2이 되도록 선택함으로써, 클라이언트 버퍼 지속기간은 재생 동안 실시간의 2배로 증가할 수 있다. 재생 동안 클라이언트 버퍼를 증가시킴으로써 시동 지연이 낮게 될 수 있는데, 그 이유는 버퍼 지속기간이 여전히 낮은 동안 재생이 시작할 수 있기 때문이다. 버퍼 지속기간이 낮은 동안 재생을 시작하는 것은 짧은 기간에 걸쳐서는 특별히 위험하지 않은데, 그 이유는 임의의 짧은 구간 내에 심각한 혼잡이 일어날 확률이 낮기 때문이다. 그렇지만, 긴 구간에서는 심각한 혼잡이 일어날 확률이 높으며, 따라서 긴 기간에 걸쳐서는 버퍼 지속기간이 높은 것이 중요하다. 재생 동안에 버퍼 지속기간을 증가시킬 수 없는 경우, 버퍼 지속기간이 장기간에 걸친 연속 재생을 보장하기 위해 충분히 높을 때까지 시동이 지연되어야만 한다.
게다가, 전송 레이트가 코딩 비트 레이트의 2배인 경우, 시동 지연은 리키 버킷 모델[10]의 속성을 이용함으로써 추가로 감소될 수 있다. 섹션 II-B에서 상세히 기술한 바와 같이, 주어진 비트 스트림에 대한 시동 지연은 스트림이 레이트 R로 전송될 때 D=Fd min(R)/R이 된다. 이것은 스트림을 그의 코딩 비트 레이트로 전 송할 때 통상 Fd min(rc)/rc와 같다. 그렇지만, 스트림을 레이트 ra>rc(rc=0.5ra/v)로 전송하는 경우, 시동 지연은 Fd min(ra)/ra으로 떨어진다. 따라서, 시동 지연 D는 분자가 감소하기 때문에 또 분모가 증가하기 때문에 감소한다.
도 8의 그래프는 R이 rc에서 ra로 변할 때 초기의 디코더 버퍼 충만도 Fd min(R)의 감소를 나타낸 것이다. 상세하게는, 이는 주어진 비트 스트림에 대한 코딩 스케줄은 물론, 튜브 I 및 튜브 II(리크 레이트 rc 및 ra를 갖는 2개의 리키 버킷에 각각 대응하고, 둘다 코딩 스케줄을 포함함)로 표시된 상한 및 하한을 나타낸 것이다. 튜브 II는 튜브 I보다 작은 데 그 이유는 주어진 스트림을 포함하는 리키 버킷의 최소 크기 Bmin(R)가 리크 레이트 R에서 감소하기 때문이다[10]. 이와 마찬가지로, 초기의 디코더 버퍼 충만도 Fmin(R)는 R에서 감소한다[10]. 따라서, 프레임 0에 대한 재생 마감 시각이 클라이언트 시간 t0_Ⅰ=Fd min(rc)/ra 대신에 t0_Ⅱ=Fd min(ra)/ra 정도로 일찍 시작할 수 있다. 그로부터, 재생 마감 시각은 미디어 시간의 초당 클라이언트 시간의 1/v 초로 앞서간다.
B. 제어기 초기화
도 8에 나타낸 바와 같이, 목표 스케줄은 재생 마감 시각과 동시에 시작하고 소정의 함수에 따라 증가한다. 제어기는 튜브 I의 상한을 목표 스케줄에 맞춰 제어하려고 시도한다. 처음에, 튜브 I의 상한은 목표 스케줄보다 높다(또 실제로는 재생 마감 시각보다 높으며, 이것이 안전한 것으로 알려져 있다). 따라서, 재생이 시작될 때, 제어기는 코딩 비트 레이트를 감소시킴으로써 갭을 메우려고 시도한다. 그렇지만, 이것은 바람직하지 않은데, 그 이유는 현재의 코딩 비트 레이트가 이미 도착 레이트보다 낮아 클라이언트 버퍼가 증대될 수 있기 때문이다. 코딩 비트 레이트의 추가의 감소는 적절하지 않다. 이 효과를 피하기 위해, 제어기는 튜브 I의 상한이 목표 스케줄을 초과할 때, 즉 도 8의 점 B에서 초기화된다. 점 B는 해석적으로 찾아낼 수 있지만, 실제로는 그에 대한 해를 명시적으로 구할 필요는 없다. 제어기는 튜브 I의 상한이 목표를 초과하자마자 초기화될 수 있다.
C. 도착 레이트의 지수 평균 구하기(exponential averaging)
(순간 도착 레이트 대신에) 평균 도착 레이트를 사용하는 것은 코딩 비트 레이트 변동을 감소시키는 데 도움이 된다. 이 섹션은 도착 레이트에 대한 새로운 지수 평균 알고리즘에 대해 상세히 기술한다.
Figure 112005059723522-PAT00056
및 r(k)를 각각 패킷 k가 수신될 때 평균 도착 레이트 및 순간 도착 레이트라고 하자. 유의할 점은 제어 동작과는 달리, 레이트 평균 구하기 동작은 모든 프레임의 도착 이후라기 보다는 모든 패킷의 도착 이후에 수행될 수 있다. 따라서, 프레임 인덱스 n보다는 이산 패킷 인덱스(discrete packet index) k가 사용된다. 널리 채택된 지수 가중 이동 평균(exponentially weighted moving average, EWMA)
Figure 112005059723522-PAT00057
을 사용하지 않고, β(k)=β로 일정한 경우, 지수 평균 구하기는 보다 주의깊게 수행된다. 본 알고리즘에서, 인자 β(k)는 일정하지 않고 패킷들의 도착간 갭(inter-arrival gap)에 따라 변한다. 이 새로운 알고리즘은 일정한 β(k)를 갖는 EWMA 알고리즘에 비해 몇가지 이점을 갖는다. 첫째, 평균 도착 레이트
Figure 112005059723522-PAT00058
의 추정치는
Figure 112005059723522-PAT00059
에 의해 아래쪽으로 유계(bounded below)이기 보다는 마지막 패킷 이후의 갭이 무한대로 될 때 자연스럽게 0으로 된다. 둘째, 평균 도착 레이트
Figure 112005059723522-PAT00060
의 추정치는 마지막 패킷 이후의 갭이 0으로 될 때 무한대로 되지 않는다. 이것은 특히 중요한 이유는 패킷이 종종 버스트로 도착하여 극히 높은 순간 도착 레이트를 야기하기 때문이다. 그리고, 마지막으로, 평균 도착 레이트
Figure 112005059723522-PAT00061
의 추정치는 초기 조건이 무한 과거(infinite past)를 나타낸 것처럼 그 초기 조건을 과가중(over-weight)하지 않는다. 이것은 추정의 초기 단계에서 특히 중요하다.
수학식 11에서와 같이, 패킷 k 이후의 순간 도착 레이트는 다음과 같이 정의되고,
Figure 112005059723522-PAT00062
여기서, b(k)는 패킷 k의 크기를 나타내고, ta(k)는 패킷 k의 도착 시각을 나타낸다. 이산 시간 함수 ra(k)는 도 9의 그래프에 나타낸 바와 같이, 이하의 식에 의해 구분적으로 일정한 연속 시간 함수(piecewise constant continuous time function) ra(t)로 확장된다.
Figure 112005059723522-PAT00063
이어서, 함수 ra(t)는 지수 임펄스 응답 αe-αt, t≥0에 의해 필터링되고, 어떤 시상수 1/a에 대해,
Figure 112005059723522-PAT00064
이다.
(여기 및 이 서브섹션의 나머지에서, 도착 시각 ta(k)로부터 첨자가 생략되 어 있다.) 유의할 점은 분모 적분인
Figure 112005059723522-PAT00065
가 1-e-α(t(k))-t(0))로서 표현될 수 있다는 것이다. 이제부터, 분자 적분의 범위는
Figure 112005059723522-PAT00066
및 ra(k) 항으로 된
Figure 112005059723522-PAT00067
에 대한 재귀적 표현식을 얻기 위해 범위 (t(0), t(k-1)] 및 (t(k-1), t(k)]으로 분할되고,
Figure 112005059723522-PAT00068
Figure 112005059723522-PAT00069
여기서,
Figure 112005059723522-PAT00070
이다. 유의할 점은 β(k)는 k가 무한대로 될 때 수치적으로 안정(numerically stable)된다는 것이다. 그렇지만, 갭 δ=t(k)-t(k-1)이 0으로 됨에 따라, 1-β(k)는 0으로 되지만 ra(k)는 무한대로 된다. 그렇지만, 이들의 곱은 잘 동작한다(well behaved). 실제로, 로피탈의 법칙(l'Hopital's rule)을 사용하여, δ→0이 되면,
Figure 112005059723522-PAT00071
Figure 112005059723522-PAT00072
이 된다. 따라서, 수학식 54는 t(k)=t(k-1)인 경우의 업데이트 규칙(update rule)이다.
D. 코딩 비트 레이트가 주어진 경우 스트림의 선택
클라이언트가 코딩 비트 레이트 rc(n)를 요청할 때, 서버는 rc(n)에 거의 같은 코딩 비트 레이트
Figure 112005059723522-PAT00073
를 갖는 스트림(또는 확장 가능 스트림의 서브스트림)을 선택함으로써 승낙한다.
Figure 112005059723522-PAT00074
이 rc(n)와 다를 수 있는 몇가지 이유가 있다. 첫번째 이유는 소단위 확장가능 코딩(fine grain scalable coding)이 사용될지라도 미디어 파일에 단지 유한개의 스트림(또는 서브스트림)이 있다는 것이다. 따라서,
Figure 112005059723522-PAT00075
와 정확히 같은 평균 코딩 비트 레이트를 갖는 미디어 파일 내에 스트림이 없을 수 있다. 두번째 이유는 rc(n)와 정확히 같은 평균 코딩 비트 레이트를 갖는 미디어 파일 내에 스트림이 있을지라도, 그 스트림에 대한 버퍼 튜브가 너무 커서 클라이언트 버퍼 언더플로우의 위험없이 그 스트림으로 전환하지 못할 수 있다. 사실, 스트림이 전환할 때마다, 일반적으로 상한에 불연속이 있으며, 이는 양 또는 음일 수 있다. 상한에서의 양의 천이는 도 10의 그래프에 나타내어져 있으며, 이 천이가 큰 경우 클라이언트 버퍼는 즉각적으로 또는 궁극적으로 언더플로우할 수 있다.
따라서, 서버는 상한이 클라이언트에 의해 서버에 제공된 어떤 양 △maxg(n-1)만큼만 위쪽으로 천이하게 하는 스트림을 선택해야만 한다. 클라이언트는 클라이언트 시간 ta(n-2) 이후에(프레임 n-1이 이미 스트리밍하기 시작한 이후에) 곧바로 그의 피드백으로 서버에 △maxg(n-1)을 rc(n)과 함께 제공한다. 피드백을 수신하면, 서버는
Figure 112005059723522-PAT00076
≤rc(n)가 되도록 가능한 한 높은 코딩 비트 레이트
Figure 112005059723522-PAT00077
를 갖는 스트림을 선택하고,
Figure 112005059723522-PAT00078
인 경우(즉, 레이트의 상향 전환인 경우), gnew(n-1)-gold(n-1)≤△maxg(n-1)이 되며, 여기서 gnew(n-1) 및 gold(n-1)은 도 10에 나타내어져 있다. △maxg(n-1)에 의해 주어진 제약은 레이트의 하향 전환인 경우 적용되지 않는다.
클라이언트는 새로운 코딩 비트 레이트가 실시되고 있는 경우 시각 ta(n-1)에서 상한이 얼마인지(그의 예측)를 제한하기 위해 △maxg(n-1)를 선택한다. 즉,
Figure 112005059723522-PAT00079
Figure 112005059723522-PAT00080
즉, 클라이언트는 tb new(n-1)이 목표 tT(n-1)에서 재생 마감시각 td(n-1)까지의 기간의 단지 일부 p가 되도록 이를 제한하기 위해 △maxg(n-1)를 선택한다. 본 발명의 시스템 및 프로세스의 검증된 실시예에서, p=1/3이 선택된다.
유의할 점은 대체 실시예에서, 서버가 어떤 코딩 비트 레이트를 지원하는지에 관한 정보가 클라이언트에 미리 제공될 수 있으며 또 클라이언트가 상기한 해석을 수행할 책임이 있을 수 있다는 것이다. 이 경우, 클라이언트는 단지 서버에 의해 지원되는 코딩 비트 레이트를 요청할 뿐이며, 요청과 함께 서버에 △maxg(n-1)를 제공할 필요가 없다.
E. 제어 목표 조정
새로운 평균 코딩 비트 레이트
Figure 112005059723522-PAT00081
를 갖는 프레임이 시각 ta(n)에 클라이언트에 도착할 때, 상한의 천이가 있다. 이 천이는 수 초 정도 일 수 있으며, 따라서 무시할 정도가 아니라 제어기에 혼동을 줄 수 있다. 예를 들어, 천이가 상향인 경우, 제어기는
Figure 112005059723522-PAT00082
즉각적으로 코딩 비트 레이트 rc(n+2)를 감소시키려고 시도한다. 반면에, 천이가 하향인 경우, 제어기는 즉각적으로 코딩 비트 레이트 rc(n+2)를 증가시키려고 시도한다. 어느 방법이든지 아마도 좋지는 않으며, 목적은 도착 레이트에 외란이 없는 경우
Figure 112005059723522-PAT00083
가 유지되도록 하는 것이다. 한가지 해결책은 제어 목표 스케줄에
Figure 112005059723522-PAT00084
와 같은 동시적인 천이를 도입하는 것이며, 여기서 △g(n-1)=gnew(n-1)-gold(n-1)은 도 10에 나타낸 바와 같이, 서버에서 계산된 프레임 n-1에서의 상한의 실제 천이(단위: 비트)이다. 서버는 이 값을 프레임 n과 함께 클라이언트로 전송할 수 있다. 스트림 변화가 없는 경우, 이 값은 단지 0이다.
코딩 비트 레이트가 변할 때마다 제어 목표 스케줄이 조정되는 경우, 그 스케줄은 더 이상 설계된 목표 스케줄을 따르지 않는다. 조정된 목표 스케줄은 설계된 목표 스케줄과 구분하기 위해 제어 목표 스케줄(또는 단순히 목표 스케줄)이라고 한다.
물론, 제어 목표 스케줄은 설계된 목표 스케줄에 접근하는 성향을 가져야만 한다. 기본적인 아이디어는 제어 목표 스케줄이 설계된 목표 스케줄보다 위쪽에 있는 경우 그의 기울기를 감소시키고 그 아래쪽에 있을 때는 기울기를 증가시키는 것이다.
로그 목표 스케줄
Figure 112005059723522-PAT00085
의 경우(단, td=td0+(τdd0)/v), 수학식 24에 따르면, 미디어 시간 τd에서의 기울기는 다음과 같이 된다.
Figure 112005059723522-PAT00086
d가 재생 마감 시각과 목표 스케줄 간의 거리로서 정의되는 경우, 즉
Figure 112005059723522-PAT00087
Figure 112005059723522-PAT00088
인 경우, 기울기는 다음과 같이 d의 함수로서 표현될 수 있다.
Figure 112005059723522-PAT00089
따라서, d가 재생 마감시각과 제어 목표 간의 거리일 때마다, 제어 목표의 기울기는 수학식 59에서의 s로 설정된다. 구체적으로 말하면,
Figure 112005059723522-PAT00090
가 천이 후 에 프레임 n에서의 제어 목표인 경우,
Figure 112005059723522-PAT00091
Figure 112005059723522-PAT00092
-s/f로 리셋된다. 이어서, 수학식 37에서의 에러 벡터 e(n)을 계산하기 위해
Figure 112005059723522-PAT00093
Figure 112005059723522-PAT00094
가 tT(n) 및 tT(n-1) 대신에 사용된다. 그 결과의 에러 벡터는 이어서 수학식 40에서의 이상적인 코딩 비트 레이트를 계산하는 데 사용된다.
2-구분 선형 목표 스케줄의 경우, 기울기는 제어 목표 스케줄이 목표 스케줄로 되돌아갈 것으로 예상되는 소정의 기간을 사용함으로써 계산하기가 용이하다. 이어서, 제어 목표 스케줄의 기울기는 거리 d 및 기간으로부터 계산될 수 있다. 본 발명의 시스템 및 프로세스의 검증된 실시예에서, 기간은 50초로 설정되었다.
V. 구현 상세
이 섹션은 송신기측 및 수신기측 양자에 관한 구현 상세에 대해 기술한다.
A. 가상 스트림의 생성
본 발명의 시스템 및 프로세스의 검증된 실시예에서, 소단위 확장가능(fine grained scalable, FGS) 스트림은 일련의 데이터 단위를 포함하며, 그 각각은 데이터 단위가 클라이언트에 의해 수신되는 경우 비트별 왜곡 감소(per-bit decrease in distortion)를 나타내는 라그랑지 승수(Lagrange multiplier) λ로 태깅되어 있다. 데이터 단위에 대한 λ가 임계값을 넘을 때, 데이터 단위는 그 임계값에 대응 하는 가상 스트림에 포함된다. 각각의 임계값은 전체 비트 수에 대응하며, 따라서 가상 스트림에 대한 평균 코딩 비트 레이트에 대응한다. 검증된 실시예에서, N=50개의 가상 스트림이 생성된다. 각각의 스트림에 대한 임계값은 그 결과 얻어지는 스트림이 하한과 상한 간의 로그 도메인에서 균일한 간격으로 있는 코딩 비트 레이트를 갖도록 선택된다.
스트리밍 동안에, 서버가 미디어 파일로부터 데이터 단위를 판독할 때, 서버는 그의 라그랑지 승수 λ가 스트림에 대한 임계값을 넘는 경우 데이터 단위를 현재 전송되고 있는 가상 스트림에 포함시킨다.
B. 송신기에서의 리키 버킷 계산
각각의 가상 스트림에 대해, 리키 버킷 파라미터 (R, Bmin(R), Fd min(R))는 R=Ravg 및 R=Rmax에 대해 오프라인으로 사전 계산되며, 여기서 Ravg=rc는 스트림의 평균 코딩 비트 레이트이고, Rmax=2rc이다. 이들 리키 버킷 파라미터는 프리앰블로 클라이언트로 전송된다.
게다가, 스트리밍 동안에, 서버는 각각의 스트림에 대해 온라인 리키 버킷 시뮬레이션을 수행한다. 구체적으로 말하면, 서버가 미디어 파일로부터 데이터 단위를 판독할 때마다, 서버는 각각의 스트림에 대한 임계값 리스트 및 데이터 단위의 라그랑지 승수를 사용하여 데이터 단위가 속해 있는 가상 스트림을 판정한다. 이어서, 송신기는 수학식 2 및 수학식 3을 사용하여, 판정된 스트림에 대해 평균 코딩 비트 레이트 Ravg와 같은 리크 레이트를 갖는 그 리키 버킷의 상태를 업데이트한다. 프레임 내의 모든 데이터 단위가 미디어 파일로부터 판독되면, 송신기는 가상 스트림 각각에 대한 g(n)=Bmin(Ravg)-Be(n)을 계산한다. 스트림 스위치(즉,
Figure 112005059723522-PAT00095
) 시에, 새로운 스트림에 대한 갭 gnew(n)은 이하에 기술하는 바와 같이, △g(n-1)=gnew(n-1)-gold(n-1)와 함께 클라이언트로 전송된다. 리키 버킷 상태를 업데이트하는 비용이 아주 낮다는 것을 쉽게 알 수 있다. 그렇지만, 이들 값을 사전 계산하여 각각의 데이터 단위와 함께 미디어 파일에 저장하는 것도 가능하다.
C. 초기 코딩 비트 레이트 선택
스트리밍 세션의 시작에서, 송신기는 초기 코딩 비트 레이트(보통은 대역폭의 1/2임)를 선택할 수 있도록 이용가능한 네트워크 대역폭에 대해 얼마간 알 필요가 있다. 대역폭 추정치는 패킷 쌍[12], 경로 첩(path chirp)[3], 기타 등등의 방법을 사용하여 사전 측정으로부터 또는 이력값(history value)에 기초한 사후 근사값(reactive approximation)으로부터 도출될 수 있다. 초기 대역폭 추정의 정확한 형태는 본 문서의 범위를 벗어난다.
D. 코딩 비트 레이트 전환
클라이언트로부터의 레이트 제어 피드백은 피드백이 생성되는 프레임 번호( 예를 들어, 이전의 섹션에서의 n-2) 및 상한의 최대 허용가능 천이(단위: 비트)(예를 들어, 이전의 섹션에서의 △maxg(r-1))를 포함한다. 송신기가 적당한 코딩 비트 레이트를 찾아내고 또 프레임 n에서 전환을 행하는 경우, 송신기는 프레임과 함께 3개의 값, 즉 새로운 코딩 비트 레이트
Figure 112005059723522-PAT00096
, 상한까지의 현재의 갭 gnew(n), 및 천이 △g(n-1)=gnew(n-1)-gold(n-1)을 클라이언트로 전송한다. 이 정보를 가지고, 클라이언트는 그의 제어 목표 스케줄은 물론 그의 상한을 적절히 조정할 수 있다. 유의할 점은 코딩 비트 레이트 전환이 항상 새로운 프레임의 시작에서 일어나며 프레임 내에서는 결코 일어나지 않는다는 것이다.
E. 클라이언트에서의 최적 레이트 제어
새로운 코딩 비트 레이트가 시작할 때마다, 클라이언트는 새로운 프레임과 함께 값 g(n)을 수신한다. 이어서, 연속적인 프레임들에 대한 g(n)의 값은 코딩 비트 레이트
Figure 112005059723522-PAT00097
및 프레임 크기 b(n)에 기초하여 클라이언트 자신에 의해 추론될 수 있다. 클라이언트는 도착 프레임 시각 ta(n)을 기록하고, 버퍼 튜브 상한 tb(n)을 계산하며, 이어서 편차 e(n)를 계산한다. 코딩 비트 레이트 전환이 있는 경우, 클라이언트는 또한 버퍼 튜브 천이를 계산하고 그에 따라 제어 목표 스케줄을 조정한다. 이어서, e(n)이 최적 레이트 제어기에 피드되고, 제어기는 원하는 새로운 코딩 비트 레이트를 출력한다. 규칙적인 간격으로 또는 요구가 있을 시에 생성될 수 있는 피드백 기회가 있을 때마다, 마지막 새로운 코딩 비트 레이트가 다시 송신기로 피드된다.
F. 예시적인 프로세스
이제, 본 발명의 일 실시예에 적용가능한 상기한 시스템의 구현에 대한 예시적인 프로세스가 제공된다.
도 11a 내지 도 11c를 참조하면, 서버는 먼저 지원되는 코딩 비트 레이트 각각에 대해, 지원되는 코딩 비트 레이트에 대응하는 데이터 스트림이 그로부터 스트리밍되는 경우 존재하게 되는 인코더 버퍼의 초기 상태를 정의하는 일련의 파라미터를 계산한다(단계 1100). 데이터 스트림과 연관된 코딩 비트 레이트, 데이터 스트림의 코딩 비트 레이트에서 이용되는 인코더 버퍼의 크기, 및 데이터 스트림의 코딩 비트 레이트에서 표시되는 초기 인코더 버퍼 충만도를 나타내는 값을 포함하는 이들 파라미터는 스트리밍 미디어 데이터의 프리앰블로 클라이언트에 제공된다(단계 1102). 이어서, 서버는 시동 기간 동안에 소정의 초기 코딩 비트 레이트로 미디어 데이터를 클라이언트로 스트리밍한다(단계 1104). 데이터가 스트리밍될 때, 서버는 서버에 의해 지원되는 각각의 코딩 비트 레이트에 대해 생성된 각각의 프레임에 대한 상한 갭을 계산한다(단계 1106). 처음에, 클라이언트는 인코더 버퍼 파라미터를 이용하여 장래의 프레임에 대한 새로운 최적의 코딩 비트 레이트를 프레임별로 결정한다(단계 1108). 게다가, 클라이언트는 장래의 프레임 바로 이전에 서버에 의해 생성된 프레임에 대한 상기한 최대 허용가능 차이값, 즉 최대 천이값을 계산한다(단계 1110). 클라이언트의 디코더 버퍼가 초기 코딩 비트 레이트에서 언더플로우 상태가 일어나지 않도록 보장하는 데 필요한 최소량의 데이터를 그 안에 가지자마자 클라이언트는 또한 그가 수신한 프레임의 재생을 시작하고 또 그 후에 수신된 각각의 프레임을 계속하여 재생한다(단계 1112). 게다가, 상기한 시동 기간에 끝나면, 클라이언트는 장래의 프레임부터 시작하여, 스트리밍 미디어 데이터가 결정된 최적 코딩 레이트에 대응하는 새로운 코딩 비트 레이트로 제공되도록 요청하고, 그 요청과 함께 최대 천이값을 제공한다(단계 1114).
서버는 클라이언트에 의해 요청된 최적의 코딩 비트 레이트와 같은 지원되는 코딩 비트 레이트, 또는 같은 것이 없는 경우 그에 가장 가까운 작은쪽 레이트를 찾아낸다(단계 1116). 그 다음에 찾아낸 지원되는 코딩 비트 레이트가 클라이언트 요청에서 지정된 프레임 바로 이전에 생성된 프레임과 연관된 코딩 비트 레이트보다 낮은지 또는 높은지가 서버에 의해 판정된다(단계 1118). 더 낮은 경우, 서버는 클라이언트 요청에서 지정된 프레임 바로 이전에 생성된 프레임에 대한 상기한 천이값을 계산하고(단계 1120), 클라이언트에 의해 지정된 프레임부터 시작하여 모든 장래의 프레임을 발견된 지원되는 레이트로 생성하여 이를 계산된 상한 갭 및 천이값, 및 새로운 코딩 비트 레이트의 표시와 함께 클라이언트로 스트리밍한다(단계 1122). 그렇지만, 발견된 지원되는 코딩 비트 레이트가 더 높은 경우, 서버는 클라이언트 요청에서 지정된 프레임 바로 이전에 생성된 프레임에 대한 천이값을 계산하고(단계 1124), 이어서 천이값이 클라이언트 요청에서 제공된 최대 천이값보 다 작거나 같은지를 판정한다(단계 1126). 천이값이 최대 천이값보다 작거나 같은 경우, 서버는 클라이언트에 의해 지정된 프레임부터 시작하여 모든 장래의 프레임을 발견된 지원되는 코딩 비트 레이트로 생성하고 이를 계산된 상한 갭 및 천이값, 및 새로운 코딩 비트 레이트의 표시와 함께 클라이언트로 스트리밍한다(단계 1122). 그렇지만, 천이값이 최대 천이값보다 큰 경우, 그 다음으로 낮은 지원되는 코딩 비트 레이트가 발견되고(단계 1128), 단계 1118 내지 단계 1128이 반복된다.
클라이언트는 새로운 코딩 비트 레이트로 이제 막 수신된 첫번째 프레임과 연관된 현재 스케줄링된 목표 도착 시각을 제공된 천이값만큼 천이시키고 또 장래의 프레임에 대한 현재 스케줄링된 목표 도착 시각이 모두 그 프레임에 대한 이전의 목표 도착 시각에 어떤 기간에 걸쳐 접근하고 또 궁극적으로 그와 일치하도록 이를 천이시킨다(단계 1130). 이어서, 클라이언트는 서버에 의해 제공된 인코더 버퍼 파라미터 및 상한 갭 값을 이용하여 장래의 프레임에 대한 새로운 최적의 코딩 비트 레이트를 결정하고 장래의 프레임 바로 이전에 서버에 의해 생성된 프레임에 대한 최대 천이값을 계산한다(단계 1132). 클라이언트는 스트리밍 미디어 데이터가 클라이언트에 의해 지정된 장래의 프레임부터 시작하여 결정된 최적의 코딩 레이트에 대응하는 새로운 코딩 비트 레이트로 제공되도록 요청하고 또 계산된 최대 천이값을 제공한다(단계 1134). 이어서, 스트리밍 미디어 데이터 전송 동안에 단계 1116 내지 단계 1134가 반복된다.
VI. 다중 비트 레이트 스트리밍(Multiple Bit Rate Streaming)
다중 비트 레이트(MBR) 스트리밍은 상업용 스트리밍 미디어 시스템에서 널리 사용되는 네트워크 적응형 기술이다. MBR 스트리밍에서는, 확장가능 스트리밍과는 달리, 콘텐츠가 서로 다른 코딩 비트 레이트의 몇개의(일반적으로 5-7개) 독립적인 스트림으로 인코딩된다. 종종, 각각의 스트림은 통상의 유형의 네트워크 연결(예를 들어, 다이얼-업, DSL, 케이블)에 대해 최적화되어 있다. MBR 스트리밍 세션 동안, 무정지 재생의 조건 하에서 가능한 최대 품질을 달성하기 위해, 적당한 코딩 비트 레이트가 이용가능한 네트워크 대역폭에 기초하여 동적으로 선택된다. MBR 스트리밍이 확장가능 스트리밍과 유사하다는 것은 용이하게 알 수 있다. 실제로, MBR 스트리밍은 제한된 수의 이용가능한 코딩 비트 레이트를 갖는 확장가능 스트리밍의 특수 경우로 볼 수 있다. 따라서, 상기한 최적 제어 방법이 이 경우에 적용가능하게 된다.
그렇지만, 주의하여 대처할 필요가 있는, MBR 스트리밍을 복잡하게 만드는 몇가지 차이점이 있다. 첫째, 바로 전에 언급한 바와 같이, MBR 스트리밍에서는, 단지 제한된 수의 이용가능한 코딩 비트 레이트가 있다. 원하는 코딩 비트 레이트의 이러한 거친 양자화(coarse quantization)는 폐루프 시스템에 상당한 비선형성을 도입시킨다. 실제로, 이용가능한 코딩 비트 레이트들 간의 갭이 크면 진동을 가져온다. 예를 들어, 2개의 이웃하는 코딩 비트 레이트가 일정한 도착 레이트의 위아래쪽에 있는(straddle) 경우, 제어기는 클라이언트 버퍼를 목표 레벨에 유지시키기 위해 2개의 코딩 비트 레이트 간을 진동하게 된다.
둘째, MBR 스트리밍에서, 코딩 비트 레이트는 아무 때라도 전환될 수 있다. 실제, 서버가 새로운 스트림으로 전환될 수 있기 전에, 서버는 5초 또는 10초 떨어져 있을 수 있는, 새로운 스트림에서의 그 다음 무결점 지점(clean point)(예를 들어, I 프레임)을 기다려야만 할 수 있다. 따라서, 이전의 코딩 비트 레이트는 새로운 코딩 비트 레이트로 변화하기 이전에 얼마 동안 계속될 수 있다. 제어기의 관점에서 볼 때, 이러한 긴 랜덤한 부가의 지연은 폐루프 시스템을 불안정하게 하는 경향이 있다.
마지막으로 셋째, MBR 스트리밍에서, 서버 성능 문제가 중요하다. MBR 스트리밍을 사용하는 상업용 스트리밍 미디어 시스템이 그렇게 하는 이유는 확장가능 스트리밍에 비해 서버에 가해지는 계산 부하가 최소이기 때문이다. 따라서, MBR 스트리밍에 있어서, 거의 모든 계산 및 상태 유지를 클라이언트 측에 보관시키는 것이 중요하다. 상세하게는, 서버는 각각의 스트림에 대해 리키 버킷 정보를 업데이트할 수 없게 된다. 그 대신에, 클라이언트는 이 정보를 추정하고 유지하기 위한 어떤 메카니즘을 사용해야만 한다.
A. 보수적 상향 전환(Conservative Up-Switching)
이 서브섹션에서, 제어 시스템을 안정화시키고 또 안정 상태 진동을 적어도 1분의 기간으로 감소시키는 데 도움을 주는 기술에 대해 기술된다. 이 기술에서는, 고속 하향 전환이 허용된다. 사실, σ의 값은 2000에서 500으로 감소되고 고속 스위칭 응답에 유리하게 코딩 비트 레이트의 응답성과 평활성 간의 균형을 변화시킨다. 그렇지만, 보수적 상향 전환만이 허용된다. 보수적 상향 전환은 코딩 비 트 레이트의 잘못된 변경이 일어나지 않도록 보장해주고 또 코딩 비트 레이트의 진동이 낮은 주파수를 갖도록 보장해준다. 구체적으로는, 보수적 상향 전환은 2개의 인접하지만 간격이 넓은 MBR 코딩 비트 레이트(하나는 도착 레이트 위쪽에 있고 하나는 도착 레이트 아래쪽에 있음) 간의 진동을 감소시킨다.
한 실시예에서, 보수적 상향 전환은 코딩 비트 레이트를 단지 도착 레이트로 제한시키는 보수적 한계를 설정한다. 그렇지만, 다른 실시예에서, 보수적 상향 전환을 지원하는 방법은 코딩 비트 레이트가 도착 레이트보다 얼마나 높게 상승될 수 있는지에 관하여 보수적 한계를 설정하는 것이다. 현재의 코딩 비트 레이트가 도착 레이트 이하이고 또 클라이언트 버퍼 지속기간이 그의 목표 레벨을 넘어 증가하기 시작하는 경우, 새로운 코딩 비트 레이트가 보수적 한계 이하일 때에만, 코딩 비트 레이트는 도착 레이트를 넘는 새로운 코딩 비트 레이트로 상향 전환될 수 있다. 클라이언트 버퍼 지속기간이 목표 레벨에서 시작할 때, 보수적 한계는 도착 레이트와 같다. 그렇지만, 클라이언트 버퍼 지속기간이 증가함에 따라, 보수적 한계도 역시 증가한다. 따라서, 현재의 코딩 비트 레이트가 도착 레이트 이하이고 또 그 다음으로 더 높은 코딩 비트 레이트가 도착 레이트를 넘는 경우, 보수적 한계가 더 높은 코딩 비트 레이트를 넘어 상승하도록 클라이언트 버퍼 지속기간이 충분히 증가한 후에만 그 다음으로 더 높은 코딩 비트 레이트로 상향 전환하는 것이 가능하게 된다. 코딩 비트 레이트가 더 높은 코딩 비트 레이트로 상향 전환되었으면, 그 때 코딩 비트 레이트가 도착 레이트를 넘기 때문에, 클라이언트 버퍼는 배출하기(drain) 시작한다. 궁극적으로, 버퍼가 다시 그의 목표 레벨 이하에서 배출 하고 있으면, 제어기는 신속하게 코딩 비트 레이트를 다시 도착 레이트 이하의 코딩 비트 레이트로 하향 전환시킨다.
현재의 클라이언트 버퍼 지속기간이 주어진 경우, 보수적 한계는 코딩 비트 레이트가 이 값에서 새로운 코딩 비트 레이트로 상향 전환되는 경우 클라이언트 버퍼가 목표 레벨까지 다시 배출하는데 적어도 △t초의 클라이언트 시간이 걸리도록 하는 값으로 설정된다. 따라서, 이 메카니즘은 진동의 주기가 적어도 △t초가 되도록 보장한다. 본 발명의 시스템 및 프로세스의 검증된 실시예에서, △t는 60초로 설정된다.
도 12는 보수적 한계가 어떻게 계산되는지를 나타낸 것이다. △τ1을 코딩 비트 레이트가 rc old에서 rc new로 상향 전환되는 순간의 클라이언트버퍼 지속기간(단위: 미디어 시간)이라고 하자. 따라서, △τ1은 새로운 코딩 비트 레이트로 콘텐츠가 소모되기 시작하기 전에, 이전의 코딩 비트 레이트 rc old로 소모되는 콘텐츠의 초 수(number of seconds)이다. (간략함을 위해, 전환 시의 클라이언트 버퍼 내의 모든 콘텐츠가 레이트 rc old로 코딩되어 있는 것으로 가정함) △τ2를 클라이언트 버퍼 지속기간이 목표 레벨 △τT보다 더 큰 어떤 레벨 △τ3초(단위: 미디어 시간)까지 떨어지기 전에 새로운 코딩 비트 레이트 rc new로 소모되는 콘텐츠의 초 수라고 하 자. 이 단계의 지속기간은 전환 이후의 총 시간이 정확히 △t=(△τ1+△τ2)/v초(단위: 클라이언트 시간)가 되도록 결정된다. 이제, 이 시간 내에 도착하는 비트 수는 ra△t=rc new(△τ2+△τ3)≥rc new(△τ2+△τT)=rc new(v△t-△τ1+△τT), 또는
Figure 112005059723522-PAT00098
이고, 여기서 △τT는 목표 버퍼 지속기간(단위: 클라이언트 시간)이다. 파라미터 △t는 원하는 동작을 제공하도록 조정될 수 있다. △t가 크면 상향 전환이 더욱 보수적이 됨을 의미하는 반면, △t가 작으면 상향 전환이 더욱 신속하게 됨을 의미한다. 검증된 실시예에서, △t는 60초로 설정되고, △t는 일반적으로 약 10초이다.
B. 버퍼 튜브 상한 추정
섹션 V-D에서, 코딩 비트 레이트의 각각의 변경의 시작에서 서버가 3개의 값, 즉 새로운 코딩 비트 레이트
Figure 112005059723522-PAT00099
, 상한까지의 현재의 갭 gnew(n), 및 제어 목표 천이 △g(n-1)=gnew(n-1)-gold(n-1)을 클라이언트로 전송하는 것으로 기술하였다. 서버는 각각의 코딩 비트 레이트에 대해 리키 버킷 시뮬레이터를 실행함으로써 뒤쪽 2개의 값을 계산한다. 클라이언트는 새로운 코딩 비트 레이트에 대해 그 자신의 리키 버킷 시뮬레이터를 실행함으로써 계속하여 새로운 코딩 비트 레이트에 대한 g(n)을 업데이트한다. 즉, 초기 조건 Fe(n)=B-b(n)-gnew(n)부터 시작하여, 각각의 연속적인 프레임에 대해, 클라이언트는 수학식 61 및 수학식 62를 계산하며,
Figure 112005059723522-PAT00100
Figure 112005059723522-PAT00101
여기서,
Figure 112005059723522-PAT00102
은 수학식 2, 3 및 4에서와 같이 순간 프레임 레이트이다. 이로부터, 클라이언트는 각각의 프레임에 대해, 수학식 64를 계산할 수 있다.
Figure 112005059723522-PAT00103
그렇지만, 서버가 리키 버킷을 시뮬레이션할 수 없고 또 gnew(n)을 클라이언트로 전송할 수 없는 경우, 클라이언트는 자체적으로 이 정보를 추정해야만 한다. 이 경우, 클라이언트가 gnew(n)를
Figure 112005059723522-PAT00104
등의 상한으로서 추정하는 것이 추천된다. 이어서, 초기 조건
Figure 112005059723522-PAT00105
(이 경우, 0임)에서 시작하여, 각각의 연속적인 프레임에 대해, 클라이언트는 수학식 65, 66 및 67을 계산한다.
Figure 112005059723522-PAT00106
Figure 112005059723522-PAT00107
Figure 112005059723522-PAT00108
추론에 의해,
Figure 112005059723522-PAT00109
,
Figure 112005059723522-PAT00110
Figure 112005059723522-PAT00111
임을 쉽게 알 수 있다. 게다가, 이들 경계 각각은 δ(n)>0일 때마다, 즉 수학식 66에서 Fe(n+1)이 0으로 클리핑될 때마다,
Figure 112005059723522-PAT00112
만큼 더 엄격하게 된다. 사실, 충분한 시간이 주어지면, 이들은 궁극적으로 엄격하게 될 수 있다.
유의할 점은 경계가 δ(n)>0만큼 엄격해질 때마다, 제어 목표가
Figure 112005059723522-PAT00113
( 단, △g(n)=-δ(n)임)만큼 천이되어야만 한다는 것이다. 게다가, n이 새로운 코딩 비트 레이트의 첫번째 프레임일 때마다, 제어 목표는
Figure 112005059723522-PAT00114
(단,
Figure 112005059723522-PAT00115
임)만큼 천이되어야만 한다. 여기서,
Figure 112005059723522-PAT00116
는 하나의 추가의 단계를 위해, 즉 n이 새로운 코딩 비트 레이트의 첫번째 프레임인 경우, 수학식 65, 66 및 67을 실행함으로써 결정될 수 있다.
Figure 112005059723522-PAT00117
Figure 112005059723522-PAT00118
Figure 112005059723522-PAT00119
Figure 112005059723522-PAT00120
인 경우, 수학식 68에서 계산된 바와 같이
Figure 112005059723522-PAT00121
임은 쉽게 알 수 있다.
VII. 송신기 구동 스트리밍(Sender-Driven Streaming)
이전의 설명에서는 스트림 또는 그의 비트 레이트를 전반적인 조건들에 적응시키기 위한 제어 프로세스가 클라이언트 내에 위치하는 것으로 가정하였다. 이것은 수신기 구동 스트리밍(receiver-driven streaming)이라고 하는데 그 이유는 클 라이언트(즉, 수신기)가 결정을 하고 서버(즉, 송신기)에 통지하기 때문이다. 그렇지만, 제어 프로세스가 송신측에서 동작하는 송신기 구동 스트리밍도 가능함은 명백하다. 예를 들어, 스트리밍 미디어 데이터의 전송을 위해 TCP를 사용하여, 각각의 프레임의 도착 시각을 측정하고 도착 레이트를 추정하는 제어 프로세스가 클라이언트에서 동작하지 않고, 각각의 프레임의 전송 시각을 측정하고 전송 레이트를 추정하는 제어 프로세스가 서버에서 동작할 수 있다. TCP를 사용하면, 프레임의 전송 시각은 그의 도착 시각과 거의 동일하고, 이와 마찬가지로, 전송 레이트는 그의 도착 레이트와 거의 동일하며, 따라서 이들은 상호 교환적으로 사용될 수 있다. 일반적으로, 패킷의 전송 시각 또는 도착 시각은 타임 스탬프라고 할 수 있다. 송신기 구동 스트리밍에서, 서버는 서버가 이미 전송한 것이 무엇인지를 알고 있고 또 전송된 프레임에 대한 재생 시각을 알고 있음으로써 클라이언트 버퍼의 상태를 추론할 수 있다. 송신기 구동 스트리밍은 클라이언트와 서버 간에 제어 정보를 전달하는 오버헤드를 감소시키지만, 서버 상에서의 계산상의 부담을 증가시킨다. 어떤 상황에서, 이것은 바람직한 트레이트-오프일 수 있다.
당업자라면 제어 알고리즘이 클라이언트가 아닌 서버 또는 다른 장소에 존재하는 경우에 맞도록 본 명세서에 기술된 프로토콜을 적절히 수정하는 것이 가능함을 잘 알 것이다.

Claims (46)

  1. 컴퓨터 네트워크를 통해 서버로부터 클라이언트로 전송되는 스트리밍 미디어 데이터의 코딩 비트 레이트를 제어하는 컴퓨터 구현 프로세스로서,
    선형 2차 제어 기술을 이용하여 계속적으로 스트리밍 미디어 데이터에 대한 현재의 코딩 비트 레이트를 설정하는 단계 - 상기 현재의 코딩 비트 레이트는 클라이언트에 의한 스트리밍 미디어 데이터의 재생의 중단을 가져오게 될 언더플로우 상태의 가능성을 감소시키기 위해, 서버로부터 스트리밍 미디어 데이터를 수신하는 데 사용되는 클라이언트의 디코더 버퍼를 원하는 지속기간 레벨까지 충만된 상태로 여전히 유지시키면서 스트리밍 미디어 데이터의 고품질 재생을 제공하는 것으로 추정됨 -, 및
    설정된 각각의 코딩 비트 레이트를 사용하여 스트리밍 미디어 데이터에 대한 레이트를 제어하는 단계를 포함하는 프로세스.
  2. 제1항에 있어서,
    상기 현재의 코딩 비트 레이트를 설정하는 단계는,
    클라이언트 버퍼 레벨을 원하는 목표 레벨에 근사하게 유지시킬 것으로 추정되는 코딩 비트 레이트를 프레임별로 결정하는 단계, 및
    코딩 비트 레이트 추정치가 마지막 설정된 레이트에 대해 원하는 정도 보다 많이 변하지 않을 것으로 판정되는 경우에만 새로운 코딩 비트 레이트를 설정하는 단계를 포함하는 프로세스.
  3. 제2항에 있어서,
    클라이언트 버퍼 레벨은 추정된 코딩 비트 레이트에서 스트리밍 미디어 데이터의 리키 버킷 모델(leaky bucket model)에 의해 결정되는 프로세스.
  4. 제3항에 있어서,
    클라이언트 버퍼를 원하는 레벨에 근사하게 유지시킬 것으로 추정되는 코딩 비트 레이트를 프레임별로 결정하는 단계는, 고려 중인 프레임의 추정된 가장 늦은 예상 도착 시각과 소정의 목표 도착 시각 간의 차이를 감소시키는 코딩 비트 레이트를 식별하는 단계를 포함하는 프로세스.
  5. 제4항에 있어서,
    클라이언트 버퍼를 원하는 레벨에 근사하게 유지시킬 것으로 추정되는 코딩 비트 레이트를 프레임별로 결정하는 단계는, 2차 비용 함수(quadratic cost function)를 사용하여 코딩 비트 레이트의 변화를 소정의 정도까지 감소시키는 단계를 포함하는 프로세스.
  6. 제5항에 있어서,
    고려 중인 프레임의 가장 늦은 예상 도착 시각을 추정하는 단계는,
    고려 중인 프레임의 바로 앞에 있는 프레임이 현재의 코딩 비트 레이트를 나타내는 경우 그와 연관된 가장 늦은 예상 도착 시각을 재추정하는 단계, 및
    상기 재추정된 시각을, 현재의 코딩 비트 레이트를 프레임의 추정된 도착 레이트와 현재의 순간 프레임 레이트의 곱으로 나눈 것에 가산하는 단계를 포함하는 프로세스.
  7. 제6항에 있어서,
    고려 중인 프레임의 바로 앞에 있는 프레임과 연관된 가장 늦은 예상 도착 시각을 재추정하는 단계는, 클라이언트에 의해 측정된 상기 바로 앞의 프레임의 실제 도착 시각을, 상기 바로 앞의 프레임에 대한 서버의 인코더 버퍼의 상한 갭(upper bound gap)을 상기 바로 앞의 프레임과 연관된 추정된 도착 레이트로 나눈 것에 가산하는 단계를 포함하며,
    프레임의 상한 갭은 프레임이 서버의 인코더 버퍼에 완전히 입력된 후에 인코더 버퍼에 현재 포함되 있는 비트에 더하여 인코더 버퍼가 포함할 수 있는 데이터 비트의 수로서 정의되는 프로세스.
  8. 제7항에 있어서,
    현재의 코딩 비트 레이트를 설정하는 단계는 클라이언트에 의해 달성되고, 클라이언트는 인코더 버퍼의 상태에 관해 서버로부터 수신된 정보에 기초하여 고려 중인 프레임의 가장 늦은 예상 도착 시각을 추정하는 프로세스.
  9. 제8항에 있어서,
    서버로부터 수신된 정보는, 클라이언트에 의해 현재의 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임의 일부로서, 수신되고 있는 스트리밍 미디어 데이터의 현재의 코딩 비트 레이트를 포함하는 프로세스.
  10. 제9항에 있어서,
    클라이언트에 의해 수신되는 각각의 프레임에 대한 상한 갭을 추정하는 단계를 더 포함하며,
    상기 추정하는 단계는,
    마지막 수신된 프레임이 인코더 버퍼에 배치된 후에 인코더 버퍼 충만도 값이 얼마가 될지를, 마지막 수신된 프레임의 삽입 이전의 인코더 버퍼 충만도의 마지막 계산된 값과 그 마지막 수신된 프레임의 크기의 합으로서 계산하는 단계 - 스트리밍 미디어의 현재의 코딩 비트 레이트로 클라이언트에 의해 수신되는 첫번째 프레임과 연관된 마지막 수신된 프레임의 삽입 이전의 인코더 버퍼 충만도 값은 그의 실제 값과 상관없이 0인 것으로 가정되고, 또한 현재의 코딩 비트 레이트로 클라이언트에 의해 수신되는 각각의 후속 프레임과 연관된 마지막 수신된 프레임의 삽입 이전의 인코더 버퍼 충만도 값은, 마지막 수신된 프레임의 삽입 이후의 인코더 버퍼 충만도의 마지막 계산된 값과 코딩 비트 레이트를 순간 프레임 레이트로 나눈 것 간의 차이 또는 0 중에서 어느 쪽이든 더 큰 것으로 간주되며, 순간 프레 임 레이트는 수신될 그 다음 프레임의 스케줄링된 재생 시각에서 마지막 수신된 프레임의 스케줄링된 재생 시각을 뺀것의 역수와 동일한 것임 - 및
    마지막 수신된 프레임과 연관된 상한 갭을, 인코더 버퍼 크기에서 마지막 수신된 프레임의 삽입 후의 인코더 버퍼 충만도의 마지막 계산된 값을 뺀 것으로서 계산하는 단계를 포함하는 프로세스.
  11. 제10항에 있어서,
    인코더 버퍼 크기는 코딩 비트 레이트에 따라 변하며, 서버로부터 이용가능한 모든 코딩 비트 레이트에 대한 스트리밍 미디어 데이터의 프리앰블로서 클라이언트에 의해 서버로부터 수신되는 프로세스.
  12. 제10항에 있어서,
    바로 앞의 프레임과 다른 코딩 비트 레이트를 갖는 프레임이 클라이언트에 의해 수신될 때마다,
    이제 막 수신된 프레임과 연관된 현재 스케줄링된 목표 도착 시각을 천이값(shift value)만큼 천이시키는 단계 - 상기 천이값은 프레임의 상한 갭과 프레임이 바로 앞의 코딩 비트 레이트로 코딩되어 있는 경우 그 프레임과 연관될 상한 갭 간의 차이를 나타냄 - ,
    장래의 프레임들에 대한 현재의 스케줄링된 목표 도착 시각을, 소정 기간에 걸쳐 상기 장래의 프레임들에 대한 이전의 목표 도착 시각에 집합적으로 접근하고 또 결국에는 그와 일치하도록 천이시키는 단계, 및
    마지막 수신된 프레임의 삽입 이후의 인코더 버퍼 충만도 값과, 현재의 코딩 비트 레이트를 프레임 레이트로 나누고 이어서 마지막 수신된 프레임과 연관된 추정된 도착 레이트로 나눈 것 간의 차이만큼, 각각의 천이된 프레임을 천이시키는 단계를 더 포함하는 프로세스.
  13. 제12항에 있어서,
    프레임이 바로 앞의 코딩 비트 레이트로 코딩되어 있는 경우 그 프레임과 연관될 상한 갭은 인코더 버퍼 크기에서 마지막 수신된 프레임의 삽입 이후의 인코더 버퍼 충만도 값에 대한 마지막 계산된 값을 뺀 것으로서 계산되고,
    마지막 수신된 프레임의 삽입 이후의 인코더 버퍼 충만도 값은 마지막 수신된 프레임의 삽입 이전의 인코더 버퍼 충만도 값의 마지막 계산된 값과 그 마지막 수신된 프레임의 크기의 합으로서 계산되며,
    마지막 수신된 프레임의 삽입 이전의 인코더 버퍼 충만도 값은, 마지막 수신된 프레임보다 앞서 수신된 프레임의 삽입 이후의 인코더 버퍼 충만도에 대해 계산된 값과 바로 앞의 코딩 비트 레이트를 마지막 수신된 프레임보다 앞서 수신된 프레임과 연관된 순간 프레임 레이트로 나눈 것 간의 차이 또는 0 중에서 어느 쪽이든 더 큰 것으로서 계산되는 프로세스.
  14. 제8항에 있어서,
    서버로부터 수신된 정보는,
    클라이언트에 의해 현재의 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임의 일부로서 수신되고 있는 스트리밍 미디어 데이터의 현재의 코딩 비트 레이트, 및
    모든 프레임의 일부로서 수신되는 현재의 상한 갭을 포함하는 프로세스.
  15. 제8항에 있어서,
    서버로부터 수신되는 정보는,
    클라이언트에 의해 현재의 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임의 일부로서 수신되고 있는 스트리밍 미디어 데이터의 현재의 코딩 비트 레이트, 및
    현재의 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임과 연관된 현재의 상한 갭을 포함하며,
    상기 현재의 상한 갭은 또한 상기 시퀀스의 첫번째 프레임의 일부로서 수신되는 프로세스.
  16. 제15항에 있어서,
    서버로부터 수신되는 정보는 바로 앞의 프레임과 다른 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임의 일부로서 수신되는 천이값을 더 포함하며,
    상기 천이값은 클라이언트에 의해 수신되는 바로 앞의 프레임이 현재의 코딩 비트 레이트로 코딩된 경우 그 프레임과 연관될 상한 갭과 이전의 코딩 비트 레이트로 코딩된 바로 앞의 프레임과 실제로 연관된 상한 갭 간의 차이를 나타내는 프로세스.
  17. 제16항에 있어서,
    바로 앞의 프레임과 다른 코딩 비트 레이트를 갖는 프레임이 클라이언트에 의해 수신될 때마다, 이제 막 수신된 프레임과 연관된 현재의 스케줄링된 목표 도착 시각을 천이값만큼 천이시키고, 장래의 프레임들에 대한 현재의 스케줄링된 목표 도착 시각을, 소정 기간에 걸쳐 상기 장래의 프레임들에 대한 이전의 목표 도착 시각에 집합적으로 접근하고 결국에는 그와 일치하도록 천이시키는 단계를 더 포함하고,
    목표값의 상기 천이는 클라이언트가 프레임의 도착 레이트의 변화보다는 이전의 코딩 비트 레이트와 새로운 코딩 비트 레이트 간의 상한 갭의 천이에 기초하여 새로운 코딩 비트 레이트를 설정하려고 시도하지 못하도록 하기 위해 수행되는 프로세스.
  18. 제15항에 있어서,
    현재의 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임이 아닌, 클라이언트에 의해 수신된 각 프레임에 대해, 상한 갭을 추정하는 단계를 더 포함하는 프로세스.
  19. 제6항에 있어서,
    스트리밍 미디어 데이터의 프레임의 추정된 도착 레이트를 계산하는 단계는, 현재 수신된 패킷 바로 앞의 패킷에 대해 계산된 추정 도착 레이트와 제1 부분 가중 인자(fractional weighting factor)의 곱과 현재 수신된 패킷의 순간 도착 레이트와 제2 부분 가중 인자의 곱의 합산을, 패킷별로 계산하는 단계를 포함하고,
    상기 부분 가중 인자들 중 적어도 하나는 상수가 아니라 그 대신에 패킷들 간의 시간에 기초하는 프로세스.
  20. 제5항에 있어서,
    고려 중인 프레임의 추정된 가장 늦은 예상 도착 시각과 소정의 목표 도착 시각 간의 차이를 감소시키면서 동시에 코딩 비트 레이트의 변화를 소정의 정도까지 감소시키는 코딩 비트 레이트를 식별하는 단계는, 고려 중인 프레임에 대한 소정의 목표 도착 시각을, 그 프레임에 대한 스케줄링된 재생 시각보다 소정의 시간만큼 더 이르게 되도록 선택하는 단계를 포함하는 프로세스.
  21. 제20항에 있어서,
    고려 중인 프레임에 대한 소정의 목표 도착 시각을 선택하는 단계는, 프레임의 실제 도착 시각이 그의 목표 도착 시각 이후가 되도록 야기할 수 있는 네트워크 지터, 지연 및 처리용량 변화로 인해 프레임이 그의 스케줄링된 재생 시각 이후에 도착하게 되는 일이 없도록, 상기 소정의 시간을 시동 기간 이후에 충분히 크게 하는 단계를 포함하는 프로세스.
  22. 제21항에 있어서,
    고려 중인 프레임에 대한 소정의 목표 도착 시각을 선택하는 단계는, 스트리밍 미디어 데이터가 클라이언트에 의해 수신되기 시작할 때와 첫번째 프레임이 재생되는 때 사이의 시동 지연을 감소시키는 데 도움을 주도록, 시동 기간 동안에 도착하는 프레임에 대해 시동 기간 이후보다는 시동 기간 동안에 목표 도착 시각을 재생 시각에 더 가깝게 하는 단계를 더 포함하는 프로세스.
  23. 제22항에 있어서,
    고려 중인 프레임에 대한 소정의 목표 도착 시각을 선택하는 단계는, 로그 목표 스케줄(logarithmic target schedule)을 사용하여 스트리밍 미디어의 각 프레임에 대한 목표 도착 시각을 설정하는 단계를 더 포함하는 프로세스.
  24. 제22항에 있어서,
    고려 중인 프레임에 대한 소정의 목표 도착 시각을 선택하는 단계는, 2-구분 선형 목표 스케줄(two-piece linear target schedule)을 사용하여 스트리밍 미디어의 각 프레임에 대한 목표 도착 시각을 설정하는 단계를 더 포함하며,
    시동 기간 동안에 도착하는 프레임에 대한 목표 도착 시각과 재생 시각 간의 차이는 상기 네트워크 지터, 지연 및 처리용량 변화에 대처할 정도의 충분히 큰 소정의 시간까지 선형적으로 증가하고 그 이후에 차이는 거의 일정하게 유지되는 프로세스.
  25. 제22항에 있어서,
    시동 지연을 감소시키는 단계를 더 포함하며,
    상기 감소시키는 단계는 클라이언트의 디코더 버퍼가 초기의 코딩 비트 레이트에서 언더플로우 상태가 일어나지 않도록 보장하는 데 필요한 최소량의 데이터를 그 안에 가지게 된 때 스트리밍 미디어 데이터의 첫번째 프레임의 재생을 시작하는 단계를 포함하는 프로세스.
  26. 제25항에 있어서,
    클라이언트의 디코더 버퍼가 최소량의 데이터를 그 안에 가지게 된 때 스트리밍 미디어 데이터의 첫번째 프레임의 재생을 시작하는 단계는,
    상기 첫번째 프레임과 연관된 초기의 인코더 버퍼 충만도 값을 획득하는 단계 - 상기 초기의 인코딩 버퍼 충만도 값은 인코더 버퍼의 크기에서 첫번째 프레임의 크기 및 첫번째 프레임과 연관된 상한 갭을 뺀 것으로서 정의됨 - , 및
    상기 최소량의 데이터를, 초기의 코딩 비트 레이트와 연관된 인코더 버퍼 크기에서 초기의 인코더 버퍼 충만도를 뺀 것으로서 설정하는 단계를 포함하는 프로 세스.
  27. 제26항에 있어서,
    초기의 코딩 비트 레이트, 초기의 인코더 버퍼 충만도, 및 인코더 버퍼 크기는 스트리밍 미디어 데이터의 프리앰블로서 서버로부터 수신되는 프로세스.
  28. 제26항에 있어서,
    시동 지연을 감소시키는 단계는, 도착 레이트가 코딩 비트 레이트에 비례하여 증가함에 따라 상기 최소량의 데이터가 감소하고 또 시동 지연이 실질적으로 상기 최소량의 데이터를 도착 레이트로 나눈 것이고, 따라서 코딩 비트 레이트가 도착 레이트보다 낮으면, 요구되는 상기 최소량의 데이터가 더 적을 수 있고 또 시동 지연이 더 작을 수 있게 되므로 초기의 코딩 비트 레이트를 클라이언트에서의 스트리밍 미디어 데이터의 예상 도착 레이트보다 낮은 레벨로 설정하는 단계를 더 포함하는 프로세스.
  29. 제5항에 있어서,
    현재의 코딩 비트 레이트를 설정하는 단계는, 시동 기간 이후에만 코딩 비트 레이트의 설정을 개시하는 단계를 포함하며,
    상기 시동 기간은 초기의 코딩 비트 레이트에 대해 계산되는 고려 중인 프레임의 추정된 가장 늦은 도착 시각이 그 프레임에 대한 목표 도착 시각보다 더 이르 게 되는 첫번째 인스턴스 이전의 기간으로서 정의되는 프로세스.
  30. 제5항에 있어서,
    코딩 비트 레이트의 변화가 감소되는 소정의 정도는 코딩 비트 레이트가 증가하였는지 여부에 따라 달라지고, 이 경우에 코딩 비트 레이트의 임의의 장래의 변화가 감소되는 소정의 정도는 코딩 비트 레이트의 마지막 변화가 레이트를 감소시킨 경우의 소정의 정도와 비교하여 더 크게 하는 프로세스.
  31. 제3항에 있어서,
    스트리밍 미디어 데이터에 대한 현재의 코딩 비트 레이트를 설정하는 단계는, 결정된 코딩 비트 레이트가 바로 이전의 코딩 비트 레이트로부터의 증가를 나타내는 경우에, 새로운 코딩 비트 레이트가 프레임의 현재의 추정된 도착 레이트를 초과하지 않을 때만 새로운 코딩 비트 레이트를 설정하는 단계를 포함하는 프로세스.
  32. 제3항에 있어서,
    스트리밍 미디어 데이터에 대한 현재의 코딩 비트 레이트를 설정하는 단계는, 결정된 코딩 비트 레이트가 프레임의 현재의 추정된 도착 레이트를 초과하는 바로 이전의 코딩 비트 레이트로부터의 증가를 나타내는 경우에, 현재의 클라이언트 버퍼가 소정의 기간이 경과하기 이전에 더 높은 코딩 비트 레이트로 소모되지 않을 것으로 클라이언트에 의해 추정되는 양만큼 원하는 레벨을 초과할 때에만 새로운 코딩 비트 레이트를 설정하는 단계를 포함하는 프로세스.
  33. 제3항에 있어서,
    스트리밍 미디어 데이터에 대한 현재의 코딩 비트 레이트를 설정하는 단계는, 결정된 코딩 비트 레이트가 바로 이전의 코딩 비트 레이트로부터의 감소를 나타내는 경우에, 새로운 코딩 비트 레이트가 바로 이전의 코딩 비트 레이트로부터의 상당한 이탈을 나타낼지라도 새로운 코딩 비트 레이트를 설정하는 단계를 포함하는 프로세스.
  34. 컴퓨터 네트워크를 통해 서버로부터 클라이언트로 전송되고 있는 스트리밍 미디어 데이터의 코딩 비트 레이트를 제어하는 컴퓨터 구현 프로세스로서,
    서버를 사용하여,
    서버에 의해 지원되는 코딩 비트 레이트를 나타내고 또 초기의 시동 기간 이후에는 클라이언트에 의해 요청된 레이트와 관련한 코딩 비트 레이트를 나타내는 스트리밍 미디어 데이터 스트림을 생성하는 단계,
    서버의 인코더 버퍼의 상태를 나타내는 파라미터를 계산하는 단계 - 상기 인코더 버퍼는 클라이언트로 전송하기 이전에 스트리밍 미디어 데이터의 부분들을 집결(stage)시키는 데 사용됨 -, 및
    인코더 버퍼 상태 파라미터 및 스트리밍 미디어 데이터 스트림을 클라이언트 에 제공하는 단계 - 이에 의해, 상기 파라미터는 스트리밍 미디어 데이터에 대한 현재의 코딩 비트 레이트를 계속적으로 설정하기 위해 클라이언트에 의해 사용가능하게 되며, 이 현재의 코딩 비트 레이트는 클라이언트에 의한 스트리밍 미디어 데이터의 재생의 중단을 가져오게 될 언더플로우 상태의 가능성을 감소시키기 위해, 서버로부터 스트리밍 미디어 데이터를 수신하는 데 사용되는 클라이언트의 디코더 버퍼를 원하는 지속기간 레벨까지 충만된 상태로 여전히 유지시키면서 스트리밍 미디어 데이터의 고품질 재생을 제공하는 것으로 추정됨 -
    를 수행하는 프로세스.
  35. 제34항에 있어서,
    인코더 버퍼의 상태를 나타내는 파라미터를 계산하는 단계는, 서버에 의해 지원되는 각각의 코딩 비트 레이트에 대해, 코딩 비트 레이트에 대응하는 데이터 스트림이 그로부터 스트리밍되는 경우에 존재하게 되는 인코더 버퍼의 초기 상태를 정의하는 일련의 파라미터를 계산하는 단계를 포함하며,
    상기 인코더 버퍼 파라미터는 데이터 스트림과 연관된 코딩 비트 레이트, 데이터 스트림의 코딩 비트 레이트와 함께 이용되는 인코더 버퍼의 크기, 및 데이터 스트림의 코딩 비트 레이트로 나타내어진 초기의 인코더 버퍼 충만도를 표시하는 값을 포함하는 프로세스.
  36. 제35항에 있어서,
    인코더 버퍼 상태 파라미터 및 스트리밍 미디어 데이터 스트림을 클라이언트에 제공하는 단계는, 스트리밍 미디어 데이터를 전송하기 이전에 클라이언트로 전송되는 프리앰블의 일부로서, 지원되는 코딩 비트 레이트 중 하나를 나타내는 각각의 데이터 스트림에 대해 계산된 인코더 버퍼 파라미터를 클라이언트에 제공하는 단계를 포함하는 프로세스.
  37. 제35항에 있어서,
    데이터 스트림의 코딩 비트 레이트와 함께 이용되는 인코더 버퍼의 크기는 코딩 비트 레이트 및 초기의 인코더 버퍼 충만도가 주어진 경우, 스트리밍 프로세스의 어떤 지점에서도 데이터 스트림을 여전히 포함하게 되는 최소 크기 버퍼가 되도록 선택되는 프로세스.
  38. 제35항에 있어서,
    서버가 서버에 의해 지원되는 각각의 코딩 비트 레이트에 대해 생성된 스트리밍 미디어 데이터의 각 프레임에 대한 상한 갭을 계산하는 단계를 더 포함하고,
    상한 갭은 이제 막 생성된 프레임이 인코더 버퍼에 완전히 입력된 후에 서버의 인코더 버퍼가 그 안에 현재 들어 있는 비트에 더하여 포함할 수 있는 데이터 비트의 수로서 정의되는 프로세스.
  39. 제38항에 있어서,
    프레임 시퀀스의 첫번째 프레임 바로 이전에 생성된 프레임과 연관된 코딩 비트 레이트와 다른 코딩 비트 레이트를 나타내는 상기 프레임 시퀀스의 첫번째 프레임에 대해 계산된 상한 갭을, 프레임 시퀀스와 연관된 코딩 비트 레이트의 표시와 함께 클라이언트에 제공하는 단계를 더 포함하며,
    상기 갭 값 및 코딩 비트 레이트는 상기 시퀀스의 첫번째 프레임과 함께 제공되는 프로세스.
  40. 제39항에 있어서,
    클라이언트는 연관된 갭 값을 포함하지 않는, 서버에 의해 제공되는 프레임들에 대한 상한 갭을 추정하는 프로세스.
  41. 제40항에 있어서,
    클라이언트는 인코더 버퍼 파라미터 및 상한 갭 값을 이용하여 클라이언트 버퍼를 대략 원하는 레벨에 유지시키는 코딩 비트 레이트를 프레임별로 결정하고,
    상기 결정 단계는 고려 중인 프레임의 추정된 가장 늦은 예상 도착 시각과 소정의 목표 도착 시간 간의 차이를 감소시키는 코딩 비트 레이트를 식별하는 단계를 포함하는 프로세스.
  42. 제39항에 있어서,
    서버가 프레임 시퀀스의 첫번째 프레임 바로 이전에 생성된 프레임과 다른 코딩 비트 레이트를 나타내는 프레임 시퀀스의 첫번째 프레임을 나타내는 각 프레임에 대한 천이값을 계산하는 단계 - 상기 천이값은 프레임 시퀀스의 첫번째 프레임 바로 이전에 생성된 프레임이 현재의 코딩 비트 레이트로 인코딩된 경우 그 프레임과 연관될 상한 갭과 이전의 코딩 비트 레이트로 인코딩된 시퀀스의 첫번째 프레임 바로 이전에 생성된 프레임과 실제로 연관된 상한 갭 간의 차이를 나타냄 - , 및
    프레임 시퀀스의 첫번째 프레임 바로 이전에 생성된 프레임과 다른 코딩 비트 레이트를 나타내는 각각의 프레임 시퀀스의 첫번째 프레임에 대해 계산된 천이값을, 이 첫번째 프레임을 포함하는 데이터와 함께 클라이언트에 제공하는 단계를 더 포함하는 프로세스.
  43. 제42항에 있어서,
    바로 앞의 프레임과 다른 코딩 비트 레이트를 갖는 프레임이 클라이언트에 제공될 때마다,
    이제 막 수신된 프레임과 연관된 현재 스케줄링된 목표 도착 시각이 이제 막 수신된 프레임과 함께 제공된 천이값만큼 천이되고,
    장래의 프레임에 대한 현재 스케줄링된 목표 도착 시각이, 소떤 기간에 걸쳐 상기 장래의 프레임들에 대한 이전의 목표 도착 시각에 집합적으로 접근하고 결국에는 그와 일치하도록 천이되는 프로세스.
  44. 제38항에 있어서,
    제한된 수의 코딩 비트 레이트가 서버에 의해 지원되고,
    서버에 의해 지원되는 코딩 비트 레이트를 나타내고 또 초기 시동 기간 이후에는 클라이언트에 의해 요청되는 레이트와 관련된 코딩 비트 레이트를 나타내는 스트리밍 미디어 데이터 스트림을 생성하는 단계는,
    (a) 클라이언트로부터 코딩 비트 레이트 요청을 수신하는 단계,
    (b) 요청된 코딩 비트 레이트와 동일한 지원되는 코딩 비트 레이트, 또는 동일한 것이 없는 경우에는 그와 가장 가까운 작은쪽 레이트를 찾는 단계,
    (c) 스트리밍 미디어 데이터의 마지막 생성된 프레임과 연관된 코딩 비트 레이트보다 더 낮은 레이트인 지원되는 코딩 비트 레이트가 발견될 때마다, 그 지원되는 레이트로 모든 장래의 프레임을 생성하는 단계, 및
    (d) 스트리밍 미디어 데이터의 마지막 생성된 프레임과 연관된 코딩 비트 레이트보다 더 높은 레이트인 지원되는 코딩 비트 레이트가 발견될 때마다, 마지막 생성된 프레임이 발견된 지원되는 코딩 비트 레이트로 인코딩된 경우 그 프레임과 연관된 상한 갭과 현재의 코딩 비트 레이트로 인코딩된 그 프레임과 연관된 상한 갭 간의 차이가 최대 허용가능 차이값보다 작거나 같은지를 판정하는 단계,
    차이가 최대 허용가능 차이값보다 작은 경우, 모든 장래의 프레임을 발견된 지원되는 레이트로 생성하는 단계, 및
    차이가 최대 허용가능 차이값보다 작지 않은 경우, 그 다음으로 더 낮은 지원되는 코딩 비트 레이트를 찾고 단계 (c)-(d)를 반복하는 단계를 포함하는 프로세스.
  45. 제44항에 있어서,
    최대 허용가능 차이값은 코딩 비트 레이트 요청과 함께 클라이언트로부터 수신되는 프로세스.
  46. 제45항에 있어서,
    클라이언트는 최대 허용가능 차이값을, 클라이언트에 의해 고려 중인 프레임 바로 이전에 서버에 의해 제공되는 프레임이 요청된 코딩 비트 레이트로 코딩된 경우 그 프레임과 연관된 가장 늦은 예상 도착 시각이 그 프레임의 목표 도착 시각에서 그의 재생 마감 시각까지의 기간의 소정의 일부보다 크지 않도록 선택하는 프로세스.
KR1020050099595A 2004-12-10 2005-10-21 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스 KR20060065482A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US11/010,114 2004-12-10
US11/010,040 US7543073B2 (en) 2004-12-10 2004-12-10 System and process for performing an exponentially weighted moving average on streaming data to establish a moving average bit rate
US11/010,113 US7536469B2 (en) 2004-12-10 2004-12-10 System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates
US11/010,113 2004-12-10
US11/010,040 2004-12-10
US11/010,114 US20060143678A1 (en) 2004-12-10 2004-12-10 System and process for controlling the coding bit rate of streaming media data employing a linear quadratic control technique and leaky bucket model

Publications (1)

Publication Number Publication Date
KR20060065482A true KR20060065482A (ko) 2006-06-14

Family

ID=36177346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050099595A KR20060065482A (ko) 2004-12-10 2005-10-21 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스

Country Status (3)

Country Link
EP (1) EP1670256A3 (ko)
JP (1) JP2006174419A (ko)
KR (1) KR20060065482A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100787314B1 (ko) * 2007-02-22 2007-12-21 광주과학기술원 미디어내 동기화를 위한 적응형 미디어 재생 방법 및 장치
CN103959274A (zh) * 2011-10-07 2014-07-30 爱立信电视公司 具有自动速率整形的http自适应流传送服务器

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP1552617A2 (en) 2002-10-05 2005-07-13 Digital Fountain, Inc. Systematic encoding and decoding of chain reaction codes
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
JP4971144B2 (ja) 2004-05-07 2012-07-11 デジタル ファウンテン, インコーポレイテッド ファイルダウンロードおよびストリーミングのシステム
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
KR101292851B1 (ko) 2006-02-13 2013-08-02 디지털 파운튼, 인크. 가변적 fec 오버헤드 및 보호 구간을 이용하는 스트리밍및 버퍼링
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7971129B2 (en) 2006-05-10 2011-06-28 Digital Fountain, Inc. Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9432433B2 (en) * 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
WO2007148712A1 (ja) 2006-06-23 2007-12-27 Ngk Insulators, Ltd. 銅基圧延合金及びその製造方法
JP5027305B2 (ja) 2007-09-12 2012-09-19 デジタル ファウンテン, インコーポレイテッド 信頼できる通信を可能にするためのソース識別情報の生成および伝達
JP5151763B2 (ja) * 2008-07-22 2013-02-27 日本電気株式会社 映像配信システム、映像配信装置、映像受信装置、映像配信方法、映像受信方法及びプログラム
KR100966467B1 (ko) * 2008-09-23 2010-06-28 한국전자통신연구원 영상 전송 시 플레이 타임을 이용한 버퍼 컨트롤 장치 및 방법
JP5347441B2 (ja) * 2008-11-10 2013-11-20 日本電気株式会社 動画像処理装置
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
JP5183570B2 (ja) * 2009-05-28 2013-04-17 三菱電機株式会社 映像送信装置、映像受信装置及び映像配信システム
US9014545B2 (en) 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution
US8631455B2 (en) 2009-07-24 2014-01-14 Netflix, Inc. Adaptive streaming for digital content distribution
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9578354B2 (en) 2011-04-18 2017-02-21 Verizon Patent And Licensing Inc. Decoupled slicing and encoding of media content
US9137551B2 (en) * 2011-08-16 2015-09-15 Vantrix Corporation Dynamic bit rate adaptation over bandwidth varying connection
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9609340B2 (en) 2011-12-28 2017-03-28 Verizon Patent And Licensing Inc. Just-in-time (JIT) encoding for streaming media content
US8990849B2 (en) 2012-02-14 2015-03-24 Verizon Patent And Licensing Inc. Advertisement insertion into media content for streaming
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US20140297869A1 (en) 2012-10-11 2014-10-02 Uplynk, LLC Adaptive streaming cost management
GB2514777B (en) * 2013-06-03 2018-12-19 Displaylink Uk Ltd Management of memory for storing display data
JP5987798B2 (ja) * 2013-08-06 2016-09-07 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
JP6173141B2 (ja) * 2013-09-13 2017-08-02 セコム株式会社 無線通信システム及び無線送信機
KR102209292B1 (ko) * 2015-11-04 2021-01-29 삼성전자 주식회사 멀티미디어 시스템에서 데이터 제공 방법 및 장치
JP6724517B2 (ja) * 2016-04-14 2020-07-15 日本電気株式会社 ビットレート指示装置、ビットレート指示方法、及び、ビットレート指示プログラム
CN108668146B (zh) * 2017-03-27 2021-07-16 华为技术有限公司 一种调整流媒体码率的方法及设备
CN113691886B (zh) * 2021-08-25 2024-05-07 三星电子(中国)研发中心 流媒体文件的下载方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2580955B2 (ja) * 1993-06-23 1997-02-12 日本電気株式会社 データ多重化装置及び分離装置
JP4596693B2 (ja) * 2000-07-06 2010-12-08 パナソニック株式会社 ストリーミング方法およびそれを実行するシステム
JP2004214755A (ja) * 2002-12-27 2004-07-29 Hitachi Ltd 動的符号化レート変更方法及びその装置
US7266147B2 (en) * 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7844727B2 (en) * 2003-04-24 2010-11-30 Nokia Corporation Method and device for proactive rate adaptation signaling
US8582659B2 (en) * 2003-09-07 2013-11-12 Microsoft Corporation Determining a decoding time stamp from buffer fullness

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100787314B1 (ko) * 2007-02-22 2007-12-21 광주과학기술원 미디어내 동기화를 위한 적응형 미디어 재생 방법 및 장치
CN103959274A (zh) * 2011-10-07 2014-07-30 爱立信电视公司 具有自动速率整形的http自适应流传送服务器
US9628532B2 (en) 2011-10-07 2017-04-18 Ericsson Ab HTTP adaptive streaming server with automatic rate shaping

Also Published As

Publication number Publication date
EP1670256A3 (en) 2013-01-09
JP2006174419A (ja) 2006-06-29
EP1670256A2 (en) 2006-06-14

Similar Documents

Publication Publication Date Title
KR20060065482A (ko) 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
US7543073B2 (en) System and process for performing an exponentially weighted moving average on streaming data to establish a moving average bit rate
US7536469B2 (en) System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates
US20060143678A1 (en) System and process for controlling the coding bit rate of streaming media data employing a linear quadratic control technique and leaky bucket model
EP2137937B1 (en) Bandwidth allocation control in multiple video streaming
EP2171927B1 (en) Adaptive bitrate management for streaming media over packet networks
US8467457B2 (en) System and a method for controlling one or more signal sequences characteristics
US6310857B1 (en) Method and apparatus for smoothing and multiplexing video data flows
US8346959B2 (en) Client-controlled adaptive streaming
US8351762B2 (en) Adaptive media playout method and apparatus for intra-media synchronization
US7652993B2 (en) Multi-stream pro-active rate adaptation for robust video transmission
EP2383999A1 (en) Controlling an adaptive streaming of digital content
US7652994B2 (en) Accelerated media coding for robust low-delay video streaming over time-varying and bandwidth limited channels
EP2364551B1 (en) Multiplexed video streaming
US20090125636A1 (en) Payload allocation methods for scalable multimedia servers
US20030165150A1 (en) Multi-threshold smoothing
US7111058B1 (en) Server and method for transmitting streaming media to client through a congested network
CA2461926A1 (en) Communication system and techniques for transmission from source to destination
Su et al. Smooth control of adaptive media playout for video streaming
KR101038645B1 (ko) 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그시스템
Lee Video traffic prediction based on source information and preventive channel rate decision for RCBR
Huang et al. Optimal control of multiple bit rates for streaming media
Huang et al. Optimal coding rate control of scalable and multi bit rate streaming media
ZHANG et al. Joint rate allocation and buffer management for robust transmission of VBR video
KR100782343B1 (ko) 영상 스트리밍 방법

Legal Events

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