멀티미디어 스트리밍 서비스에 있어서, 수반되는 세 참가자들이 존재한다: 스트리밍 서버, 스트리밍 클라이언트 및 전송 채널 또는 기본적인 네트워크. 처리율 및 신뢰성 양자의 관점에서(즉 아무런 처리율 비트레이트 보장도 가정되지 않는 경우), 서비스의 병목 현상이 발생하는 곳은 보통 전송 채널이지만, 처리율 제한이 또한 상기 클라이언트 및/또는 상기 서버에서 발생할 수 있다.
실시간 스트리밍 시스템에서, 상기 채널, 클라이언트 및 서버의 동적으로 변하는 처리율 특성으로 인하여, 상기 스트리밍 전달은 사용자에 대해 실시간 재생 경험을 유지하기 위하여 적응적일 필요가 있다. 상기 서버는 전송 레이트를 상기 시스템의 변하는 처리율에 적응시켜야 한다. 이러한 레이트 적응 시스템의 예는 하스켈 등(Haskell et al.)(미국 특허 번호 5,565,924, "가변 채널을 위한 부호기/복호기 버퍼 제어")에서 발견될 수 있다.
상기 스트리밍 클라이언트는 입력 데이터를 플레이아웃(playout)을 위해 미 디어 복호기로 전달하기 전에 입력 데이터를 저장하기 위한 수신기 버퍼를 제공한다. 상기 수신기 버퍼는 소스 부호화 레이트(또한 샘플링 레이트로 지칭됨) 및 전송 레이트(전치-복호기 버퍼링) 간의 차를 보상하는데 사용된다. 그것은 또한 상기 채널에 대한 패킷 전송 지연 편차를 보상하는데 사용된다(지터 버퍼링). 일반적으로, 이들 두개의 기능들은 단일 수신기 버퍼에 결합되는 것으로 가정된다. 하지만, 그들은 또한 수신기에서 두개의 개별 버퍼들로 구현될 수 있는데, 이러한 구현은 지연의 관점에서 최적은 아니다. 수신기 버퍼링은 또한 (즉 상기 시스템 처리율이 상기 서버 출력에 의해 정확히 매칭되지 않는 경우) 상기 적응 부정확성을 평탄화할 수 있다.
상기 복호기가 복호화할 데이터없이 동작하고 있다는 것을 의미하는, 상기 수신기 버퍼가 버워지는 경우(즉 버퍼 언더플로우), 상기 클라이언트는 재개하기 전에 플레이아웃을 중단하고 입력 데이터를 재버퍼링할 필요가 있다. 다른 한편, 입력 데이터 레이트가 플레이아웃 레이트보다 더 빠른 경우, 상기 수신기 버퍼 공간은 고갈될 수 있는데(즉 버퍼 오버플로우), 이것은 새로운 입력 패킷들에 대한 공간을 형성하기 위하여 상기 버퍼에서 패킷들을 버리는 것을 초래할 수 있다. 상기 패킷들이 버려지는 경우, 비디오 품질은 저하된다. 원활하고 결함없는 플레이아웃을 보증하기 위하여, 상기 클라이언트의 수신기 버퍼는 어떤 포만(fullness) 범위내에서 유지되어야 한다. 상기 수신기 버퍼가 언더플로우 또는 오버플로우되지 않을 것이라는 것을 보장하기 위하여, 상기 서버에서의 전송 및 샘플링에 대한 비트레이트 및 상기 클라이언트에서의 수신 및 플레이아웃에 대한 비트레이트는 적합 하게 제어되어야 한다.
하기의 논의에서, 다음 곡선들이 정의되는 (수평축상에 초로 나타낸 시간; 수직축상에, 바이트 또는 비트로 나타낸 누적 데이터량) 비트레이트 전개 도면들을 참조하여 비트레이트 제어가 설명될 것이다:
- 플레이아웃 곡선, P(t)는 복호기가 상기 수신기 버퍼로부터 주어진 시간까지 처리된 누적 데이터량을 보여준다;
- 샘플링 곡선, S(t)는 미디어 부호기가 실시간으로 동작된 것처럼 데이터 생성의 진행을 보여준다(그것은 플레이아웃 곡선의 상대물이고, 실제로 그것의 시간-편이된 버전이다);
- 전송 곡선, T(t)는 주어진 시간에 상기 서버에 의해 송신된 누적 데이터량을 보여준다; 그리고
- 수신 곡선, R(t)는 주어진 시간에 상기 클라이언트 버퍼에 수신되고 배치되는 누적 데이터량을 보여준다.
어떤 두 곡선들간의 차는 상기 두 곡선들간의 "버퍼 크기" 및 지연을 정의한다. 상기 비트레이트 제어는 두 곡선들간의 차에 대한 어떤 제한들(예를 들어, 최대 버퍼 크기 또는 최대 지연)에 의해 제약될 것이다. 전형적인 비트레이트 전개 도면이 도 1에 도시되어 있다.
비트레이트 제어에서 서버와 클라이언트 협력에 대한 최선의 배열을 결정하는 경우, 다음 사항이 고려될 것이다:
A. 샘플링 곡선 - 상기 제어(즉 전송에 대한 비트스트림의 선택)는 다음 이 유때문에 상기 서버에 완전하게 맡겨져야 한다:
1) 각 비트스트림의 정확한 특성들, 예를 들어 스위칭 위치들, 프레임들의 우선 순위, 미래의 프레임 크기에 대해 알고 있는 것은 단지 상기 서버이다, 그리고
2) 상기 네트워크 비트레이트와 일치하는 비트스트림 레이트가 존재하지 않을 수 있고, 상기 서버는 어떤 "트릭"(예를 들어, 세선화(thinning), 스위칭 업-앤-다운)을 수행할 수 있다.
B. 전송 곡선 - 상기 제어(즉 전송하는 레이트)는 또한 다음 이유 때문에 (상기 클라이언트로부터의 실시간 제어 프로토콜(RTCP: Real Time Control Protocol) 보고서(reports) 또는 다른 대역폭 정보를 사용하여) 상기 서버에 맡겨져야 한다:
1) 일반적으로, 유선으로 데이터량을 측정할 수 있는 것은 단지 상기 서버이다, 그리고
2) 상기 샘플링 곡선 제어가 제한된 융통성을 지니는 경우 상기 전송 레이트를 상기 샘플링 곡선에 적응시킬 필요가 있을 수 있다.
상기 서버는 그것의 샘플링 곡선(S(t))을 그것의 전송 곡선(T(t))에 적응시킴으로써 어떤 실시간 제약들을 유지해야 한다. 상기 샘플링 곡선을 상기 전송 곡선에 적응시키는 것은 적합한 버퍼링으로, 상기 수신기가 정확한 동기를 가지고 상기 미디어를 플레이아웃할 수 있다는 것을 보장한다. 매 순간 t에서, 상기 샘플링 곡선(S(t))은 너무 큰 바이트 양만큼 상기 전송 곡선(T(t))으로부터 벗어나지 않아 야 한다.
상기 서버가 실시간 제약에 의해 정의된 바와 같이 한계내에서 동작하는 경우, 상기 클라이언트는 상기 서버를 상기 한계내에서 따르기 위하여 어떤 필요한 버퍼링을 제공할 책임이 있다. 이 경우, 상기 클라이언트는 다음을 보상해야 한다:
2) 전송 지연 편차{T(t)-R(t)}에 대한 지터 버퍼링.
더욱이, 상기 클라이언트는 상기 플레이아웃 곡선과 상기 샘플링 곡선간의 어떤 불일치도 견뎌야 한다(예를 들어, 클라이언트 플랫폼 운영 체제 문제로 인한 재생 감속 또는 클록 드리프트).
멀티미디어 스트리밍 시스템에서, 송신기 또는 서버는 각 순간에 그것이 송신할 다음 패킷을 (어떤 레이트로) 어떻게 부호화할지를 결정할 필요가 있고 어떤 시간에 그것을 송신할 것인지를 결정할 필요가 있다. 정상적인 동작에서, 상기 송신기는 단지 RTCP 보고서(reports)를 사용하여 상기 수신기에 의한 실시간 플레이아웃을 유지할 수 있다. 3세대 파트너십 프로젝트(3GPP) 패킷 교환 스트리밍 서비스(PSS: Packet Switched Streaming Service)는 표준적인 비디오 버퍼링 요건들을 정의하는데, 상기 요건들은 가변 비트 레이트(VBR: Variable Bit Rate) 비디오 압축 및 전송에서 고유한 서버-특정 지연 편차 및 부호화를 보상하는 것을 타깃으로 한다(2002년 6월, 3GPP TS 26.234 V5.1.0, "투과적인 종단-대-종단 패킷 교환 스트리밍 서비스(PSS); 프로토콜들 및 코덱들(릴리스 5)"을 참조하라, 이하 TS 26.234 라 함). 스트리밍 서버 및 클라이언트 양자가 상기 버퍼링 요건들을 준수하는 경우, 상기 서버로부터의 스트림이 일정-지연, 신뢰성있는 전송 채널을 통해 전송된다면, 상기 클라이언트가 클라이언트 버퍼 위반없이(즉 상기 클라이언트에서 아무런 버퍼 언더플로우 또는 오버플로우도 존재하지 않을 것이다) 상기 서버에 의해 전송된 스트림을 플레이아웃할 수 있다는 것이 보장된다. 하지만, 핸드오버, 재전송 또는 클록 드리프트와 같은 어떤 환경하에서 이것은 더 이상 가능하지 않다. 그 결과, 상기 송신기와 상기 수신기는 서로 충돌하는 동작을 취할 수 있고, 사용자 경험의 심각한 저하가 발생할 수 있다.
종래 기술에서, 수신기는 실시간 스트리밍 프로토콜(RTSP) 헤더 필드 속도(오디오 및/또는 비디오의 서브-샘플링) 및 스케일(상기 비트레이트의 곱셈적인 증가 또는 감소)의 사용을 통해 그것의 버퍼 레벨을 변경한다. 상기 헤더들은 IETF RFC2326에 정의되어 있다. 상기 수신기는 또한 "PSS를 위한 종단-대-종단 비트 레이트 적응", 3GPP SA4 doc S4-030024에 설명된 바와 같이, 상기 클라이언트에 의한 비트레이트 스위칭 명령들을 사용할 수 있다.
본 발명은 다음과 같이 송신기와 수신기 간에 레이트 적응의 책임을 분담한다:
상기 서버는 다음을 담당한다:
- 전송 레이트를 수신 레이트에 적응시키는 것(즉 정체 제어).
- 샘플링 레이트를 상기 전송 레이트에 적응시키는 것(즉 편이(shift)를 관리하고 그것을 상기 레이트 적응 동작 범위내에 유지시키는 것).
상기 수신기는 다음을 담당한다:
- 패킷 전송 지연 편차(즉 네트워크 지터)를 보상하는 것.
- 상기 서버 레이트 적응 동작 범위(편이의 범위)의 매개 변수들을 설정하는 것.
상기 서버 레이트 적응에 대한 동작 범위는 상기 송신기가 송신하는 어떤 패킷에 대한 허용가능한 최소 및 최대 편이를 지정함으로써 "상기 서버의 동적 스케줄링"의 한계를 정의한다. 상기 서버 레이트 적응 동작 범위의 매개 변수들은 핸드오버, 재전송 및 클록 드리프트와 같은 경우에 언더플로우, 오버플로우 및 품질 저하의 발생을 최소화하기 위하여 상기 서버와 수신기 간에 협상된다.
따라서, 본 발명의 제1 태양은 멀티미디어 스트리밍 네트워크에서 클라이언트내의 수신기 버퍼의 레벨을 적응적으로 제어하기 위한 방법으로서, 상기 스트리밍 네트워크는 스트리밍 데이터를 상기 클라이언트에 제공하기 위한 서버를 포함하고, 상기 수신기 버퍼는 상기 클라이언트가 비-중단 방식으로 플레이아웃할 충분한 양의 스트리밍 데이터를 가지도록 하기 위하여 상기 서버에 의한 데이터 전송량과 상기 클라이언트에 의한 데이터 사용량 간의 차를 보상하는데 사용되는 방법에 있어서,
상기 서버와 상기 클라이언트 간에 레이트 적응(rate adaptation)을 수행하기 위하여 레이트 적응 동작 범위를 결정하기 위한 적어도 하나의 매개 변수를 상기 클라이언트에서 정의하는 단계;
상기 서버에서 상기 적어도 하나의 매개 변수에 기초하여 상기 데이터 전송량을 수신 레이트에 적응시키는 단계; 및
상기 클라이언트에서 상기 적응에 기초하여 패킷 전송 지연 편차를 조정하는 단계를 포함하는 방법을 제공한다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 서버가 최소 편이량에 기초하여 상기 적응을 수행하도록 하기 위하여 상기 서버에서 패킷의 전송 시간과 샘플링 시간 간의 차를 나타내는 상기 최소 편이량을 포함한다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 서버가 타깃 편이량에 기초하여 상기 적응을 수행하도록 하기 위하여 상기 서버에서 패킷의 전송 시간 및 샘플링 시간 간의 차보다 큰 편이량을 나타내는 상기 타깃 편이량을 포함한다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 서버가 샘플링된 바이트들의 수와 송신된 바이트들의 수 간의 최대 차를 지정하는 수에 기초하여 상기 적응을 수행하도록 하기 위하여 상기 샘플링된 바이트들의 수와 송신된 바이트들의 수 간의 최대 차를 지정하는 수를 포함한다.
본 발명에 의하면, 상기 서버에서의 적응은 상기 전송 레이트 또는 상기 샘플링 레이트 또는 양자를 조정함으로써 수행된다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 클라이언트에서 플레이아웃 중단을 방지하기 위한 클록 편이량을 포함한다.
본 발명에 의하면, 상기 방법은 상기 적어도 하나의 매개 변수에 기초하여 상기 서버에서 샘플링 레이트를 상기 전송 레이트에 적응시키는 단계를 더 포함한다.
본 발명에 의하면, 상기 최소 편이량, 상기 타깃 편이량, 상기 지정된 수 및 상기 클록 중 두개 이상이 상기 서버로 함께 송신된다.
본 발명의 제2 태양은 멀티미디어 스트리밍 시스템을 제공한다. 상기 시스템은,
적어도 하나의 클라이언트; 및
상기 클라이언트에 스트리밍 데이터를 제공하기 위한 서버를 포함하며,
상기 클라이언트가 비-중단 방식으로 플레이아웃할 충분한 양의 스트리밍 데이터를 가지도록 하기 위하여 상기 클라이언트는 상기 서버에 의한 데이터 전송량 및 상기 클라이언트에 의한 데이터 사용량 간의 차를 보상하기 위한 수신기 버퍼를 포함하고, 상기 클라이언트는,
상기 서버가 적어도 하나의 매개 변수에 기초하여 상기 데이터 전송량을 수신 레이트에 적응시키도록 하기 위하여 레이트 적응 동작 범위를 결정하기 위한 상기 적어도 하나의 매개 변수를 정의하는 메커니즘; 및
상기 적응에 기초하여 패킷 전송 지연 편차를 조정하는 메커니즘을 포함한다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 서버가 최소 편이량에 기초하여 상기 적응을 수행하도록 하기 위하여 상기 서버에서 패킷의 전송 시간과 샘플링 시간 간의 차를 나타내는 상기 최소 편이량; 상기 서버가 타깃 편이량에 기초하여 상기 적응을 수행하도록 하기 위하여 상기 서버에서 패킷의 전송 시간 및 샘플링 시간 간의 차보다 큰 편이량을 나타내는 상기 타깃 편이량; 샘플링된 바이트들의 수와 송신된 바이트들의 수 간의 최대 차를 지정하는 수; 및 상기 클라이언트에서 플레이아웃 중단을 방지하기 위한 클록 편이량을 포함할 수 있다.
본 발명에 의하면, 상기 서버는 상기 적어도 하나의 매개 변수에 기초하여 샘플링 레이트를 상기 전송 레이트에 적응시키기 위한 적응 메커니즘을 포함한다.
본 발명의 제3 태양은 클라이언트내의 수신기 버퍼의 레벨을 적응적으로 제어하기 위하여 멀티미디어 스트리밍 네트워크에서의 클라이언트에서 사용하기 위한 소프트웨어 생성물로서, 상기 멀티미디어 스트리밍 네트워크는 스트리밍 데이터를 상기 클라이언트에 제공할 수 있는 서버를 포함하고, 상기 수신기 버퍼는 상기 클라이언트가 비-중단 방식으로 플레이아웃할 충분한 양의 스트리밍 데이터를 가지도록 하기 위하여 상기 서버에 의한 데이터 전송량 및 상기 클라이언트에 의한 데이터 사용량 간의 차를 보상하는데 사용되는 소프트웨어 생성물에 있어서, 상기 서버와 상기 클라이언트 간에 레이트 적응(rate adaptation)을 수행하기 위하여 상기 서버에서 레이트 적응 동작 범위를 결정하는 적어도 하나의 매개 변수를 정의하기 위한 코드; 및
상기 적응에 기초하여 패킷 전송 지연 편차를 조정하기 위한 코드를 포함하는 소프트웨어 생성물을 제공한다.
본 발명에 의하면, 상기 적어도 하나의 매개 변수는 상기 서버에서 패킷의 전송 시간과 샘플링 시간 간의 차를 나타내는 최소 편이량; 상기 서버에서 패킷의 전송 시간과 샘플링 시간 간의 차보다 큰 편이량을 나타내는 타깃 편이량; 샘플링된 바이트들의 수와 송신된 바이트들의 수 간의 최대 차를 지정하는 수; 및 상기 클라이언트에서 플레이아웃 중단을 방지하기 위한 클록 편이량을 포함할 수 있다.
본 발명의 제4 태양은 스트리밍 데이터를 단말기에 제공하기 위한 적어도 하나의 서버를 구비하는 멀티미디어 스트리밍 네트워크에서의 단말기로서, 상기 단말기가 비-중단 방식으로 플레이아웃할 충분한 양의 스트리밍 데이터를 가지도록 하기 위하여 상기 서버에 의한 데이터 전송량과 상기 단말기에 의한 데이터 사용량 간의 차를 보상하는 수신기 버퍼를 구비하는 단말기를 제공한다. 상기 단말기는,
상기 서버가 적어도 하나의 매개 변수에 기초하여 상기 데이터 전송량을 수신 레이트에 적응시키도록 하기 위하여 상기 서버에서 레이트 적응 동작 범위를 결정하는 상기 적어도 하나의 매개 변수를 정의하는 메커니즘; 및
상기 적응에 기초하여 패킷 전송 지연 편차를 조정하는 메커니즘을 포함한다.
본 발명에 의하면, 상기 정의하는 메커니즘은 상기 적어도 하나의 매개 변수를 정의하기 위한 적어도 하나의 코드를 지닌 소프트웨어 프로그램을 포함하고, 상기 조정하는 메커니즘은 상기 패킷 전송 지연 편차를 조정하기 위한 적어도 하나의 코드를 지닌 소프트웨어 프로그램을 포함한다.
본 발명의 제5 태양은 네트워크 요소로부터 스트리밍 데이터를 수신하는 적어도 하나의 단말기를 구비하는 멀티미디어 스트리밍 네트워크에서의 네트워크 요소로서, 상기 단말기는 상기 단말기가 비-중단 방식으로 플레이아웃할 충분한 양의 스트리밍 데이터를 가지도록 하기 위하여 상기 네트워크 요소에 의한 데이터 전송량 및 상기 단말기에 의한 데이터 사용량 간의 차를 보상하는 수신기 버퍼를 구비하는 네트워크 요소를 제공한다.
상기 네트워크 요소는,
상기 단말기로부터 요구를 수신하기 위한 수단으로서, 상기 요구는 상기 네트워크 요소에서 레이트 적응 동작 범위를 결정하는 적어도 하나의 매개 변수를 나타내는 수단; 및
상기 적어도 하나의 매개 변수에 기초하여 상기 데이터 전송량을 상기 단말기에 의한 수신 레이트에 적응시키기 위한 메커니즘으로서, 상기 단말기가 상기 적응에 기초하여 패킷 전송 지연 편차를 조정하도록 하기 위한 메커니즘을 포함한다.
본 발명에 의하면, 상기 적응 메커니즘은 상기 데이터 전송량을 적응시키기 위한 적어도 하나의 코드를 지닌 소프트웨어 프로그램을 포함한다.
본 발명에 의하면, 상기 소프트웨어 프로그램은 상기 전송 레이트 또는 상기 샘플링 레이트 또는 양자를 조정하기 위한 코드를 포함한다.
본 발명은 도 1 내지 도 3과 함께 취해지는 설명을 읽을 때 명백해질 것이다.
서버가 송신한 어떤 패킷에 대해 최소 및 최대 편이가 허용되는 것이 무엇인지를 설명하기 위하여, 본 발명은 레이터 적응 모델을 사용하여 "편이(shift)"를 다음과 같이 정의한다.
A. 협동 레이트 적응 모델
실시간 전송 프로토콜(RTP: Real-time Transport Protocol) 패킷에서의 미디어의 샘플링 시간(즉 타임스탬프)과 상기 패킷의 전송 시간(즉 상기 패킷이 서버에 의해 송신된 시간) 간의 시간 차(
)는 "편이(shift)"로서 정의된다. 상기 샘플링(S) 및 전송(T) 곡선들을 참조하면,
의 편이는
로 표현될 수 있다.
상기 편이는 상기 패킷 샘플링 시간이 상기 패킷 전송 시간보다 나중인 경우 포지티브 값이다. 상기 편이는 상기 패킷 샘플링 시간이 상기 패킷 전송 시간보다 앞선 경우 네거티브 값이다.
상기 "편이"의 정의가 설정됨으로써, 상기 최소 및 최대 편이 매개 변수들은 다음과 같이 정의된다.
B. 서버 레이트 적응 동작 범위 매개 변수들
상기 레이트 적응 동작 범위 매개 변수들은 다음과 같이 정의된다.
1) 최소 편이 - 이 매개 변수는 송신기가 사용할 수 있는 최소 편이를 정의한다. 그것은 전송 시간 t에서 송신될 수 있는 가장 오래된 허용가능한 샘플링 시간을 정의한다. 이 매개 변수가
인 경우, 송신기는 샘플링 시간이
보다 앞서지 않은 패킷을 시간 t에서 송신하고 있어야 한다.
상기 패킷들이 그들의 샘플링 시간과 비교하여 얼마나 늦게 송신될 수 있는지에 대한 상기 최대 한계를 가지고, 실시간 재생이 수신기에서 유지될 수 있다. 상기 수신기는 재생 지연을 회피하기 위하여(아무런 수신기 버퍼 언더플로우가 없도록) 그것이 패킷들을 대기하는 것을 허용해야 하는 최대량의 시간을 추정할 수 있다.
초기 수신기 버퍼링 지연(즉 프리-롤(pre-roll))은 최소 편이를 허용하도록 정해져야 하고 부가적으로 패킷 전송 지연 편차를 보상하도록 정해져야 한다. 예를 들어, 상기 최소 편이가 -2000ms라고 가정하자. 이것은 상기 송신기가 패킷을 송신하는 경우, 상기 패킷 샘플링 시간이 그것의 전송 시간에 비해 최대 2초 앞설 수 있지만, 더 이상은 앞서지 않는다는 것을 의미한다. 수신기 버퍼 언더플로우를 회피하기 위하여, 상기 수신기는 상기 최대 예상 패킷 전송 지연 플러스 2초동안 초기에 버퍼링할 것이다. 상기 (네거티브) 값이 작을수록, 상기 수신기에서 초기 버퍼링에 대한 요구가 더 높아진다.
상기 수신기가 클록 드리프트(상기 송신기에서 유지되는 상기 샘플링 곡선으 로부터 상기 수신기 플레이아웃 곡선의 편이)를 탐지하는 경우, 상기 최소 편이 매개 변수는 상기 서버가 상기 패킷 전송 시간을 지닌 플레이아웃 곡선을 따를 것을 강요하도록 변경될 수 있다. 예를 들어, 상기 수신기가 더 빠른 경우, 상기 수신기는 데이터가 샘플링되는 것보다 더 빠른 레이트로 데이터를 재생할 것이다. 이것은 궁극적으로 버퍼 언더플로우를 초래할 것이다. 상기 송신기에게 그것의 최소 편이를 증가시키도록 요구함으로써, 상기 언더플로우는 회피될 수 있다.
상기 수신기가 상기 송신기보다 느린 경우, 상기 최소 편이는 감소되어야 한다. 상기 수신기가 상기 송신기보다 빠른 경우, 상기 최소 편이는 증가되어야 한다.
상기 최소 편이의 초기 값은 전형적으로 네거티브일 것이지만, 상기 수신기는 또한 포지티브가 되도록 그것을 변경할 수 있다. 예를 들어, 더 빠른 수신기의 경우(즉 더 빠른 플레이아웃 클록의 경우) 상기 최소 편이는 증가하기 때문에, 그것은 결국 포지티브가 될 수 있다. 예를 들어, 초기 값이 -2초인 경우, 상기 송신기는 나중에 상기 편이가 -1.9초, 그다음 -1.7초 등이 되도록 요구할 수 있다.
2) 타깃 편이-이 매개 변수는 클라이언트가 상기 송신기가 달성해주기를 원하는 편이를 정의한다. 이 매개 변수가
인 경우, 상기 송신기는 샘플링 시간이
인 패킷을 시간 t에서 송신하고 있어야 한다.
상기 타깃 편이는 상기에 정의된 최소 편이보다 항상 커야 한다. 정의에 의해, 상기 송신기가 상기 타깃 편이에 따라 패킷을 송신하는 경우, 그것은 또한 명 백하게 상기 최소 편이를 준수한다.
상기 타깃 편이는 실시간 데드라인(즉 최소 편이)을 여전히 충족하는 동안 (예를 들어 핸드오버동안) 상기 전송 레이트가 갑자기 감소되어야 하는 경우 상기 샘플링 레이트를 감소시킬 필요를 감소시키도록 한다. 즉, 상기 타깃 편이는 상기 전송 레이트가 충분히 양호한 경우, 엄격히 실시간을 충족시킬 필요가 있는 것보다 더 일찍 상기 송신기가 패킷들을 송신하게 한다.
상기 두번째 매개 변수의 사용을 더 잘 설명하기 위하여, 상기 송신기가 상기 최소 편이에 근접하게 동작한다고 가정하자. 이제 상기 전송 레이트가 상당히 감소된다고 가정하자(이것은 예를 들어 원래의 스트림에 대해 이용가능한 비트레이트를 감소시킬 핸드오버 또는 RTP 재전송 때문일 수 있다). 상기 최소 편이(그리고 실시간)를 보장하기 위하여, 상기 송신기는 또한 그것의 샘플링 레이트를 급격히 감소시켜야 할 것이다. 이것은 상기 송신기가 예를 들어 상기 샘플링 레이트의 감소를 달성하기 위하여 프레임들을 스킵하도록 강요될 수 있기 때문에 품질의 감소를 야기할 것이다.
상기 서버가 상기 타깃 편이에 근접하게 동작하는 경우, 상기 전송 레이트가 감소될 때 상기 샘플링 레이트의 감소는 전송 레이트의 감소만큼 급격할 필요가 없다. 상기 샘플링 레이트를 저하시키지 않고 상기 전송 레이트를 저하시키는 상기 송신기는 상기 타깃 편이 미만으로 실제 편이를 감소시킬 것이지만, 상기 최소 편이는 전송 레이트의 관찰된 감소에서와 같이 극적으로 상기 샘플링 레이트를 감소시킬 필요없이 여전히 유지될 수 있다.
그것의 편이를 감소시키도록 강요된 후에, 상기 서버는 상기 전송 레이트가 다시 증가하는 경우 그것의 타깃 편이를 재형성해야 한다. 상기 수신기에 의해 시그널링된 상기 타깃 편이를 달성하기 위하여, 상기 송신기는 현재의 전송 레이트 제약에 따라 전송 레이트 증가 및 샘플링 레이트 감소(또는 전송 레이트 감소 및 샘플링 레이트 증가)의 조합을 사용할 수 있다.
이와 같이 정의된 타깃 편이를 가지는 것은 과격한 전송 레이트 감소를 처리하는 경우 상기 수신기가 상기 서버에게 우선 상기 편이를 감소시키고 다시 증가시키도록 "명령"할 필요가 없게 한다. 상기 송신기는 스스로 상기 수신기에 의해 이전에 시그널링된 상기 타깃 편이로부터 상기 편이를 감소시키도록 결정하지만, 다시 상기 편이를 상기 타깃 편이쪽으로 증가시킨다.
이러한 이유로 인하여, 이 방식은 혁신적인 것으로 불리울 수 있다. 아무런 (편이) 시그널링도 상기 전송 레이트가 감소될 때에 발생할 필요가 없다.
3) 송신-선행 바이트들의 최대 수 - 이 매개 변수는 시간 t에서 송신된 바이트들의 수와 샘플링 시간 t까지 샘플링된 바이트들의 수 간의 최대 차(즉 상기 전송 곡선과 상기 샘플링 곡선 간의 차: T(t)-S(t))를 정의한다. 이 매개 변수는 포지티브 편이의 결과로서 수신된 상기 패킷들을 유지하도록 상기 수신기에서 필요한 버퍼 크기를 제한하고 상기 버퍼 크기동안 상기 수신기는 그들의 플레이아웃 시간을 대기해야 한다. 이 매개 변수의 목표는 버퍼 오버플로우를 방지하는 것이다.
이들 매개 변수들은 전송 곡선 T(t)와 샘플링 곡선 S(t)의 예를 가지고 도 1에 도시된다.
C. 레이트 적응 동작 범위 매개 변수들에 대한 서버 준수 요건들
상기 "최소 편이" 및 상기 "송신-선행 바이트들의 최대 수" 매개 변수들은 엄격히 상기 서버에 의해 준수되어야 한다. 따라서, 상기 서버는 정상 전송 조건하에서 그것의 능력 및 이용가능한 미디어 부호화가 허용하는 만큼 상기 "타깃 편이"에 근접하게 동작하려고 할 것이다.
시간에 대한 가능한 미디어 부호화 레이트 편차로 인하여 상기 "타깃 편이"는 모든 송신된 패킷들에 대해 상기 서버에 의해 정확하게 준수될 수 없다. 상기 "타깃 편이"로부터의 이탈은 상기 "타깃 편이"에 대한 엄격한 집착이 불필요한 품질 저하를 초래할 것이라고 상기 서버가 판단하는 전송 조건하에서 상기 서버의 재량에 따라 허용된다(하기의 사용 경우 예들을 참조하라). 그것은 또한 상기 "타깃 편이"가 얼마나 신속히 이러한 이탈 이후에 회복되는지를 나타내는 서버 결정/능력에 달려 있다.
상기 "타깃 편이" 및 "송신-선행 바이트들의 최대 수" 매개 변수들이 충돌할 때마다(즉 상기 타깃 편이를 유지하는 것이 상기 송신-선행 바이트들의 최대 수를 초과하는 것을 초래하는 경우), 후자가 우선한다.
D. 서버와 클라이언트 간에 분담된 책임의 명료화
중단없는 플레이아웃을 유지하는 비결은 수신기 버퍼 레벨의 효율적인 관리이다. 이것은 상기 클라이언트에서의 상기 플레이아웃 곡선 및 수신 곡선 양자에 대해 최소한의 암시적이거나 추정된 제어를 가짐으로써 달성될 수 있다. 정의에 의해 상기 클라이언트는 복호화/플레이아웃 타임라인을 알고 있고 제어한다. 상기 송 신기에 의해 소개될 편이의 제어를 가능하게 함으로써, 상기 클라이언트에게는 상기 수신기 곡선 및 상기 샘플링 곡선에 대한 수신기 곡선의 관계의 적어도 추정된 제어가 제공되어, 상기 수신기 버퍼 레벨의 제어가 제공된다.
따라서, 상기 클라이언트는 그것의 절대 버퍼링 한계를 고려하는 편이 매개 변수들을 선택하고 요구한다. 이러한 협력적인 레이트 적응 모델에서, 상기 수신기는 단지 상기 편이 매개 변수들을 요구하고 상기 요구에 응답하는 경우 그것의 부호화 레이트 및/또는 전송 레이트를 적응시키는 방법은 상기 송신기에 달려 있다. 상기 전송 곡선 또는 상기 샘플링 곡선 또는 이들의 조합이 적응될 수 있다.
하지만, 샘플링 레이트 제어(즉 전송을 위한 비트스트림의 선택)는 다음과 같은 이유 때문에 서버 제어하에 있게 된다:
- 각 비트스트림의 정확한 특성들, 예를 들어, 스위칭 위치들, 프레임들의 우선 순위, 미래의 프레임 크기들에 대해 알고 있는 것은 단지 서버이다.
- 상기 네트워크 비트 레이트와 일치하는 비트스트림 레이트가 존재하지 않을 수 있어서, 상기 서버는 상기 비트스트림을 상기 네트워크 비트 레이트에 맞추기 위하여 어떤 "트릭"(예를 들어, 세선화(thinning), 스위칭 업-앤-다운)을 수행할 수 있다.
전송 레이트 제어(즉 전송할 레이트)는 또한 다음과 같은 이유로 인하여 서버 제어하에 있게 된다:
- 일반적인 경우 진행중인 데이터의 양을 측정할 수 있는 것은 단지 서버이다.
상기 샘플링 레이트 제어가 한정된 융통성을 가지는 경우 상기 전송 레이트를 상기 샘플링 레이트에 결부시킬 필요가 있을 수 있다.
상기 송신기는 상기 적응을 수행하려고 하는 경우 다음 사항에 의해 제한된다:
- 상기 전송 곡선의 변경: 상기 전송 곡선은 상기 수신 곡선에 의해 제약되므로 상기 송신기는 전송 레이트를 증가시킬 수 없다. 송신기가 송신기의 전체 이용가능한 대역폭을 이전에 사용하지 않은 경우에만 송신기는 전송 레이트를 증가시킬 수 있다. 예를 들어, 서버는 그것의 허용가능한 전송 레이트를 계산하기 위하여 전송 제어 프로토콜 친화적 레이트 제어(TFRC: Transmission Control Protocol Friendly Rate Control) 메커니즘을 사용하고 있을 수 있고(또는 수신기 시그널링을 통해 명백한 대역폭 정보를 수신하고 있을 수 있고) 그것의 레이트를 상기 레이트 TFRC(또는 실제 시그널링된 대역폭)를 넘어 증가시키지 않을 것이다.
- 상기 샘플링 곡선의 변경: 상기 송신기의 레이트 적응 능력에 의존한다. 예를 들어 상기 송신기가 비트스트림 스위칭을 구현하는 경우 그리고 상기 송신기가 그것의 최저(또는 최고) 비트스트림에서 전송하고 있는 경우, 상기 송신기는 상기 샘플링 레이트를 더 감소(또는 감소)시킬 수 없을 것이다.
E. 사용 경우들
본 발명에 의하면, 상기 서버 레이트 적응 동작 범위의 매개 변수들은 핸드오버, 재전송 및 클록 드리프트와 같은 경우에 언더 플로우, 오버플로우 및 품질 저하의 발생을 최소화하기 위하여 상기 서버와 상기 수신기 간에 협상된다.
RTP 패킷 전송의 경우, 상기 수신기는 상기 수신기가 수행하기를 원하는 패킷 재전송의 수 및 상기 수신기가 재전송을 위해 감내할 지연을 선택할 수 있다.
핸드오버의 경우, 상기 수신기는 상기 무선 네트워크 유형으로부터, 예를 들어 그것이 예상하는 핸드오버 길이 및 요구되는 타깃 편이를 획득할 수 있다. 상기 수신기는 무선 링크에 대해 더 잘 알고 있고 또한 시스템간 핸드오버를 탐지할 수 있어서 이에 따라 상기 클록 편이 매개 변수들을 적응시킬 필요를 탐지한다.
상기 수신기는 상기 클록 편이 매개 변수들을 갱신함으로써, 상기 송신기와 함께 상기 클록 편이를 보상할 수 있다.
RTP 재전송
재전송 요구를 하기 전에, 상기 수신기는 재전송된 패킷이 그것의 플레이아웃 시간 이전에 제시간에 도착하는지를 보통 추정할 필요가 있다. 상기 패킷이 제시간에 도착하지 않는 경우, 상기 재전송은 이용가능한 대역폭을 낭비한다.
상기 송신기는 상기 수신기에서 상기 실시간 제약을 충족시키기 위하여 적어도 상기 편이
을 가지고 스케줄링되어야 하는 패킷들의 샘플링 시간을 알고 있다.
재전송 패킷은 이와 관련하여 처음으로 송신된 패킷과 상이하지 않다. 상기 최소 편이는 상기 수신기에서의 언더플로우 임계값을 나타내기 때문에, 상기 송신기는 t가 현재 시간인 경우 패킷의 타임스탬프가
미만이라면 패킷을 재전송하지 않아야 한다.
따라서 상기 편이 매개 변수 시그널링은 패킷들의 복호화 시간 이전에 상기 수신기에서 제시간에 도착하지 않을 패킷들 그리고 재전송이 이용가능한 대역폭을 낭비할 패킷들을 상기 송신기가 재전송하지 않도록 함으로써 패킷 재전송을 더 효율적이 되도록 한다. 상기 수신기는 빠진 패킷이 그것의 플레이아웃 이전에 수신될 수 있는지에 대한 그것의 추정에 있어서 지나치게 보수적일 필요는 없다. 잘못된 추정은 상기 서버가 상기 패킷을 재전송하지 않을 것처럼 (쓸모없는 요구외에) 아무런 영향도 미치지 않을 것이다.
상기 수신기는 또한 그것이 상기 타깃 편이를 통해 수행하고 싶은 재전송들의 수를 흥정할 것이다. 상기 타깃 편이의 값이 높을 수록, 상기 네트워크 상태가 상태가 좋은 동안 더 많은 패킷들이 선행하여 송신될 것이다(그리고 상기 수신기 버퍼 레벨은 더 높아질 것이다). 차례로 이것은 상기 네트워크 상태가 악화되는 경우 재전송들을 위해 더 많은 시간을 제공할 것이다.
여기에서 다시 상기 클록 편이는 혁신적이다. 상기 수신기는 상기 편이 요구를 상기 RTCP 요구와 동기시킬 필요가 없다.
핸드오버
상기 클록 편이 시그널링은 핸드오버 때문에 상기 수신기에서 플레이아웃 중단을 방지하는 도구로 사용될 수 있다.
상기 수신기가 네트워크에 접속되고 상기 네트워크에 대한 예상되는 핸드오버 길이가 T
H라는 것을 상기 수신기가 알고 있다고 가정하자. 상기 수신기가 그것의 타깃 편이를 상기 최소 편이보다 적어도 T
H 만큼 크도록, 즉
이 되도록 설정한다고 가정하자.
핸드오버 이전에, 상기 송신기는 상기 패킷들을 초기에 송신함으로써 상기 타깃 편이를 충족시킨다. 상기 송신기가 핸드오버를 탐지하는 경우, 상기 송신기는 전송을 중단해야 한다(그리고 네트워크 버퍼 오버플로우 때문에 패킷 손실을 회피해야 한다). 상기 핸드오버 동안, 아무런 새로운 데이터도 송신되고 있지 않을지라도 상기 클록은 진행된다. 그 결과, (상기 핸드오버가 정확히 T
H동안 지속된다고 가정하면) 상기 핸드오버는 상기 편이를 시간 T
H의 양만큼 감소시킨다. 상기 송신기는 상기 핸드오버 이전에 상기 타깃 편이에서 동작하고 있었기 때문에, 상기 핸드오버 이후의 편이는
가 될 것이다.
이 값은 여전히 상기 최소 편이
보다 더 크다. 이것은 실시간이 여전히 충족되고 있고 상기 수신기에서 아무런 언더플로우도 존재하지 않았다는 것을 의미한다. 상기 핸드오버 동안, 상기 수신기는 중대한 품질 저하없이 상기 타깃 편이에 따라 상기 송신기에 의해 송신된 패킷들을 플레이아웃할 수 있다.
상기 핸드오버 이후에, 상기 송신기는 그것의 전송 레이트가 다시 증가하므로 상기 타깃 편이를 재형성할 것이다. 아무런 새로운 시그널링도 필요하지 않다.
상기 수신기는 상기 수신기가 감내할 수 있는 핸드오버 길이를 더 증가시키 기 위하여 그것의 타깃 편이를 증가시키고 싶은 경우에만 새로운 편이 매개 변수를 시그널링할 것이다. 이것은 특히 상이한 예상된 핸드오버 길이를 지닌 다른 유형의 네트워크로의 핸드오버가 존재하는 경우일 수 있다.
물론 상기 송신기는 상기 핸드오버를 탐지할 수 있을 필요가 있다. 상기 송신기는 몇몇 RTCP 간격들동안 RTCP 패킷을 수신하지 않음으로써 상기 핸드오버를 보통 탐지할 것이다. 상기 송신기가 가능한 한 빨리 상기 핸드오버를 탐지할 수 있기 위하여, 상기 수신기는 AVPF가 이용가능한 경우 초기 피드백 패킷을 송신해야 한다. AVPF는 RTCP 기반 피드백에 대한 확장된 프로파일이다.
상기 수신기가 RTSP를 통해 상기 매개 변수들을 송신하는 경우, 상기 수신기는 (동일한 매개 변수들 또는 갱신된 값을 가지고) 상기 핸드오버 이후에 새로운 요구를 송신할 수 있다. 이것은 빠른 RTCP 피드백이 이용가능하지 않은 경우 상기 핸드오버가 더 신속하게 끝난다는 것을 상기 송신기가 탐지하도록 도와줄 것이다.
상기 핸드오버 및 상기 버퍼 레벨에 대한 그것의 영향이 도 2에 도시된다. 이 예에서, 상기 핸드오버 동안, 상기 버퍼 레벨은 감소되지만 언더플로우되지 않았다. 상기 핸드오버 이후에, 상기 송신기는 스스로 상기 초기 타깃
을 재형성할 것이다. 하지만, 상기 버퍼는 상기 핸드오버동안 거의 비어있었기 때문에, 일단 상기 핸드오버가 끝나는 경우 상기 수신기는 상기 타깃의 더 큰 값을 시그널링하도록 선택할 수 있다. 이것은 상기 첫번째 핸드오버가 상기 수신기가 초기에 예상했던 것 그리고 미래에 상기 수신기가 더 큰 핸드오버들을 지원할 수 있 다고 확신하기를 원하는 것보다 더 크기 때문일 수 있다. 상기 새로운 타깃의 시그널링 및 상기 곡선들에 대한 그것의 영향이 도면에 도시되어 있다.
클록 드리프트(clock drift)
상기 송신기와 상기 수신기 간의 클록 드리프트 때문에 또는 (느린 클라이언트 플랫폼 운영 체제와 같은) 어떤 다른 이유로 인하여, 상기 송신기는 상기 수신기에게 너무 느리거나 너무 빠르게 보일 수 있다. 상기 드리프트는 새로운 편이 매개 변수들을 송신함으로써 보정될 수 있다.
예를 들어, 느린 수신기의 경우, 상기 수신기는 주기적으로 상기 최소 편이 값의 감소를 요구할 수 있다.
F. 메시지 포맷 및 전송
새로운 RTSP 헤더가 "3GPP-편이-매개 변수들(3GPP-Shift-Parameters)"로서 정의될 수 있다. 상기 헤더는 상기 클라이언트에 의해 요구된 상기 편이 매개 변수들을 시그널링하기 위하여 클라이언트 요구들에서 사용될 수 있다.
상기 요구가 세션 레벨 RTSP URL(균일 자원 위치기)에 적용되는 경우, 상기 편이는 상기 세션에서 모든 미디어에 적용되어야 한다. 상기 요구가 미디어 레벨 RTSP URL에 적용되는 경우, 상기 편이는 상기 미디어에만 적용되어야 한다. 상기 송신기는 또한 그것의 응답에서 상기 "3GPP-편이-매개 변수들"을 사용한다. 상기 매개 변수들은 상기 클라이언트에 의해 요구된 매개 변수들일 수 있다. 하지만, 상기 송신기는 (한정된 송신기 능력 때문에) 단지 상기 요구된 매개 변수들에 가능한 한 근접한 매개 변수들을 반환할 수 있다.
상기 새로운 헤더는 어떤 RTSP 방법을 사용하여 송신될 수 있다.
상기 RTP 헤더에 대한 ABNF가 하기에 표시된다:
처음에 상기 클라이언트는 모든 매개 변수들을 송신한다. 후속 요구시, 상기 클라이언트는 그것이 변경을 요구한 매개 변수(들)만을 송신할 수 있다.
상기 변경이 허용되는 경우, 상기 모든 매개 변수들이 상기 수신기에 의해 요구되는 바와 같이 설정되었다면 상기 서버는 상기 헤더를 송신할 필요가 없다.
이전의 요구가 완료되기 전에 새로운 요구가 상기 서버에 의해 수신되는 경우, 상기 서버는 마지막 요구를 준수해야 한다.
상기 송신기는 또한 상기 송신기가 사용하고 싶은 매개 변수들을 세션의 시작시 상기 수신기에 시그널링할 수 있다. 상기 수신기는 요구하기 위하여 상기 매개 변수들 중 어떤 값들을 선택하는 경우 상기 매개 변수들을 고려한다.
상기 매개 변수들을 시그널링하는 바람직한 방법이 RTSP를 사용하는 것일지라도, RTCP와 같은 신뢰성없는 전송 프로토콜이 사용될 수 있다.
도 3은 본 발명에 의한 스트리밍 네트워크에서의 멀티미디어 스트리밍 시스템(1)을 도시한 블록도로서, 단말기 또는 스트리밍 클라이언트(60)와 상기 스트리밍 서버(10) 간에 협상되는 바와 같이, 네트워크 요소 또는 스트리밍 서버(10)에 대한 레이트 적응 동작 범위를 결정하는 매개 변수들을 시그널링하기 위한 수단이 제공된다.
상기 스트리밍 서버(10)는 애플리케이션 레벨 시그널링 엔진(20), 레이트 제어기(30) 및 서버 버퍼(40)를 포함한다. 상기 스트리밍 클라이언트(60)는 상기 스트리밍 서버(10)내의 상기 애플리케이션 레벨 시그널링 엔진(20)에 대응하고, 상기 애플리케이션 레벨 시그널링 엔진(20)과 통신하기에 적합한 애플리케이션 레벨 시그널링 엔진(70)을 포함한다. 상기 스트리밍 클라이언트는 도 3에 도시된 본 발명의 실시예에서, 단일 유닛으로서 통합된, 지터 버퍼(82) 및 전치-복호화 버퍼(84)를 포함하는, 클라이언트 버퍼(80)를 더 포함한다. 본 발명의 다른 실시예들에서, 스트리밍 클라이언트(60)는 개별적으로 구현되는 지터 버퍼 및 전치-복호화 버퍼를 포함할 수 있다. 상기 스트리밍 클라이언트는 미디어 복호기(90), 후치-복호기 버퍼(100), 버퍼 제어기(110) 및 디스플레이/플레이아웃 장치(120)를 더 포함한다.
도 3에 도시된 시스템은 스트리밍 서버(10)와 스트리밍 클라이언트(60) 사이에 위치한 "채널 버퍼"(50)를 포함하는 것으로 더 도시되는데, 이것은 상기 스트리밍 서버로부터 상기 클라이언트로의 데이터 패킷들의 전송 중 발생하는 변하는 전송 지연을 나타낸다.
상기 스트리밍 서버(60)에서, 미디어 데이터는 상기 전송 채널로부터 수신되 고 클라이언트 버퍼(80)에서 버퍼링된다. 전치-복호기 버퍼(84) 및 지터 버퍼(82)의 매개 변수들은 상기 버퍼 제어기(110)에 의해 설정된다. 상기 매개 변수들은 상기 서버 권고 전치-복호기 버퍼링 매개 변수들 및 상기 클라이언트에 의해 추정된 바와 같이 요구되는 부가적인 버퍼링의 집합체로서 선택된다. 상기 클라이언트는 상기 이용가능한 전송 채널을 통해 예상되는 패킷 전송 지연 편차(즉 지터)를 감내하는데 무엇이 필요한지를 추정한다. 이러한 집합체는 상기 클라이언트의 최대 버퍼링 능력에 의해 제약된다. 미디어 복호기(90)는 상기 클라이언트 버퍼로부터 미디어 데이터를 추출하고 당해 미디어 유형에 적합한 방식으로 상기 미디어 데이터를 복호화한다. 상기 미디어 데이터가 일반적으로 다수의 상이한 미디어 유형들을 포함할 것이라는 것은 이해되어야 한다. 예를 들어, 상기 서버로부터 전송된 상기 미디어 데이터가 비디오 시퀀스를 나타내는 경우, 그것은 비디오 데이터에 부가하여 적어도 하나의 오디오 요소를 포함할 것 같다. 그러므로 도 3에 도시된 바와 같이 미디어 복호기(90)가 실제로 하나보다 많은 복호기, 예를 들어 특정 비디오 부호화 표준에 따라 구현된 비디오 복호기 및 관련된 오디오 복호기를 포함할 수 있다는 것은 이해되어야 한다. 상기 미디어 데이터는 상기 미디어 복호기(90)에서 복호화되기 때문에, 그것은 그것의 예정된 플레이아웃 시간까지 임시로 저장되는 후치-복호기 버퍼(100)로 출력되는데, 이 시점에 그것은 버퍼 제어기(110)의 제어하에서 상기 후치-복호기 버퍼로부터 디스플레이/플레이아웃 장치(120)로 전달된다.
본 발명에 의하면, 버퍼 제어기(110)는 상기 최소 편이, 상기 타깃 편이 및 송신-선행 바이트들의 최대 수의 표시를 상기 애플리케이션 레벨 시그널링 엔진 (70)에 제공하기에 적합하다. 상기 매개 변수들은 예를 들어 상기 클라이언트의 버퍼링 한계, 상기 복호화/플레이아웃 타임라인 등에 기반하여, 소프트웨어 프로그램(116)에 의해 결정된다. 상기 애플리케이션 레벨 시그널링 엔진은 차례로 상기 동작 범위 레이트 적응 매개 변수들을 나타내는 신호(300)를 상기 스트리밍 서버(10)로 전송하기에 적합하다. 상기 매개 변수들은 예를 들어 실시간 스트리밍 프로토콜(RTSP: Real Time Streaming Protocol)을 사용하여 클라이언트로부터 상기 서버로 전송된다. 상기 RTSP 헤더는 예를 들어 "3GPP-편이-매개 변수들"로서 정의될 수 있다.
상기 서버 사이트에서, 상기 서버의 레이트 제어기(30)는 상기 편이를 관리하고 그것을 상기 레이트 적응 범위내에 유지하면서 상기 전송 레이트를 상기 수신 레이트에 적응시키도록 동작하고, 상기 샘플링 레이트를 상기 전송 레이트에 적응시키도록 동작한다. 상기 서버는 또한 상기 클라이언트로 전송될 상기 패킷들을 타임스탬핑하기 위한 전송 클록(32)을 구비한다. 상기 서버는 소프트웨어 프로그램(36)을 사용하여, 상기 클라이언트에 의해 권고된 매개 변수들에 따라 전송된 데이터 레이트를 조정하고, 상기 전송 채널에 대한 비트레이트를 변경하며, 상기 클라이언트의 권고된 편이 매개 변수들을 고려함으로써 전치-복호기 버퍼 언더플로우로 인해 상기 클라이언트에서의 재생의 중단을 회피하려고 시도하고 버퍼 오버플로우로 인해 상기 클라이언트에서 패킷들을 버리도록 동작한다.
서버 버퍼(40)는 데이터 패킷들이 상기 전송 채널을 통해 상기 스트리밍 서버로부터 스트리밍 클라이언트(60)로 전송되기 전에 임시로 상기 데이터 패킷들을 저장한다. 데이터 패킷들이 실시간으로 샘플링되는 "라이브" 스트리밍 시나리오에서, 상기 서버 버퍼는 데이터 패킷들이 샘플링 시간에 배치되고 전송 시간에 추출되는 진정한 물리적인 버퍼이다. 데이터 패킷들이 실시간으로 샘플링되지 않지만 사전 부호화된 파일에 저장되고 전송 시간에 상기 파일로부터 읽혀지는 "사전-부호화된" 스트리밍 시나리오에서, 상기 서버 버퍼는 데이터 패킷들의 (상기 사전-부호화된 파일의 첫번째 데이터 패킷이 전송되는 경우 상기 스트리밍 서버에서 시작된 샘플링 클록을 참조하여) 샘플링 시간과 전송 시간 간의 차를 나타내는 가상 버퍼이다.
상기 서버는 또한 상기 애플리케이션 레벨 시그널링 엔진(20)을 사용하여 상기 서버가 사용하기를 원하는 매개 변수들을 나타내는 신호(300)를 상기 세션의 시작시 상기 수신기로 송신할 수 있다. 상기 신호(300)로 표시된 매개 변수들을 고려함으로써, 상기 수신기는 상기 서버 레이트 적응 동작 범위의 매개 변수들을 선택한다. 상기 서버 능력에 기반하여, 상기 서버는 상기 신호(300)를 사용하여 상기 서버가 레이트 적응을 위해 사용할 수 있는 매개 변수들을 반환함으로써 상기 클라이언트의 요구에 응답할 수 있다.
본 발명의 이점들
종래 기술의 방법들(RTSP 헤더들 및 비트레이트 스위칭)은 많은 제한들을 갖는다. 상기 제한들 중 하나의 제한은 속도(SPEED) 헤더가 RTSP 플레이(RTSP PLAY) 요구시에만 송신될 수 있다는 것이다.
- 플레이(PLAY)는 버퍼 제어를 위해 조작될 것임을 의미하지는 않고, 오히려 상기 클라이언트로부터 상기 서버로 사용자 요구들을 이동하는 것을 의미한다.
- 범위(Range) 요구를 지닌 새로운 플레이(PLAY)에 대한 응답은 상기 서버가 상기 요구를 획득하는 시간에 실제 플레이 위치와 동기되는 것이 예상될 수 없다(즉 데이터의 스킵 또는 재송신이 가능하다).
- RTSP SPEED를 통해 상기 클라이언트에 의해 요구되는 바와 같이, 상기 전송 레이트를 변경하는 것은 상기 전송 레이트가 이용가능한 비트레이트에 적응될 필요가 있기 때문에 종종 전혀 가능하지 않을 수 있다.
그것은 상기 수신기에 의해 직접 시간 도메인(즉 그것이 상기 수신기가 주어진 양의 데이터를 재생하는데 걸리는 시간의 양)으로 매핑될 수 없는 비트레이트 도메인에서 동작한다. 이것은 상기 샘플링 곡선이 보통 직선이 아니기 때문이다.
- 상기 NW 비트레이트와 일치하는 비트스트림 레이트가 존재하지 않을 수 있다.
- 상기 클라이언트는 상기 수신기 버퍼 레벨 감소/증가의 어느 정도가 주어진 비트스트림내의 상기 비트레이트의 변경에 기인하는지 또는 상기 비트스트림 평균 레이트 및 상기 전송 레이트 간의 차의 누적에 기인하는지를 알지 못한다.
- 상기 서버와 상기 클라이언트 태스크들의 분리가 존재하지 않기 때문에 샘플링 곡선 모양 형성 결정들 간의 충돌은 상기 송신기 및 상기 수신기에서 발생된다. 이것은 상기 송신기 및 수신기 책임의 명백한 분담이 존재하는, 상기 클록 편이 시그널링과 대조될 것이다. 상기 수신기는 단지 상기 곡선들에 대한 제약들을 변경하고 반면에 상기 송신기는 상기 제약들을 충족시키기 위하여 상기 곡선들의 실제 모양 형성을 행한다.
본 발명은 다음 이점들을 지닌다:
- 상기 방식은 더 혁신적인 방법으로 동작하도록 형성된다. 상기 아이디어는 상기 클라이언트가 엄격한 동작 포인트보다는 동작하는 범위를 요구하면서, 덜 제한적이고 더 융통성있는 방식으로 상기 서버가 상기 레이트 제어를 동작시키도록 하는 것이다.
- 상기 요구된 서버 레이트 적응 동작 범위는 순응하는 서버 구현을 단순화하면서, 이제 명백하게 그리고 모호하지 않게 정의된다.
- 상기 방식의 시그널링 오버헤드는 서버 시그널링에 대한 클라이언트의 (즉 RTP에 동기되는) 요구되는 주파수 및 속도를 감소시킴으로써 감소된다.
- 서버 레이트 적응 동작 범위 요구 메시지들에 대한 클라이언트의 전송 신뢰성 및 정확한 파이프라이닝은 RTSP 시그널링을 사용하여 해결될 수 있다. 이것은 시그널링의 속도 및 주파수에 대한 완화된 요건과 일치한다(즉 더 이상 모순되지 않는다).
요컨대, 본 발명은 멀티미디어 스트리밍 네트워크에서 단말기 또는 클라이언트내의 수신기 버퍼의 레벨을 적응적으로 제어하기 위한 방법 및 시스템을 제공한다. 상기 멀티미디어 스트리밍 네트워크는 스트리밍 데이터를 상기 클라이언트에 제공하기 위한 네트워크 요소 또는 서버를 구비한다. 상기 서버는 상기 전송 레이트를 수신 레이트에 적응시키는 것 또는 정체 제어를 담당하고, 상기 샘플링 레이트를 상기 전송 레이트에 적응시키는 것을 담당한다. 따라서, 상기 서버는 상기 편 이를 관리하고 그것을 상기 레이트 적응 동작 범위내에 유지시킨다. 상기 클라이언트는 또한 네트워크 지터로서 알려져 있는, 패킷 전송 지연 편차를 보상하는 것을 담당한다. 상기 클라이언트는 또한 상기 서버 레이트 적응 동작 범위의 매개 변수들을 설정하는 것을 담당한다. 상기 클라이언트는 상기 편이 매개 변수들을 선택하고 상기 편이 매개 변수들을 상기 서버로 송신하지만, 상기 매개 변수들에 응답하는 경우 그것의 부호화 레이트 또는 전송 레이트를 적응시키는 것은 상기 서버에 달려있다.
본 발명이 본 발명의 하나 이상의 실시예들에 관해 설명되었을지라도, 본 발명의 형태 및 상세에 있어서의 상기한 변경들과 다양한 다른 변경들, 생략들 및 변경들이 본 발명의 범위를 벗어나지 않고 행해질 수 있다는 것은 당업자에 의해 이해될 것이다.