KR20110044258A - 시-변화 전송 미디어를 통한 데이터 스트리밍 - Google Patents

시-변화 전송 미디어를 통한 데이터 스트리밍 Download PDF

Info

Publication number
KR20110044258A
KR20110044258A KR1020117004353A KR20117004353A KR20110044258A KR 20110044258 A KR20110044258 A KR 20110044258A KR 1020117004353 A KR1020117004353 A KR 1020117004353A KR 20117004353 A KR20117004353 A KR 20117004353A KR 20110044258 A KR20110044258 A KR 20110044258A
Authority
KR
South Korea
Prior art keywords
metric
encoding
value
connection
time
Prior art date
Application number
KR1020117004353A
Other languages
English (en)
Other versions
KR101399509B1 (ko
Inventor
프랑시스 로저 라봉뜨
세바스찬 코트
이브 르페브르
Original Assignee
밴트릭스 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/180,697 external-priority patent/US8001260B2/en
Priority claimed from US12/180,704 external-priority patent/US7844725B2/en
Application filed by 밴트릭스 코오퍼레이션 filed Critical 밴트릭스 코오퍼레이션
Publication of KR20110044258A publication Critical patent/KR20110044258A/ko
Application granted granted Critical
Publication of KR101399509B1 publication Critical patent/KR101399509B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/23805Controlling the feeding rate to the network, e.g. by controlling the video pump
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/38Flow control; Congestion control by adapting coding or compression rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)

Abstract

시-변화 상황에서 연결을 통한 인코더로부터 디코더로의 데이터 스트리밍 방법들이 개시된다. 상기 연결은 명목 플로우 레이트에 배정되고, 상기 연결과 관련된 인코딩 계수는 상기 연결의 시-변화 상태에 호환되는 허용가능 플로우-레이트를 결정하기 위해 상기 명목 플로우 레이트를 조절한다. 다수 성능 지표는 상기 연결과 관련되고, 적응적으로 선택된 타임 윈도우에서 얻어진 측정값들의 대응하는 셋들이 얻어진다. 상기 성능 지표들과 일-대-일 대응되는 성능 매트릭들이 결정되고, 각각의 소정 수용 간격들의 하계들 및 상계들과 비교된다. 상기 성능 매트릭들의 함수로 현재 인코딩 계수가 계산되고, 상기 허용가능 플로우 레이트를 결정하기 위해 사용된다. 상기 인코더의 구성은 상기 허용가능 플로우 레이트의 제약 하에서 신호 충실도를 최대화하는 인코딩된 신호를 생성하기 위해 적응된다.

Description

시-변화 전송 미디어를 통한 데이터 스트리밍{DATA STREAMING THROUGH TIME-VARYING TRANSPORT MEDIA}
본 발명은 소스(source)로부터 다수의 싱크(sink)로의 데이터 통신에 관한 것이다. 여기서 소스는 소스로부터 개개의 싱크로의 경로의 상태(condition)에 따라 소스로부터 개개의 싱크로의 플로우 레이트(flow rate)를 조절(adapt)할 수 있다.
데이터-스트리밍 시스템(data-streaming system)에 있어서, 서버는 다수의 싱크와 통신할 수 있다. 일반적으로, 서버와 관련된 데이터 소스(data source associated with server)로부터 개개의 데이터 싱크로의 경로(path)는, 소스로부터 공유 네트워크(shared network)의 제1스위칭 노드까지의 제1스판(span)과, 제1스위칭 노드로부터 공유 네트워크의 제2스위칭 노드까지의 공유 네트워크를 통한 스위치드 패스(switched path), 그리고 제2스위칭 노드로부터 개개의 싱크까지의 제2스판을 포함한다. 경로에 의해 지속 될 수 있는 최대 플로우 레이트는 공유 네트워크의 부하 상태와 전송 미디어의 물리적 상태에 따른 시간에 따라서 변할 수 있다. 어떠한 경로 부분도 서로 다른 우선 지정들(priority designations)에 할당되는 다수의 연결(multiple connections)에 의해 공유될 수 있다.
만약, 연결이 컴퓨터 파일과 같은 지연-내성 데이터(delay-tolerant data)를 운반하면, 전송된 데이터의 완전성(integrity)은 알려진 엔드-투-엔드(end-to-end) 프로토콜(손실 데이터의 재전송 또는 손실된 것으로 인지된 데이터에 의존함)을 사용하여 경로 상태의 변동에도 보존될 수 있다. 만약, 연결이 데이터 재전송이 바람직하지 않은 실시간 비디오와 같은 지연-민감 데이터(delay-sensitive data)를 운반하면, 신호 소스 또는 신호 소스에 관련된 신호 인코더가 각각의 연결의 인지된 능력에 따라 신호 내용(signal content)에 적응하는 것이 매우 중요하다.
그러므로, 연결-상태가 시간에 따라 변하더라도 서비스 품질을 유지하기 위해, 실-시간 연결-상태 평가(real-time connection-state evaluation)와 신호-내용 적응(signal-content adaptation)에 대응하는 수단이 필요하다.
본 발명은 소스로부터 싱크로의 경로 상태에 따라 소스로부터 싱크로의 데이터의 플로우 레이트(flow rate)를 조절하는 방법 및 장치를 제공한다.
일 측면에 따르면, 본 발명은 시-변 연결(time-varying connection)을 통해 인코더로부터 디코더로의 데이터 스트리밍 방법을 제공한다. 상기 방법은, 상기 연결을 특징짓는 측정값을 획득하는 단계; 상기 측정값에 따라 상기 연결의 투과율 변화를 예측하는 단계; 양호한(favorable) 인코딩 레이트(encoding rate)를 얻기 위해 상기 투과율 변화에 호환되는 상기 인코더의 현재 인코딩 레이트에 대한 조정(adjustment)을 결정하는 단계; 및 상기 양호한 인코딩 레이트에 따라 신호를 인코딩하도록 상기 인코더에 명령하는 단계를 포함한다. 상기 연결은 초기에 명목 인코딩 레이트(nominal encoding rate)에 할당된다. 명목 인코딩 레이트는 인코더의 유형(classification)에 따라 협상되거나 결정될 수 있다.
상기 측정값은 상기 인코더와 상기 디코더 간의 전송 지연(transfer delay), 데이터 손실(data-loss)의 비율, 또는 디코더에서의 수신 버퍼의 점유 시간(occupancy)과 같은 성능 지표를 포함할 수 있다.
인코딩 레이트는 상기 명목 인코딩 레이트와 제1인코딩 계수를 곱셈하여 업데이트될 수 있는데, 상기 제1인코딩 계수는 상기 측정값으로부터 얻어지는 제1메트릭(metric)에 따라 결정될 수 있다. 제1인코딩 계수는 제1메트릭의 소정 함수에 따라 결정될 수 있다. 제1메트릭은 타임 윈도우에서의 측정값의 평균값으로 선택될 수 있다.
대안적으로, 인코딩 레이트는 상기 명목 인코딩 레이트와 제2인코딩 계수를 곱셈하여 업데이트될 수 있는데, 상기 제2인코딩 계수는 상기 타임 윈도우 동안의 측정값 동향(trend)에 기초한 제2메트릭에 따라 결정될 수 있다. 상기 인코딩 계수는 자신의 현재값과 제2메트릭의 소정 함수에 따라 결정되는 지수(factor)를 곱셈하여 업데이트될 수 있다. 측정값 동향은 타임 윈도우 동안의 시간에 대한 측정값에 관한 회귀선(regression line)의 기울기에 기초할 수 있다. 측정값 동향은 또한 회귀선의 기울기와 타임 윈도우 내에서의 짧은 구간 동안의 측정값의 그래디언트에 기초할 수 있다.
다른 측면에 따르면, 본 발명은 데이터-스트리밍 서버로부터 클라이언트 장치에 시-변화 연결을 통해 전송되는 신호의 적응형 인코딩 레이트를 결정하는 방법이 제공된다. 상기 방법은, 상기 연결의 현재 인코딩 레이트를 알아내는 단계; 제1타임 인스턴트와 제2타임 인스턴트 사이의 타임 윈도우에서 전송-지연 측정값을 얻는 단계; 및 상기 타임 윈도우에서 데이터-손실-비율 측정값을 얻는 단계를 포함한다. 타임 윈도우 내의 각각의 타임 인스턴트들에 대한 전송-지연 측정값에 관한 회귀선이 결정될 수 있으며, 회귀선의 기울기가 측정값의 동향을 나타내는 것으로 고려될 수 있다. 제2타임 인스턴트 직전의 선택된 전송-지연 측정값의 그래디언트(gradient) 역시 결정될 수 있다.
제1잠정(tentative) 인코딩 레이트는 상기 기울기와 상기 그래디언트에 따라 결정될 수 있으며, 제2잠정 인코딩 레이트는 데이터-손실-비율 측정값에 따라 결정될 수 있다. 우선의 인코딩 레이트(preferred encoding rate)는 제1인코딩 레이트와 제2인코딩 레이트 중 더 작은 것으로 선택될 수 있으며, 이에 의해 전송-지연과 데이터-손실에 대한 더욱 엄격한 요구를 충족시킬 수 있다.
상기 방법은, 상기 클라이언트 장치에 관련된 버퍼(buffer associated with the client)의 점유 시간 측정값을 얻는 단계를 더 포함할 수 있다. 만약, 전송-지연과 데이터-손실의 성능 요구를 만족하는 우선의 인코딩 레이트가 명목 인코딩 레이트를 넘어서고 점유 시간이 소정 버퍼-점유 시간 문턱을 초과하면, 우선의 인코딩 레이트는 버퍼 오버플로우를 방지하기 위해 명목 인코딩 레이트와 같아지도록 줄어들 수 있다. 제1잠정 인코딩 레이트는 현재 인코딩 레이트와 소정 함수에 따라 결정된 계수 E*를 곱셈하여 결정될 수 있다. 여기서 상기 소정 함수는 E*=Γ(α,β), α는 회귀선의 상기 기울기, 그리고 β는 그래디언트이다.
상기 방법은 또한, 데이터-손실-비율 측정값(θ로 표시됨)을 소정의 데이터-손실-비율 허용 간격의 하계 θmin 및 상계 θmax와 비교할 수 있다. 만약, θ>θmax이면 제2인코딩 계수 E**는 E**=(1-θ)로 결정된다. 만약, θ<θmin이면 제2인코딩 계수 E**는 E**=χ>1로 결정된다(χ는 디자인 파라미터). 제2잠정 인코딩 레이트를 결정하기 위해, 현재 인코딩 레이트와 제2인코딩 계수 E**가 곱셈될 수 있다.
또 다른 측면에 따르면, 본 발명은 데이터 스트리밍을 위한 시스템을 제공한다. 상기 시스템은 다수의 클라이언트와 통신하는 스트리밍 서버를 포함하며, 각각의 클라이언트는 디코더, 데이터 버퍼, 및 싱크 리포터(sink reporter)를 포함한다.
상기 스트리밍 서버는 신호 소스, 신호 소스에서 생성되는 신호들을 인코딩하기 위한 적응형 인코더, 다수의 클라이언트로 전달되는 다운스트림 제어 패킷을 만들어내기 위한 소스 리포터, 및 상기 다수의 클라이언트로부터 업스트림 제어 패킷을 수신하고 다수의 클라이언트를 위한 개개의 인코딩 계수를 결정하는 플로우 콘트롤러를 포함할 수 있다. 각각의 인코딩 계수는 각각의 클라이언트로 전달되는 신호의 인코딩 레이트를 결정하게 된다.
특정 클라이언트와 관련된 싱크 리포터는 플로우 콘트롤러로 전달되는 업스트림 제어 패킷을 만들어낸다. 플로우 콘트롤러는 연결의 현재 상태를 알아내기 위해 스트리밍 서버와 특정 클라이언트 간의 연결을 통해 교환되는 다운스트림 제어 패킷과 대응되는 업스트림 제어 패킷을 사용한다.
소스 리포터로부터 특정 클라이언트로 전달되는 다운스트림 제어 패킷은 패킷 식별자를 포함한다. 특정 다운스트림 제어 패킷에 응답하여 특정 클라이언트의 싱크 리포터에 의해 전달되는 업스트림 제어 패킷은 상기 패킷 식별자를 포함한다.
업스트림 제어 패킷은 또한 상기 특정 클라이언트와 관련된 데이터 버퍼의 점유 시간의 표시(indication)를 포함할 수 있다. 스트리밍 서버로부터 상기 특정 클라이언트로의 전송 지연의 표시자(indicator)와 손실 다운스트림 제어 패킷의 비율을 결정하기 위해 플로우 콘트롤러는 상기 특정 클라이언트의 업스트림 제어 패킷을 처리할 수 있다.
또 다른 측면에 따르면, 본 발명은 시-변 연결을 통한 인코더로부터 디코더로의 데이터 스트리밍 방법을 제공한다. 상기 방법은, 상기 인코더 출력의 플로우 레이트를 결정하기 위해 인코딩 계수와 상기 인코더를 관련짓는 단계; 상기 연결의 성능 메트릭(performance metric)과, 하계(lower bound)와 상계(upper bound)를 갖는 상기 성능 메트릭의 수용 간격(acceptance interval)을 정의하는 단계; 현재 인코딩 계수에서, 타임 윈도우 동안의 상기 연결에 대한 성능 측정값 셋(set of performance measurement)을 얻는 단계; 상기 측정값 셋에 따라 상기 연결의 상기 메트릭의 현재 값을 결정하는 단계; 및 상기 메트릭의 상기 현재 값과 상기 수용 간격에 따라 상기 인코딩 계수를 우선의 인코딩 계수(preferred encoding coefficient)로 조절하는 단계를 포함한다.
만약, 상기 메트릭의 상기 현재 값이 상기 수용 간격의 하계보다 작으면, 상기 현재의 인코딩 계수는 상기 우선의 인코딩 계수를 생성하기 위한 제1지수와 곱셈된다. 만약, 상기 메트릭의 상기 현재 값이 상기 상계를 초과하면, 상기 현재의 인코딩 계수는 상기 우선의 인코딩 계수를 생성하기 위한 제2지수와 곱셈된다. 상기 제1지수는 1을 초과하고 상기 제2지수는 1보다 작다. 바람직하게, 상기 제1지수와 상기 제2지수의 곱은 1보다 작다. 상기 메트릭의 상기 현재 값이 상기 수용 간격 내에 있으면, 상기 현재의 인코딩 계수는 변하지 않는다.
상기 제1지수는 상기 하계와 상기 메트릭의 상기 현재 값의 차이에 대한 함수로 결정될 수 있다. 상기 제2지수는 상기 상계와 상기 메트릭의 상기 현재 값의 차이에 대한 함수로 결정될 수 있다. 상기 메트릭은 상기 타임 윈도우 동안의 전송 지연의 평균값, 상기 타임 윈도우 동안의 데이터 손실의 평균값, 또는 타임 윈도우의 마지막에 측정된 디코더 버퍼의 점유 시간의 표시자(indicator)로 결정될 수 있다. 여기서 상기 디코더 버퍼는 상기 연결을 통해 수신한 데이터를 홀드(hold)한다.
상기 방법은, 상기 우선의 인코딩 계수가 상기 현재의 인코딩 계수와 감지할 수 있을 정도로 다르면(differs appreciably), 상기 우선의 인코딩 계수와 명목 인코딩 레이트에 따른 신호를 인코딩하도록 상기 인코더에 명령하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 본 발명은 상기 연결의 기준 다수 성능 지표(gauging multiple performance characteristics)에 기초한 시-변화 연결을 통한 인코더로부터 디코더로의 데이터 스트리밍 방법이 제공된다. 상기 방법은, 인코딩 계수와 상기 연결을 관련짓는 단계 -여기서 상기 인코딩 계수는 상기 인코더 출력의 플로우 레이트를 결정함-; 상기 다수 성능 지표와 상기 연결을 관련짓는 단계; 및 상기 다수 성능 지표와 일-대-일(one-to-one) 대응되는 다수 성능 메트릭을 정의하는 단계를 포함한다.
현재의 인코딩 계수에서, 타임 윈도우에서 상기 연결의 성능 측정값의 다수 셋이 얻어진다. 성능 측정값 각각의 셋은 상기 다수 성능 지표 중 하나에 대응된다. 각각의 성능 메트릭의 현재 값은, 성능 메트릭의 현재 값 셋을 생성하기 위해, 측정값의 대응되는 셋을 이용하여 결정된다. 그리고 우선의 인코딩 계수는 각각의 성능 메트릭의 상기 현재 값에 따라 결정된다.
상기 방법은 또한, 상기 다수 성능 메트릭의 현재 값과 각각의 수용 간격을 비교하여 상기 인코딩 계수를 조절한다. 수용 간격 셋은 각각 상기 다수 성능 메트릭 중 하나에 대응되도록 정의된다. 각각의 수용 간격은 각각의 하계와 각각의 상계에 의해 정의된다. 성능 메트릭의 현재 값의 상기 셋의 각 요소가 대응되는 수용 간격의 하계보다 낮으면, 상기 우선의 인코딩 계수를 생성하기 위해, 상기 현재의 인코딩 계수는 제1지수와 곱셈된다(제1지수는 1보다 큼). 성능 메트릭의 현재 값의 상기 셋의 요소 중 적어도 하나가 대등되는 수용 간격의 상계를 초과하면, 상기 우선의 인코딩 계수를 생성하기 위해, 상기 현재의 지수는 제2지수와 곱셈된다(제2지수는 1보다 작음).
제1지수는 1을 초과하고 제2지수는 1보다 작다. 상기 인코딩-계수가 느린 페이스(slow pace)로 증가하고 상대적으로 빠른 페이스로 감소하도록 하기 위하여, 제1지수와 제2지수의 곱은 1보다 작도록 선택될 수 있다.
상기 다수 성능 지표는, 상기 인코더로부터 상기 디코더로의 전송 지연, 데이터 손실, 그리고 상기 연결을 통해 수신한 데이터를 홀딩하는 디코더 버퍼의 점유 시간을 포함할 수 있다. 상기 다수 성능 메트릭은 상기 타임 윈도우 동안의 전송 지연의 평균값, 상기 타임 윈도우 동안의 데이터 손실의 평균값, 그리고 상기 타임 윈도우 동안의 상기 다코더 버퍼의 점유시간의 값을 포함할 수 있다. 다수의 상기 성능 측정값 셋은 상기 인코더와 상기 디코더 간에 제어 데이터(control data)의 교환을 통해 얻어질 수 있다. 데이터의 교환은 실-시간 전송 프로토콜(RTP: real-time transport portocol)과 실-시간 전송 제어 프로토콜(RTCP: real-time transport control protocol)을 사용하는 것을 기반으로 할 수 있다.
다른 측면에 따르면, 본 발명은 시-변화 연결을 통한 데이터-스트리밍 서버로부터 클럭이언트로 전송되는 신호의 적응형 인코딩 레이트를 결정하는 방법을 제공한다. 상기 방법은, 상기 연결의 현재 인코딩 레이트를 알아내는 단계; 제1타임 인스턴트와 제2타임 인스턴트 사이의 W 측정값을 포함하는 타임 윈도우에서 상기 연결의 특정 지표 측정값을 얻는 단계; 및 상기 측정값으로부터 상기 특정 지표의 메트릭 μ를 알아내는 단계를 포함한다.
만약 μ가 하계 μ1과 상계 μ2를 갖는 소정 수용 간격 이내이면, 상기 현재의 인코딩 레이트는 변할 필요가 없다. 그렇지 않으면, 상기 현재의 인코딩 레이트는, μ가 상기 수용 간격의 상기 상계 μ2를 초과하는 경우에는 지수 χ2<1과 곱셈되고, μ가 수용 간격의 상기 하계 μ1보다 낮으면 지수 χ1>1과 곱셈된다.
만약 상기 특정 지표가 상기 연결의 전송 지연이면, 상기 메트릭의 결정은, 상기 전송 지연의 측정값 σ를 얻는 단계; 상기 측정값 σ를 가산하고 순환 어레이(circular array) V 내의 현재 인덱스에서의 엔트리를 감산하여 합계 Σ를 업데이트하는 단계 -여기서, 상기 순환 어레이는 상기 특정 지표의 이전 측정값을 저장하는 W>1 엔트리를 갖는다-; 및 상기 현재 인덱스에서의 상기 순환 어레이 내의 측정값 σ를 저장하는 단계를 포함하여 이루어진다. 측정값의 누적 숫자를 나타내는 카운터는 1만큼 증가하며, 현재 인덱스는 1을 더하여 업데이트된다(modulo W). 즉, 상기 인덱스가 W의 값에 도달하면, 상기 인덱스는 0으로 리셋된다. 상기 인덱스(모듈로 W)의 사용은 가장 최근의 W 측정값을 저장하는 것을 가능하게 하며, 상기 카운터의 목적은 메트릭이 정의된 동안의 연속적인 타임 윈도우를 구분(space)하기 위함이다. 그러므로, 상기 합계 Σ(상기 메트릭 μ로 사용되는)는 상기 카운터가 문턱 P*와 동일하거나 초과하는 경우에만 인코딩-레이트 조정의 필요성을 결정하기 위해 사용된다. 평균값 Σ/W 대신에 상기 합계 Σ를 사용하는 목적은, 계산 수고(computational effort)를 줄이기 위함이다. 상기 하계 μ1은 수용가능 전송 지연(acceptable transfer delay)과 W의 곱셈으로 결정된다. 그리고 상기 상계 μ2는 수용가능 전송 지연과 W의 곱셈으로 결정된다. 상기 현재의 인코딩 레이트의 어떠한 조정 이후에도 상기 카운터는 0으로 리셋된다. 상기 문턱 P*는 상기 현재의 인코딩 레이트 조정의 어떠한 연속적인 2스텝 사이의 시간 간격이 소정의 최소 시간 간격을 초과하도록 충분히 크게 선택된다. 상기 지수 χ1는 (μ1-Σ)의 함수로 결정될 수 있으며, 상기 지수 χ2는 (Σ-μ2)의 함수로 결정될 수 있다.
만약, 상기 특정 지표가 데이터-손실 비율이면, 상기 메트릭 μ는 상기 타임 윈도우에서 알아낸 데이터-손실 비율 θ이다. 상기 상계와 하계 μ1, μ2>μ1는 수용가능 데이터-손실 비율의 경계(bound)이다. θ가 μ1보다 작으면 지수 χ1은 소정 곱수(multiflier) χ>1로 결정된다. 그리고 지수 χ2는 (1-θ)로 결정된다(θ>μ2).
도 1은 본 발명의 일실시예에 따른, 시-변화 가능 연결을 위한 플로우-레이트 적응 시스템을 포함하는 네트웍을 도시한다.
도 2는 가변 능력 연결을 통해 디코더와 연결되는 인코더를 포함하는 시스템을 도시한다. 본 발명의 일실시예에 따라 인코딩 레이트는 연결의 상태에 적응된다.
도 3은 본 발명의 일실시예에 따른, 상기 연결의 특징을 나타내는 선택된 측정값을 저장하기 위한, 도 2의 인코더에 관련된 순환 버퍼를 도시한다.
도 4는 도 2의 시스템의 인코더에서 수신된 연결 측정값을 도시한다. 본 발명의 일실시예에 따라 측정값은 겹치지 않는(disjoint) 또는 오버랩되는 타임 윈도우에서 분석된다.
도 5는 본 발명의 일실시예에 따른, 타임 윈도우 내에서 측정값 변화에 기초한 인코딩 계수를 결정하는 방법을 도시한 순서도이다.
도 6은 타임 윈도우 동안의 연속적인 측정값의 회귀선을 예시한다. 본 발명의 일실시예에 따르면, 회귀선의 기울기는 인코딩 레이트의 우선 값을 결정하기 위한 도 5의 방법에서 사용된다.
도 7은 본 발명의 일실시예에서 사용되는 양 및 음의 기울기를 갖는 회귀선의 다른 예시를 도시한다.
도 8은 도 5의 방법을 설명하기 위해, 양의 기울기의 회귀선과 음의 그래디언트를 산출하는(yielding) 타임 윈도우에서의 측정값을 예시한다.
도 9는 도 5의 방법을 설명하기 위해, 음의 기울기의 회귀선과 양의 그래디언트를 산출하는 타임 윈도우에서의 측정값을 예시한다.
도 10은 도 5의 방법을 도시한다. 여기서 인코딩 계수의 감소는 선형-회기 기울기와 윈도우 마지막에서의 측정값 그래디언트에 의해 정의되는 도메인에 따라 결정되는 불연속 스텝(discrete steps)에서 발생한다.
도 11은 도 5의 방법을 도시한다. 여기서 인코딩 계수의 증가는 선형-회기 기울기와 윈도우 마지막에서의 측정값 그래디언트에 의해 정의되는 도메인에 따른 불연속 스텝에서 발생한다.
도 12는 본 발명의 일실시예에 따른, 실-시간 전송 프로토콜(RTP)과 실-시간 전송 제어 프로토콜(RTCP)을 이용한 연결 측정값 획득의 단계들을 도시하는 순서도이다.
도 13은 본 발명의 일실시예에 따른, 인코더로부터 전송된 RTP 패킷과 디코더로부터 수신한 RTCP 패킷을 기초로 연결 성능 측정값을 결정하는 과정을 도시한 순서도이다.
도 14는 본 발명의 일실시예에 따른, 연결 메트릭과 이에 대응하는 인코딩 계수를 결정하는 단계들을 나타내는 순서도이다.
도 15는 본 발명의 일실시예에 따른, 인코딩 계수를 결정하기 위한 겹치지 않는 또는 오버랩되는 타임 윈도우에서 얻어진 측정값을 다루는 대안적인 방법을 도시한다.
도 16은 본 발명의 일실시예에서 사용되기 위한, 오버랩되는 타임 윈도우에서의 측정값의 이동-평균(moving-average) 값의 연산을 도시한다.
도 17은 본 발명의 일실시예에 따른, 연결 메트릭과 소정 경계를 비교하는 것을 기초로 우선의 인코딩 계수를 결정하는 방법을 도시한다.
도 18은 본 발명의 일실시예에 따른, 도 17의 방법의 기본 단계들을 도시한 순서도이다.
도 19는 본 발명의 일실시예에 따른, 도 17의 방법의 단계들의 세부사항들을 제공하는 순서도이다. 도 19의 순서도는 계산 수고를 줄이는 단계들을 더 포함한다.
도 20은 도 17에서 설명된 과정의 확장을 도시한다. 이는 2개의 메트릭의 현재 값에 따라 인코딩 계수를 조절하기 위한 것이다.
도 21은 도 17에서 설명된 과정의 확장을 도시한다. 이는 3개의 메트릭의 현재 값에 따라 인코딩 계수를 조절하기 위한 것이다.
도 22는 본 발명의 일실시예를 설명하는데 사용하기 위해 패킷-손실 비율 변화 대 스트리밍 서버에 의해 연결 투과율(connection transmittance)로 전송되는 신호의 인코딩 레이트의 비율을 도시한 도면이다.
용어
인코딩 플로우 레이트(encoding flow rate): 인코딩된 신호의 비트 레이트(bit rate)는 시간에 따라 변할 수 있으며, 인코딩된 신호의 최대 비트 레이트를 플로우 레이트라 한다.
적응형 인코더(adaptive encoder): 적응형 인코더는 신호를 소정 플로우-레이트 범위 내에서 지정된 플로우 레이트로 인코딩하는 것이 가능한 장치를 말한다. 상기 인코딩은 인코드-신호 정확도(encode-signal fidelity)를 최대화하려 한다.
명목 플로우 레이트(nominal flow rate): 클라이언트와 스트리밍 서버 간에 협의 되거나, 클라이언트 장비의 지식을 기초로 스트리밍 서버에 의해 자동으로 결정되는 플로우 레이트를 명목 플로우 레이트라 한다.
인코딩 계수(encoding coefficient): E로 나타내는 인코딩 계수는, 스트리밍 서버와 클라이언트 간의 연결의 현재 상태와 호환되는 우선의 플로우 레이트를 결정하기 위해, 명목 플로우 레이트에 의해 곱셈되는, 스케일링 지수(scaling factor)이다.
연결 투과율(connection transmittance): 미리 정해진 성능 목표(preset performance objectives)를 위반하지 않고 스트리밍 서버로부터 클라이언트로의 연결에 의해 지속 될 수 있는 최대 플로우 레이트를 연결 투과율이라 한다.
성능 지표(performance characteristic): 성능 지표는 전송-지연 변화, 데이터-손실 비율, 신호 왜곡 등과 같은 측정 가능한 연결 특성(properties)으로 정의된다.
스칼라 측정값(scalar measurement): 오직 하나의 연결 특성과 관련된 연결 측정값은 스칼라 측정값이다.
벡터 측정값(vector measurement): 동시에 발생하는 다수의 연결 측정값은 벡터 측정값을 형성한다.
통계(statistic): 통계는 데이터 셈플 셋으로부터 얻어진 값(평균 값과 같은)이다.
메트릭(metric): 메트릭은 통신 네트웍(telecommunication network) 내의 경로(path) 또는 연결의 품질을 측정한 양이다. 메트릭은 경로 또는 경로 내의 연결의 레이턴시(latency), 신뢰도(reliability), 수용력(capacity) 등과 같은 연결 특성에 관한 것일 수 있다.
스칼라 메트릭(scalar metric): 하나의 연결 특성과 관련된 메트릭을 스칼라 메트릭이라 한다. 스칼라 메트릭은 다수의 스칼라 측정값으로부터 결정된다.
벡터 메트릭(vector metric): 적어도 2개의 연결 특성과 관련된 메트릭을 벡터 메트릭이라 한다. 벡터 메트릭은 다수의 벡터 측정값으로부터 결정된다.
수용 간격(acceptance interval): 수용되는 경로 또는 연결 성능을 나타내기 위해 고려되는, 소정 하계와 소정 상계 사이의 메트릭의 범위를 수용 간격이라 한다.
다운스트림 제어 패킷(downstream control packet): 스트리밍 서버로부터 클라이언트로 전달되는 제어 패킷이 다운스트림 제어 패킷이다.
업스트림 제어 패킷(upstream control packet): 클라이언트로부터 스트리밍 서버로 전달되는 제어 패킷이 업스트림 제어 패킷이다.
그래디언트(gradient): 일반적으로, 2개의 변수를 관련짓는 연속적인 함수의 기울기가 그래디언트로 알려져 있다. 샘플된 함수의 경우에, 그래디언트는 작은 수의 샘플로부터의 기울기를 결정하여 근사값을 얻을 수 있다(approximated).
회귀선(regression line): 데이터 셋을 통과하도록 그려진 직선 그리고 상기 직선으로부터 데이터 편차의 스퀘어의 합을 최소화하는 것과 같은 어떤 기준에 따라 결정된 직선이 회귀선이다.
실-시간 전송 프로토콜(RTP: real-time transfer protocol): RTP는 오디오와 비디오를 인터넷을 통해 전송하기 위한 표준화된 패킷 포맷을 정의한다. 이는 인터넷 엔지니어링 테스크 포스(IETF: Internet Engineering Task Force), RFC 3550에 의해 정의된다.
실-시간 전송 제어 프로토콜(RTCP: real-time transfer control protocol): RTCP는 RTP 플로우를 위한 아웃-오브-밴드(out-of-band) 제어 정보를 제공하며, 스트리밍 세션 내에서 주기적으로 제어 패킷을 전송하기 위해 사용된다. RTCP의 주된 기능은 연결 품질에 대한 피드백을 제공하는 것이다.
본 발명의 실시예는 예시적인 도면들을 참조하여 더욱 자세히 설명될 것이다.
도 1은 데이터 스트리밍을 위한 시스템을 도시한다. 스트리밍 서버 컴퓨팅 장치(120, 스트리밍 서버라고도 함)는 클라이언트 장치들(160, 클라이언트 라고도 함)로 인터넷과 같은 공유 네트워크(180)를 통해 데이터를 전송한다. 클라이언트(160)는 프로세서와 컴퓨터 판독가능 매체를 포함하며, 유선 연결 매체(150), 또는 베이스 스테이션(140)을 통한 무선 연결 매체(152)를 통해 네트웍(180)에 연결된다. 베이스 스테이션(140)은 유선 또는 무선 매체를 통해 네트웍(180)에 연결될 수 있다. 바람직한 실시예에서, 서버(120)는 클라이언트(160)와 제어 데이터를 교환하기 위해 기존의 프로토콜을 사용한다. 예를 들어, 스트리밍 서버(120)는 제어 데이터를 클라이언트(160)로 보내기 위해 실-시간 전송 프로토콜(RTP)를 사용할 수 있으며, 클라이언트는 제어 데이터를 스트리밍 서버로 보내기 위해 실-시간 전송 제어 프로토콜(RTCP)을 사용할 수 있다. 연결 품질 제어를 위해 다른 프로토콜들도 고안될 수 있다. 본 발명에 따르면, 클라이언트는 데이터 스트리밍 서버와 데이터-인코딩 레이트를 협상(negotiate)할 수 있으며, 스트리밍 서버는 스트리밍 서버(120)와 클라이언트 간의 연결의 상태 변화에 따라 인코딩 레이트를 조절할 수 있다. 특히, 스트리밍 서버(120)는 협상된 명목 플로우 레이트(비트 레이트)와 스트리밍 서버(120)로부터 클라이언트들(160) 간의 연결들 개개의 상태에 따라 클라이언트들(160)에 개개의 인코딩 레이트를 배정할 수 있다. 스트리밍 서버는 클라이언트의 장비 타임을 인지할 수 있으며 이에 따라 명목 플로우 레이트를 결정할 수 있다.
도 2는 스트리밍 서버(120)로부터 클라이언트(160)로의 싱글 연결의 한 예를 도시한다. 스트리밍 서버(120)는 채널(206)을 통해 적응형 인코더(220)에 연결된 신호 소스(204)를 포함한다. 적응형 인코더(220)는 명목 플로우 레이트와 플로우 콘트롤러(246)에 의해 결정되는 인코딩 계수에 따라 소스(204)로부터의 신호를 인코딩한다. 스트리밍 서버(120)는 시-변화 능력을 갖는 채널(260)을 통해 클라이언트(160)에 연결된다. 클라이언트(160)는 정보 신호(예, 비디오 신호)를 감지하고 감지된 신호를 디코더(240)로 전달하는 수신기(226,receiver)를 포함한다. 디코더(240)는 감지된 신호를 유저(280)에게 알맞은 포맷으로 구조화한다. 버퍼(238)는 데이터를 짧은 기간 동안 홀드하기 위해 디코더(240)에 연결될 수 있다. 감지된 신호는 싱크 리포터(242)로 전달되는 제어 패킷을 포함할 수 있다. 싱크 리포터(242)는 소스 리포터(224)로부터 수신한 제어 패킷을 처리하고, 에크(acknowledgement)와 제어 패킷의 지정된 측정값을 제어 채널(270)을 통해 플로우 콘트롤러(246)로 전송할 수 있다.
연결(260)의 시-변화 능력에 따라, 플로우 콘트롤러(246)가 시-변화 채널(260)의 투과율의 정확한 예측을 결정하고 적절한 인코딩 계수 E를 연산하는 것이 매우 중요하다. 클라이언트에 배정된 명목 인코딩 레이트와 인코딩 계수의 현재값에 따라 적응형 인코더(220)는 신호를 인코딩한다. 플로우 콘트롤러(246)는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 판독가능 명령을 포함하며, 신호의 확실한 품질을 유지하기 위해 허용되는 전체 플로우 레이트(비트 레이트)를 결정하거나 정보 내용(information content)를 선택적으로 조절한다. 비디오 신호의 경우에, 인코더는 프레임 레이트(frame rate), 프레임 당 내용(content per frame) 또는 둘다를 수정할 수 있다.
플로우 콘트롤러(246)는 서버(120)와 클라이언트(160)간의 제어 패킷의 교환을 통해 얻어진 측정값을 사용한다. 소스 리포터(228)는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 판독가능 명령을 포함하며, 클라이언트(160)로 전달될 다운스트림 제어 패킷(도시되지 않음)을 생성한다. 싱크 리포터(242)는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 판독가능 명령을 포함하며, 각각의 클라이언트들(160)에 연결되어 플로우 콘트롤러(246)로 전송될 업스트림 제어 패킷(도시되지 않음)을 생성한다. 플로우 콘트롤러(246)는, 연결의 현재 상태와 클라이언트들(160)을 위한 적절한 개개의 인코딩 계수를 결정하기 위해, 스트리밍 서버와 클라이언트들(160) 간의 연결들을 통해 교환된 업스트림 제어 패킷과 이에 대응되는 다운스트림 제어 패킷을 이용할 수 있다. 각각의 인코딩 계수는 각각의 클라이언트로 전달되는 신호의 인코딩 레이트를 결정한다.
소스 리포터로부터 특정 클라이언트(160)로 전달되는 특정 다운스트림 제어 패킷은 다운스트림-제어-패킷 식별자(identifier)와 다운스트림 패킷이 전송되는 순간 시간의 표시자를 포함한다. 대응되는 업스트림 제어 패킷(특정 다운스트림 제어 패킷에 응답하여 특정 클라이언트(160)의 싱크 리포터(242)에 의해 전달됨)은 다운스트림-제어 패킷 식별자와 반응(echo)하고 특정 클라이언트가 특정 다운스트림 제어 패킷을 수신한 시간을 나타낸다.
플로우 콘트롤러는 인코딩 계수 E의 계산을 소정 넓이 W의 타임 윈도우 동안 수신한 측정값에 근거한다. 넓이 W는 (몇 밀리 초(milliseconds) 또는 측정값을 얻는 회수, 예를 들어 가장 최근의 128 측정값과 같은)시간 간격으로 정의될 수 있다. 이하에서는, 타임 윈도우 넓이를 측정 회수로 예시하여 표현하기로 한다.
스트리밍 서버(120)는 적어도 하나의 프로세서(도시되지 않음)와 컴퓨터 판독가능 저장 매체를 포함한다. 컴퓨터 판독가능 저장매체(예를 들어, 비휘발성(non-volatile) 메모리 장치들, DVD, CD-ROM, 또는 플로피 디스크)는 자신에 저장된 컴퓨터 판독가능 명령을 포함한다. 컴퓨터 판독가능 명령은 적응형 인코더(220), 소스 리포터(228), 및 플로우 콘트롤러(246)가 이하에서 설명되는 기능들을 수행하도록 하기 위해 적어도 하나의 프로세서에 의해 실행된다.
도 3은 순환 버퍼(320, circular buffer))에 저장되고 플로우 콘트롤러(246)에서 유지되는 측정값들을 도시한다. 명확한 설명을 위해, 도시된 예에서 순환 버퍼는 타임 인스턴트(time instant) tj에서 tj +7 동안 얻은 8개의 측정값(342)만을 포함한다. (j+7)이 현재 관찰 인스턴트이다. 순환 버퍼는 많은 개수(υ)의 레코드(record)를 홀드할 수 있다. 레코드는 하나의 측정값(스칼라 측정값) 또는 동시에 발생하는 측정값 셋(벡터 측정값)을 대응하는 시간 표시자(time indicator)와 함께 포함할 수 있다. 인덱스 j의 새로운 레코드는 인덱스 (j-υ)의 이전의 레코드에 오버라이트(overwrite) 된다. 그러므로, 순환 버퍼(320)는 가장 최근의 υ개 측정값(스칼라 또는 벡처 측정값)을 유지한다. 디코더(240)와 관련된 버퍼(238)의 점유시간과 같은 일부 측정값은 클라이언트(160)로부터 수신된 업스트림 제어 패킷으로부터 추출될 수 있다. 또한, 플로우 콘트롤러(246)는, 클라이언트(160)로 다운스트림 제어 패킷이 보내지는 타임 인스턴트와 클라이언트(160)로부터의 (대응되는)다운스트림 제어 패킷이 서버에서 수신하는 타임 인스턴트를 비교하여, 전송 딜레이를 알아낼 수 있다. 패킷 손실(데이터 손실)은, 클라이언트(160)로 전송되는 다운스트림 패킷들의 일련 번호들(sequencial numbers)과 클라이언트(160)로부터 수신된 업스트림 패킷들로부터 추출된 일련 번호들를 비교하여, 감지될 수 있다. 다운스트림 제어 패킷의 개수에 대한 손실 패킷의 개수가 패킷-손실 비율로 정의되며, 이하에서는 θ로 표시한다.
순환 버퍼(320)의 각각의 레코드는 (1)다운스트림 제어 패킷(j, j+1, j+2,...,등으로 표현됨)의 시리얼 넘버(340), (2)동일한 레코드의 시리얼 넘버(340)가 서버(120)에 의해 수신되었음을 나타내는 업스트림 제어 패킷에서의 타임 인스턴트(342, tj, tj+1, 등으로 표현됨), 및 (3)버퍼(238)의 점유시간과 같은 업스트림 제어 패킷에 포함된 측정값(344)을 포함한다.
충분한 시리얼 넘버들(340)을 유지하는 것은, 합리적인 한도 내에서, 임의적인 폭의 타임 윈도우에서 패킷-손실 비율을 계산하는 것을 가능하게 한다. 다운스트림 제어 패킷을 보낸 시간과 이에 대응하는 업스트림 제어 패킷을 수신한 시간(342)을 유지하는 것은 전송 지연의 계산을 가능하게 한다. 그러므로, 연결의 특징을 나타내는 측정값들은 (전송 지연 또는 패킷-손실 비율과 같은)플로무 콘트롤러(246)에서 연산된 측정값들 및 업스트림 제어 패킷으로부터 직접 읽은 측정값들(344)을 포함할 수 있다.
타임 윈도우는 제어 패킷의 미리 설정된 최대 개수 또는 미리 설정된 기간(preset duration)을 커버하기 위해 제한될 수 있다. 도 19를 참조하여 후술될 것과 같이, 2가지의 상태(condition)가 사용될 수 있으며, 두 상태 중 더 엄중한(stringent) 상태가 타임 윈도우를 정의한다.
도 4는 플로우 콘트롤러(246)에서 수신된 제어 패킷으로부터 추출된 연속적인 측정값들을 도시한다. 시-변화 연결의 특징을 나타내는 메트릭은 타임 윈도우의 마지막에서 계산된다. 도 4의 예에서, 각각의 윈도우는 8개의 측정값을 커버한다. 메트릭은 지연, 데이터 손실, 디코더(240)에서의 버퍼 점유시간, 및 디코더의 출력을 분석해서 알아낸 신호 품질과 같은 몇몇의 속성 전부 또는 일부를 커버할 수 있다. 측정값은 데이터-손실 비율과 같은 하나의 연결 특성에 관련된 스칼라일 수 있으며, 전송 지연, 데이터 손실, 및 연결에 관련된 버퍼의 점유 시간과 같은 다수 연결의 특성과 관련된 벡터일 수도 있다.
현재 윈도우에서의 측정값 데이터의 분석 결과는 다음의 타임 윈도우의 선택을 결정할 수 있다. 만약, 윈도우에서의 측정값 분석 결과가 인코딩 레이트를 조절하는 것이라면(즉, 인코딩 계수 E를 조절하는 것이라면), 다음의 윈도우는 윈도우는 현재의 윈도우로부터 상당한 인터벌의 시간을 두고 분리될 수 있다. 그렇지 않다면, 다음의 윈도우는 현재의 윈도우에 인접할 수 있다. 다음의 윈도우는 현재의 윈도우를 오버랩하는 동적 윈도우(moving window)일 수 있다.
도 4의 예에서, 윈도우(420)의 마지막 측정값 이후에 결정되는 연결의 메트릭은 인코딩 계수가 업데이트 되도록 한다. 윈도우(420A)의 마지막에 결정되는 메트릭은 현재의 연결에 대한 인코딩 계수 E가 업데이트 되도록 한다. 그러므로, 새로운 윈도우(420B)는 현재의 윈도우(420A)를 바로 뒤따른다. 윈도우(420B)의 마지막에서 결정된 메트릭은 역시 인코딩 계수가 업데이트되도록 한다. 그래서 윈도우(420C)는 윈도우(420B)를 바로 뒤따른다. 윈도우(420C)의 마지막에서 결정된 메트릭은 인코딩 계수가 업데이트되도록 한다. 그래서 윈도우(420D)는 윈도우(420C)를 바로 뒤따른다. 윈도우(420D)의 마지막에서 결정된 메트릭은 인코딩 계수를 바꾸지 않는다. 그러므로, 다음의 윈도우(420E)가 윈도우(420D)와 오버랩된다. 윈도우(420E)의 마지막에서 결정된 메트릭은 인코딩 계수를 바꾸지 않는다. 마찬가지로 오버랩되는 윈도우(420F)의 마지막에서 결정된 메트릭은 인코딩 계수를 바꾸지 않는다. 오버랩되는 윈도우(420G)의 마지막에서 결정된 메트릭은 인코딩 계수를 조절한다. 그러므로, 새로운 윈도우(420H)는 윈도우(420G)를 바로 뒤따른다. 윈도우(420H)의 마지막에서 결정되는 메트릭은 인코딩 계수를 조절하고 다음의 윈도우(420I)가 바로 뒤따른다. I,J,K,L,M으로 끝나는 어떠한 오버랩되는 윈도우(동적 윈도우) 420I, 420J, 420K, 420L 그리고 420M도 인코딩 계수를 변경시키지 않는다. 오버랩되는 윈도우(420N)의 마지막에서 결정된 메트릭은 인코딩 계수를 변경시키며, 새로운 윈도우(도시되지 않음)가 바로 뒤따른다.
도 5는 인코딩 계수의 우선의 현재 값(preferred current value)을 결정하는 기본 단계들을 도시한다. 단계(520)에서, 인코딩 계수 E는 1.0으로 셋팅된다(즉, 인코딩 레이트가 연결이 셋업(setup)될 때 결정되는 명목 인코딩 레이트임). 인코딩된 신호의 속성에 따라 변경되는 레이트에 따라 인코더가 저절로(naturally) 데이터를 생성하는 것은 잘 알려져 있다. 인코딩 계수 E는 그러나 인코딩된 신호의 움직임(dynamic, 변화하는 비트레이트)과 관계없이 인코더의 출력 플로우 레이트를 독립적으로 조절하도록 한다. 순환 버퍼(320, 도 3)의 인덱스는 역시 단계(520)에서 0으로 초기화된다(또는 버퍼 길이를 초과하지 않는 기설정 값으로 초기화될 수 있음). 단계(522)에서, 플로우 콘트롤러(246)는 싱크 리포터(242)로부터 전달된 제어 데이터를 얻으며, 상기 제어 패킷으로부터 연결 측정값들을 추출하며, 순환 버퍼의 주소 "인덱스"(address "index")에 상기 측정값들을 저장하며, 이후에 단계(524)에서 인덱스는 1만큼 증가한다. 만약, 주소 인덱스가 W에 도달하면, 주소 인덱스는 0으로 리셋된다. 만약, 단계(526)에서 인덱스의 값이 윈도우 넓이 W보다 작다는 것이 밝혀지면, 새로운 측정값(스칼라 측정값) 또는 동시에 발생하는 측정값 셋(벡터 측정값)을 수신하고 처리하기 위해 단계(522)가 다시 수행된다. 윈도우 넓이는 각각의 레코드가 스칼라 측정값 또는 벡터 측정값을 홀딩하고 있는 버퍼 레코드들의 개수로 표현될 수 있다. 만약, 단계(526)에서 인덱스의 값이 적어도 윈도우 넓이 W와 같다고 판단되면, 단계(528)에서 윈도우 마지막 이전의 짧은 기간 동안 그래디언트(β로 표현됨)가 얻어진다. 만약, 그래디언트 β의 크기가 제1소정 문턱 {(g)위의 hacek}보다 작으면, 인코딩 계수는 업데이트되지 않고 단계(522)가 다시 수행된다. 그렇지 않으면, 단계(532)에서 리니어-회귀 테크닉(linear-regression techniques)을 사용해 가장 최근의 W 측정값의 경향이 얻어진다. 단계(540)에서, 회귀선의 기울기의 크기(α로 표시됨)가 제2소정 문턱 {(S)위의 hacek}과 비교된다. 만약 α의 크기(│α│로 표시됨)가 {(S)위의 hacek}보다 작으면, 단계(522)가 플로우 콘트롤러에서 수신된 새로운 제어 패킷으로부터의 스칼라 측정값 또는 벡터 측정값을 얻어내고 저장하기 위해 다시 수행된다. 그렇지 않으면, 만약 │α│≥{(S)위의 hacek}이면 단계(542)에서 소정 함수 Γ(α,β)에 따라 새로운 인코딩 계수를 알아내고 인덱스를 0으로 리셋한다. 단계(546)는 E의 값이 소정 최소값 Emin위이고 소정 최대값 Emax 보다 아래인 것을 보장한다.
측정값이 높은 연결 투과율을 나타낼 때 함수 Γ(α,β)가 E의 값이 계속적으로 증가하는 것을 허용하면, E의 값은 기설정 디자인 상계 Emax를 초과할 수 있다. 그러면 단계(546)은 E의 값을 Emax로 줄인다(E←min(E, Emax)).
측정값이 낮은 연결 투과율을 나타낼 때 함수 Γ(α,β)가 E의 값이 계속적으로 감소하는 것을 허용하면, 인코딩 레이트를 어떤 값 이하로 줄이는 것은 E의 값이 기설정 디자인 하계 Emin 아래로 떨어지도록 할 수 있다. 그러면 단계(546)은 E의 값을 Emin으로 늘린다(E←max(E, Emin)).
무시할 수 있을 정도의 연결 투과율 변화를 가지고, β와 α의 크기에 대한 작은 값으로부터 추론될 수 있는 것처럼, 단계(542)가 상당히 짧은 시간 동안 활성화될 수 있다는 것은 잘 알려져 있다. 그러나, 순환 버퍼(320) 내에서, 새로운 측정값이 이미 처리된 이전의 측정값에 오버라이트될 수 있으며, 단계(532)에서 회귀선의 기울기 α가 가장 최근의 W 스칼라 측정값(또는 W벡터 측정값)에서 결정될 수 있다.
도 5의 단계들은 저장 매체에 저장된 컴퓨터-판독가능 명령들에 따라 플로우 콘트롤러에 관련된(연결된) 프로세서에 의해 실시될 수 있다.
도 6은 지연, 데이터-손실 비율, 또는 클라이언트(160)에서의 버퍼 점유시간과 같은 연결 지표의 연속적인 측정값들을 도시한다. 회귀선(620)의 기울기는 양(positive)이며 악화되는 연결 상태를 나타낸다(감소하는 연결 투과율). 그래서 인코딩 레이트를 줄이는 것에 의해 플로우 레이트를 줄일 필요가 있다(즉, 인코딩 계수를 줄여야 한다).
도 7은 클라이언트(160)에서의 연결 지표의 연속적인 측정값들을 도시한다. 회귀선(620)의 기울기는 양에서 음의 값으로 바뀌고, 연결상태가 악화되는 것을 뒤따라 개선되는 것을 나타낸다.
도 8은 도 4의 윈도우(420)에서의 8개의 스칼라 측정값들을 도시한다. 타임 인스턴트 tj, tj +1,...,tj +7에서의 측정값들로부터 벗어난 면적(square)의 합을 최소화하기 위해 선택된 회귀선(620)은 기울기 α=1.64를 갖는다. 마지막 2개의 측정값들로부터 결정된 그래디언트 β는 음이다. E의 값은 소정 함수 Γ(α,β)로부터 결정된다. 예시적인 함수 Γ(α,β)가 표의 형식(tabular form)으로 도 10에 도시되어 있다.
도 9는 회귀선이 기울기 α=-1.64를 갖는 곳의 윈도우에서의 8개의 측정값을 나타낸다. 마지막 2개의 측정값들로부터 결정된 그래디언트 β는 양이다. E의 값은 소정 함수 Γ(α,β)로부터 결정된다.
도 10은 회귀선의 기울기 α의 양의 값에 대한 예시적인 함수 Γ(α,β)를 도시한다. 표시된 바와 같이, 그래디언트 β가 1.0보다 작고 α≥0 이거나, 그래디언트 β가 1이상이고 α가 0.1보다 작으면 인코딩 계수 E는 변하지 않는다. 도 8의 측정값들은 양의 회귀선 기울기 α와 음의 그래디언트 β의 결과를 낸다. 그러므로, 도 10의 함수 Γ(α,β)에 따라 인코딩 계수 E는 변하지 않는다.
마찬가지로, 도 11은 α의 음의 값에 대한 예시적인 함수 Γ(α,β)를 도시한다. β≥(-1.2) 이거나 β<(-1.2)이고 α>(-0.2)이면 E의 값은 변하지 않는다. 도 9의 측정값들은 음의 회귀선 기울기 α와 양의 그래디언트 β의 결과를 낸다. 그러므로, 도 11의 함수 Γ(α,β)에 따라 인코딩 계수 E는 변하지 않는다.
도 12A와 도12B를 포함하는 도 12는 알려진 프로토콜을 사용하는 스트리밍 서버(120)와 클라이언트(160)간의 제어 패킷 교환 과정을 도시한다. 도 12A는 RTP(실-시간 전송 프로토콜) 제어 패킷을 클라이언트(160)로 보내는 과정을 도시하고, 도 12B는 클라이언트(160)로부터의 RTCP(실-시간 전송 제어 프로토콜) 패킷을 수신하는 과정과 플로우 콘트롤러(246)에서 RTCP 패킷의 내용을 처리하는 과정을 도시한다. 도 12A의 과정은 단계(1220)에서 시작되는데, 여기서 소시 리포터(228, 도 2)는 RTP 제어 패킷을 준비한다. 단계(1222)에서 인코딩 계수의 현재값이 결정된다. 단계(1224)에서 RTP 패킷의 시퀀스 넘버(sequence number)와 RTP 패킷을 전송한 시간이 기록된다. 단계(1226)에서 RTP 패킷은 각각의 클라이언트(160)로 전송된다.
도 12B의 과정은 단계(1240)으로 시작되는데, 여기서 프로우 콘트롤러(246, 도 2)는 싱크 리포터(242)로부터 RTCP 패킷을 수신한다. 단계(1242)에서 RTCP 패킷으로부터 측정값 데이터가 추출된다. 단계(1244)에서, 현재 타임 인스턴트와 인코딩 계수의 이전 업데이트의 타임 인스턴트의 차이가 밝혀진다. 만약, 시간 차이가 소정 최소 업데이트 간격보다 작으면, 단계(1240)가 대기 또는 다가올 RTCP 패킷(waiting or forthcoming RTCP packet)을 고려하기 위해 다시 수행된다. 그렇지 않으면, 만약 시간 차이가 최소 업데이트 간격 이상이면, 단계(1246)에서 새로운 허용가능(permissible) 인코딩 레이트가 결정된다. 단계(1248)에서 인코딩 계수의 업데이트가 필요한지의 여부가 고려된다. 만약, 그렇다면, 새로운 인코딩 계수가 결정된다. 그렇지 않다면, 단계(1240)이 다시 수행된다. 단계(1260)에서 인코딩 계수가 업데이트되고 인코더(220)로 전달되며, 플로우 콘트롤러(246, 도 2)는 새로운 RTCP 패킷을 고려할 준비가 된다(단계 1240).
도 13과 도 14에서 더욱 구체화된 도 12의 단계들은, 저장매체에 저장된 컴퓨터-판독가능 명령에 따른 플로우 콘트롤러(246)와 관련된(연결된) 앞서 언급된 프로세서에 의해 실시될 수 있다.
도 13은 도 12의 단계(1242)를 구체화한다. 단계(1320)에서, 수신된 RTCP 패킷은 싱크 리포터(242)로부터의 "리시버 리포트(receiver report)"를 포함하고 있는지를 알아내기 위해 조사된다. 만약, RTCP 패킷이 리시버 리포트를 포함하지 않으면, RTCP 패킷이 버퍼 점유시간 리포트롤 포함하는지를 알아내기 위해 단계(1340)가 실시된다. 만약, RTCP 패킷이 리시버 리포트를 포함하면, 단계(1322)에서 RTCP 패킷이 도착한 현재시간과 대응되는 RTP 패킷을 전송한 시간의 시간 차이로 전송-지연을 알아낸다. 대응하는 RTP 패킷은 RTCP 리시버 리포트의 "수신된 확장 최고 시퀀스 넘버(extended highest sequence number received)" 필드에 표시된 번호와 매치되는 일련 번호(sequencial number)를 가지는 RTP 패킷이다. 단계(1326)에서, 단계(1322)에서 계산된 전송 지연과 연결의 최소 전송 지연의 이전 값 중 작은 것으로 최소 전송 지연이 결정된다. 최소 전송 지연은 임의의 큰 값으로 초기화된다. 최소 전송 지연은 변동하는 전송 지연을 측정하는 기준으로 (나중에)사용되기 위하여 유지된다.
도 14는 연결 메트릭들과 이에 대응되는 인코딩 계수를 결정하는 단계들의 개요를 나타내는 순서도이다. 단계(1420)에서, 어느 것이던지 알려진 분석 방법을 이용하여, 타임 윈도우에서 얻어진 성능 측정값들의 회귀선의 기울기가 계산된다. 타임 윈도우 마지막 근방의 측정값들의 그래디언트도 역시 얻어진다. 단계(1422)에서 타임 윈도우에서의 데이터-손실의 통계가 얻어진다. 단계(1424)에서, 회귀선 기울기와 그래디언트에 기초한 인코딩 계수의 우선의 값(E*로 표시됨)이 도 10과 도 11에 도시된 바와 같이 결정된다. 단계(1426)에서, 단계(1422)에서 얻어진 데이터-손실 통계에 따라 인코딩 계수의 우선의 값(E**로 표시됨)이 결정된다. 단계(1428)에서, E*와 E** 중 작은 것이 새로운 인코딩 계수로 선택된다. 양호한 연결 상태 하에서, 우선의 인코딩 계수가 1.0을 초과하도록 허용될 수 있음은 잘 알려져 있다. 즉, 인코더는 연결에 배정된 명목 플로우 레이트를 초과하는 플로우 레이트(비트-레이트)를 잠시(momentarily) 갖는 스트림(stream)을 생성할 수 있다.
막 결정된 인코딩 계수는 연결의 클라이언트 쪽에 위치한 버퍼의 점유시간에 따라 더 조절될 수 있다. 만약, 버퍼-점유시간 데이터를 이용할 수 없으면 단계(1432)는 단계(1260, 도 12)로 간다. 그렇지 않으면, 단계(1434)에서 타임 윈도우에서 얻어진 버퍼-점유시간 측정값들의 통계가 소정 문턱을 초과하는지가 판단된다. 만약 그렇다면, 그리고 단계(1428)에서 결정된 인코딩 계수가 1.0을 초과한다면, 우선의 인코딩 계수는 단계(1440)에서 1로 줄어들고, 과정은 도 12의 단계(1260)으로 돌아간다. 단계(1434)와 단계(1440)가 모범적인 규칙(exemplary rule)을 따름은 잘 알려져 있다. 버퍼-점유시간 통계의 사용을 결정하는 다른 규칙들이 고안될 수 있다.
도 15는 다른 실시예에 따른, 연결 측정값들을 처리하는 방법을 도시한다. 여기서는 연속적인 또는 오버랩되는 타임 윈도우들에서 측정된 측정값들의 평균값이 새로운 인코딩 계수 E를 결정하기 위해 사용된다. 전송 지연 또는 데이터 손실과 같은, 타임 윈도우(1520)에서 얻어진 측정값들의 평균값들에 기초하고 전송 지연 또는 데이터 손실과 같은 대응하는 특정 연결 지표의 통계는 상기 특정 연결 지표의 소정 허용 기준값과 비교된다. 상당한 차이로 통계가 기준값을 초과하면, 인코딩 계수가 줄어들고, 결과적으로 인코딩 레이트가 명목 인코딩 레이트보다 낮게 줄어든다. 만약, 상당한 차이로 통계가 기준값보다 작으면, 인코딩 레이트는 늘어날 수 있다. 그러므로 상기 특정 지표에 대응하는 2개의 경계 μ1, μ21<μ2)가 정의될 수 있다. 인코딩 계수는 통계가 μ1보다 작으면 증가하고, 통계가 μ2보다 크면 감소한다. μ21의 차이의 선택은 매우 중요하다. 매우 작은 차이는 낮은값과 높은값 사이에서 불필요하게 빠르게 움직이는 것을 유발한다. 매우 큰 차이는 상당한 연결-상태 변화에도 느린 반응 또는 무반응을 유발한다.
도 16은 스칼라 측정값들의 평균값으로 정의된 움직이는 평균(moving average)을 도시한다(임의의 단위로 표시되고, 각각 8개의 측정값을 커버하는 연속적인 오버랩되는 윈도우에서 얻어진 값임). 처음 4개의 오버랩되는 윈도우의 평균 값인 16.25, 17.0, 16.75 그리고 17.75는 작은 변화를 보이며, 인코딩 계수의 현재 값은 변하지 않을 수 있다. 그러나 도 16에 나타난 바와 같이, 다수의 측정값 이후에 결정되는 21.5의 평균값은, 인코딩 계수의 변경과 적응형 인코더(220)의 파라매터들을 조절하는 것을 유발할 수 있다. 도 4와 함께 상술한 바와 같이, 윈도우의 마지막에서 얻어진 메트릭은 다음의 타임 윈도우의 선택을 결정한다.
도 17은 시-변화 연결(260)의 매트릭 μ에 따라 인코딩 계수 E를 조절하는 방법을 도시한다. 주어진 상태에서 매트릭 μ값은 인코딩 계수 E가 증가함에 따라 증가한다. 도 17에 라인(1720)과 라인(1740)으로 각각 표시된 2개의 경계 μ1과 μ2는, 허용가능한 연결 성능의 범위를 정의한다. 도 17은 η1, η2, η3, η4, η51>η2>η3>η4>η5)로 나타낸 연결 투과율의 5개 값에 대한 인코딩 계수 E에 대한 메트릭 μ의 바람직한 의존을 나타낸다. 초기에 E는 1로 셋팅되어, 인코더가 고려된 클라이언트에 배정된 명목 인코딩 레이트로 동작하도록 한다. 명목 인코딩 레이트는 연결 성능이 보통의 연결 상태(여기서 투과율은 η1임)에서 허용될 수 있도록 선택된다. 도 17에서 연결 매트릭 μ의 샘플 값들은 인덱스 (0)에서 (9)로 구별된다. 투과율이 E=1에서 투과율의 최대값 η1이고, 현재의 매트릭이 {인덱스 (0)}의 값(μ1과 μ2의 사이임)을 가지고 있는 경우를 고러한다. 연결 상태는 악화되고 연결의 투과율은 η2로 감소하여, 매트릭 μ의 새로운 값이 상계 μ2보다 높아지게 한다{인덱스 (1)}. 플로우 콘트롤러(246)는 인코딩 계수 E를 e1의 값만큼 감소시켜, 매트릭 μ의 새로운 값{인덱스 (2)}이 (μ1, μ2)사이의 간격 내에 있도록 한다. 연결 상태는 계속적으로 악화되며 연결 투과율은 η4(>η2)까지 감소하여, 매트릭 μ의 새로운 값{인덱스 (3)}이 (μ1, μ2)사이의 간격 위에 있도록 한다. 증가된 매트릭에 응답하여, 플로우 콘트롤러(246)는 인코딩 계수를 e3만큼 줄인다. 매트릭 μ의 값은 {인덱스 (4)}로 떨어지지만, 여전히 μ2 보다 위에 있다. 인코딩 계수가 e4와 e5만큼 2번 더 인코딩 계수가 줄어든 이후에, 인덱스 (5)와 (6)에 나타난 바와 같이 되며, 인코딩 계수는 대략 0.56이 되고 매트릭 μ는 {인덱스 (6)}의 값으로 줄어들어 (μ1, μ2)사이의 간격에 들어오게 한다. 연결 상태가 개선되고, 인코딩 계수가 동일한 값 0.56인 상태에서, 매트릭 μ가 {인덱스 (7)}의 값으로 떨어지고 (μ1, μ2)사이의 간격보다 아래가 된다. 플로우 콘트롤러(246)는 인코딩 계수를 e7만큼 증가시키고, 증가된 μ의 값 {인덱스 (8)}는 여전히 μ1 아래이다. 플로우 콘트롤러(246)는 인코딩 계수를 e8만큼 더 증가시켜 인코딩 계수가 0.75가 되며, 증가된 μ의 값 {인덱스 (9)}가 (μ1, μ2)사이의 간격에 들어오게 한다. 인코딩 계수 E는 연결 투과율의 변화가 매트릭을 변화시킬 때까지 0.75의 값을 유지한다.
도 18은 도 17의 과정의 주요 단계들의 순서도이다. 초기에 단계(1820)에서 시작한다. 단계(1820)에서, 도 15와 도 16을 참조하여 상술한 윈도우에서 얻어진 매트릭 μ의 새로운 값이 얻어진다. 단계(1824)에서, 새로운 값이 상계 μ2와 비교되고, 만약 μ>μ2이면 단계(1860)에서 인코딩 계수는 E의 현재의 값에 지수 χ2를 곱하는 것에 의해 줄어들고, 과정은 단계(1820)로 되돌아간다. 만약, μ≤μ2이면, 단계(1826)에서 매트릭 μ의 새로운 값과 수용 간격(μ1, μ2)의 하계 μ1가 비교된다. 만약, μ≥μ1이면 매트릭의 새로운 값이 수용 간격 (μ1, μ2) 내에 있다고 판단되고, 매트릭 μ의 새로운 값을 생성하기 위해 과정은 단계(1820)으로 되돌아간다. 만약, μ<μ1이면 단계(1840)에서 인코딩 계수 E의 현재값에 지수 χ1를 곱하는 것에 의해 인코딩 계수 E가 업데이트되고, 단계(1820)으로 되돌아간다. 지수 χ1, χ21>1, χ2<1)는 차이값 (μ1-μ)와 (μ2-μ)에 각각 의존적일 수 있다. 만약 곱(χ1×χ2)이 1보다 작으면, μ<μ1일 때 E의 값은 상대적으로 작은 스텝으로 증가한다. 그리고 μ>μ2일 때 E의 값은 상대적으로 큰 스텝으로 감소한다.
도 19는 도 17의 과정을 더 자세히 도시한다. 매트릭 μ는 소정 개수의 측정값들을 커버하는 윈도우에서 얻어진 측정값들의 평균값으로 선택된다. 플로우 콘트롤러(246)의 계산 수고(computational effort)를 줄이기 위해, 평균값은 윈도우에서의 측정값들의 합 Σ으로 대체되고, 수용 간격 (μ1, μ2)이 간격 (Σ1, Σ2)로 대체된다. 여기서 Σ1=w×μ1, Σ2=w×μ2이고, w는 단위 타임 윈도우 동안 측정값의 개수이다.
단계(1920)에서, E의 값은 1로 초기화된다. 즉, 인코더는 고려된 클라이언트에 배정된 명목 인코딩 레이트로 동작하도록 초기에 요청된다. w의 길이의 순환 어레이 V(도 3의 순환 버퍼(320)을 나타냄)의 모든 엔트리들(entries)은 0으로 셋팅되고, 순환 어레이 V 내의 w엔트리들의 합 Σ은 0으로 초기화된다. 정수 "Index(인덱스)" 는 순환 어레이 V 내의 현재 위치를 따라가고 정수 "Period(기간)"은 인코딩 계수 업데이트의 가장 최근 인스턴스를 따라간다. 2개의 정수 Index와 Period 각각은 단계(1920)에서 0으로 초기화된다.
단계(1922)에서 플로우 콘트롤러(246)에서 수신된 제어 패킷으로부터 측정값 σ가 추출된다. 단계(1924)에서, 매트릭 μ에 비례하는 합 Σ가 어레이 V의 위치(location) Index 내의 엔트리가 감산되고, 새로운 측정값 σ가 가산되어 업데이트된다. 어레이 V는 순환적이고, 그러므로 첫번째 타임 윈도우 이후에, 위치 Index 내의 감산된 엔트리는 현재의 윈도우 이전에 얻어진 측정값을 나타낸다. 첫번째 타임 윈도우 이후에, 첫번째 타임 윈도우에서의 합 Σ가 w에 의해 곱셈된 정확한 매트릭 μ를 나타낸다.
단계(1926)에서, 새로운 측정값 σ가 어레이의 위치 "Index"에 쓰여진다. 단계(1928)에서, 정수 Period는 1만큼 증가하고, 순환 어레이 V의 현재 위치 인덱스가 1(modulo w)만큼 증가한다. 즉, 인덱스의 값이 w에 도달하면 인덱스는 0으로 리셋된다. 만약, 단계(1930)에서 인코딩 계수 업데이트 인스턴트 직전부터의 측정값 개수가 소정 한계 P*보다 작다고 판별되면, 과정은 새로운 측정값을 처리하기 위해 단계(1922)로 돌아간다. 그렇지 않으면, 과정은 단계(1932)로 간다. 단계(1932)에 도달하면, 순환 어레이는 w의 가장 최근의 측정값들을 가지며, 시간의 현재 인스턴트와 인코딩 계수 E가 변경된 시간의 이전 인스턴트 간의 시간 간격이 문턱 P* 이하이다. P*의 값은 과도한 업데이트 레이트를 방지하기에 충분할 정도로 크로 연결 상태의 변화에 응답할 수 있을 정도로 작게 선택된다. P*의 값은 플로우 콘트롤러(246)의 설계자에 의해 설정되는 디자인 파라매터이다.
단계(1932)에서 현재의 합 Σ와 수용 합 간격(Σ1, Σ2)의 상계 Σ2가 비교된다. 만약, Σ>Σ2이면, 단계(1940)에서 E는 자신의 현재값과 지수 χ2(<1)를 곱하는 것에 의해서 감소되며, 단계(1950)에서 정수 Period는 0으로 리셋되고, 과정은 단계(1922)로 돌아간다. 만약, Σ≤Σ2이면, 단계(1934)는 현재의 합 Σ과 수용 합 간격 (Σ1, Σ2)의 하계 Σ1을 비교한다. 만약, Σ<Σ1이면, 단계(1942)에서 E는 자신의 현재값과 지수 χ1(>1)을 곱하는 것에 의해서 증가하고, 단계(1950)에서 정수 Period는 0으로 리셋되고, 과정은 단계(1922)로 돌아간다. 만약, 단계(1934)에서 Σ≥Σ1임이 밝혀지면, 현재 합 Σ는 수용 합 간격 (Σ1, Σ2)의 내에 있다고 결론지어진다. 과정은 단계(1922)로 다시 돌아가고 E의 값은 변하지 않는다.
도 19의 단계들은 각각의 컴퓨터 판독가능 기록 매체에 저장된 컴퓨터 판독가능 명령에 따르는 플로우 콘트롤러(246)에 관련된(연결된) 앞서 언급된 프로세서에 의해 실시될 수 있다.
다수 연결 매트릭(Multiple connection metrics)
도 17에서 고려된 매트릭 μ는 전송 지연, 데이터 손실 비율 또는 디코더(240)에서의 버퍼 점유시간과 같은 연결 성능의 다수의 측면 중 하나를 나타내는 스칼라이다. 따라서, 경계 μ1과 μ2는 역시 스칼라이다. 인코딩 계수를 조절하기 위한 기준은 하나의 성능 측면과 관련된 연결 매트릭 μ와 지수 χ1 및 χ2에 기초한다. 지수들은 인코딩 계수(도 18과 19의)를 조절하며, 동일 매트릭의 수용 범위로부터의 매트릭 현재값의 일탈의 함수가 된다. 연결 성능의 여러 측면을 고려하기 위해서, 대응하는 매트릭이 정규화되고(normalized) 혼합(composite) 매트릭이 (한계 μ1과 μ2을 갖고 이에 따라 선택된)다수 정규화된 매트릭의 편중된 합(weighted sum)으로 정의될 수 있다. 예를 들어, 지연 매트릭은, 고려된 연결의 추정 최소 지연과 같은 일부 명목 딜레이 값에 대하여 정규화될 수 있으며, 그러므로 무차원이 된다(become dimensionless). 본래 무차원인 데이터-손실 매트릭은 정규화된 매트릭으로 사용될 수 있으며, 버퍼-점유시간 매트릭(역시 무차원임) 각각의 버퍼의 능력에 관하여 정규화될 수 있다. 예를 들어, 지연의 동시에 발생하는 측정값, 데이터 손실 비율, 그리고 버퍼 점유시간(순서대로 20 밀리초, 0.02, 200인)이 고려될 수 있다. 20밀리초(milliseconds)의 지연 매트릭은 10밀리초인 명목(기준) 지연에 기초하여 2.0의 값으로 정규화될 수 있다. 그리고 버퍼 점유시간 200 데이터 유닛은 버퍼의 능력 250 데이터 유닛에 기초하여 0.8로 정규화될 수 있다. 혼합 매트릭 μ*는 μ*delay (지연)+a×μloss(손실)+b×μbuffer (버퍼)로 정의될 수 있다. 여기서 μdelay, μloss, μbuffer는 각각 정규화된 지연-기초 매트릭, 데이터-손실 매트릭, 정규화된 버퍼 점유 시간 매트릭을 나타낸다. 파라매터 a와 b를 각각 80.0과 2.5로 선택하면, 상기 예시된 매트릭들을 위한 혼합 매트릭 μ* 는 μ*=2.0+80.0×0.02+2.5×0.8=5.6으로 결정된다.
연결 성능의 다수 측면을 고려하는 더욱 철저한 방법(thorough method)은 분리된 매트릭을 억도 각각의 성능 측면마다 분리된 수용 간격을 명시하는 것이다. 현재의 메트릭 셋의 어떠한 현재 매트릭이라도 자신의 수용 간격보다 위에 있으면, 인코딩 계수 E는 줄어들 수 있다. 다음의 타임 윈도우에서 얻어지는 새로운 매트릭은 인코딩 계수의 변화에 의한 인코딩 레이트의 변화와 연결 투과율의 어떠한 변화에 의해서 영향받을 것이다. 새로운 매트릭들 그 어느 것도 각각의 수용 간격 위에 있지 않을 때까지 인코딩 계수 E는 다시 감소한다. 반대로, 모든 현재 메트릭이 그들 각각의 수용 간격보다 아래에 있으면, 인코딩 계수는 늘어날 수 있다. E는 결과적인 새로운 매트릭 중 적어도 하나 이상이 그것의 수용 간격 내에 있으면서, 어떠한 나머지 매트릭들도 자신의 수용 간격 위에 있지 않으면, 변하지 않는다.
도 20은 2개 매트릭 μ(1)과 μ(2)의 현재값에 따른 상술한 인코딩-계수 E의 조절 방법을 도시한다. 도 20에서 도시된 바와 같이, μ(1)은 위로 증가하고 μ(2)는 아래로 증가한다. 제1매트릭 μ(1)의 수용 간격(2020, 이하 제1수용 간격)은 하계 μ1 (1)와 상계 μ2 (1)를 가진다. 제2매트릭 μ(2)의 수용 간격(2040, 이하 제2수용 간격)은 하계 μ1 (2)와 상계 μ2 (2)를 가진다. 참조번호 2022, 2024, 2026 그리고 2028은 E1, E2, E3, E4(E1<E2<E3<E4)의 인코딩 계수 값에 대응하는 제1매트릭의 값들을 나타낸다. 참조번호 2042, 2044, 2046 그리고 2048은 E1, E2, E3, E4의 인코딩 계수 값에 대응하는 제2매트릭의 값들을 나타낸다.
인코딩 계수가 E4로 셋팅된 상태에서, 예를 들어, 제1매트릭의 값(2028)이 상계 μ2 (1)보다 위에 있고, 제2매트릭의 값(2048)이 제2수용 간격 (μ1 (2), μ2 (2)) 내에 있는 것이 밝혀지면. 2개의 매트릭 중 하나의 값이 대응하는 수용 상계보다 높으므로, 인코딩 계수는 자신의 현재값에 지수 χ2(<1)가 곱셈되어 줄어든다. 인코더(220)는 인코딩 플로우 레이트를 조절하고, 플로우 레이트의 조절 이후에 얻어진 새로운 측정값들로부터 새로운 2개의 매트릭이 결정된다. 인코딩 계수가 E3(<E4)의 값으로 줄어들 때, 제1매트릭의 값(2026)이 제1수용 간격 (μ1 (1), μ2 (1)) 내였고 제2매트릭의 값(2046)은 제2수용 간격(μ1 (2), μ2 (2))의 하계 μ1 (2)보다 아래였다. (1)연결 상태의 악화가 매트릭 중 하나가 그것의 수용 상계를 초과하도록 하거나(이 경우 인코딩 계수는 더 줄어듬), (2)연결 상태가 개선되어 제1매트릭과 제2매트릭 모두의 값이 그들 각각의 수용 하계보다 아래(그 결과 인코딩 계수를 증가시킬 기회를 제공함)이지 않는 한 더 이상의 인코딩 계수의 변화는 발생하지 않는다.
인코딩 계수가 E1으로 셋팅되고, 제1매트릭 μ(1)의 값(2022)이 하계 μ1 (1)보다 아래이고, 제2매트릭 μ(2)의 값(2042)이 하계 μ1 (2)아래인 상태에서. 인코딩 계수는 E2로 증가한다. 결과적으로, 제2매트릭 μ(2)의 값이 값(2044)으로 증가한다. 값(2044)은 수용 간격 (μ1 (2), μ2 (2)) 내이지만 상계 μ2 (2)에 가깝다. 제1매트릭 μ(1)은 값(2024)까지 증가한다. 값은 여전히 하계보다 작다. 연결 투과율의 변화가 없는 상황에서, 인코딩 계수가 더 증가하는 것은 제2매트릭 μ(2)이 상계 μ2 (2) 위로 가도록 할 수 있다. 인코딩 계수가 증가할 기회를 제공할 정도로 또는 인코딩 계수를 강제로 감소시킬 정도로 연결 상태가 변할 때까지 인코딩 계수는 더 이상 변하지 않는다.
도 21은 3개 매트릭 μ(1), μ(2)그리고 μ(3)의 현재값에 따른 인코딩-계수의 조절 방법을 도시한다. 제1매트릭 μ(1), 제2매트릭 μ(2) 그리고 제3매트릭 μ(3) 각각의 3개 수용 간격(2102), (2122) 그리고 (2132)는 명확성을 위해 오버랩되지 않는 선으로 그려져 있다. 그러나 연결의 서로 다른 지표를 나타내는 3개의 매트릭은 독립적으로 다루어진다는 것이 이해된다. 그러므로 매트릭 μ(1), μ(2), μ(3)각각의 수용 간격(2102, 2122, 2142)의 위치는 그들의 상대적인 값을 나타내지 않는다. 제1수용 간격(2102)은 하계 μ1 (1)와 상계 μ2 (1)를 가진다. 제2매트릭 μ(2)를 위한 제2수용 간격(2122)은 하계 μ1 (2)와 상계 μ2 (2)를 가진다. 제3매트릭 μ(3)를 위한 제3수용 간격(2142)은 하계 μ1 (3)와 상계 μ2 (3)를 가진다. 참조번호 2104, 2106, 2108, 2110, 2112, 2114, 2116 그리고 2118은 대응하는 인코딩 계수 E1에서 E7(Ej<Ej +1, 1≤j≤6)에 따른 제1매트릭 μ(1)의 값들을 나타낸다. 마찬가지로, 참조번호 2124, 2126, 2128, 2130, 2132, 2134, 2136 그리고 2138은 대응하는 인코딩 계수 E1에서 E7에 따른 제2매트릭 μ(2)의 값들을 나타낸다. 그리고 참조번호 2144, 2146, 2148, 2150, 2152, 2154, 2156 그리고 2158은 대응하는 인코딩 계수 E1에서 E7에 따른 제3매트릭 μ(3)의 값들을 나타낸다.
적응형 인코더가 자신의 인코딩 파라매터를 명목 레이트와 인코딩 계수 E1에 따라 조절한 경우를 고려하자. 특정 윈도우의 마지막에서 얻어진 매트릭 벡터는 2104, 2124, 2144에 의해 나타난 μ(1), μ(2), μ(3)의 매트릭 값들을 가진다. 2104, 2124, 2144의 값들은 자신에 대응되는 허용 간격의 하계보다 아래에 있다. 그러므로, 각 스텝 이후 얻어진 측정값들로부터 결정된 3개의 매트릭 {μ(1), μ(2), μ(3)} 중 어느 하나가 각각의 수용가능 지역의 상계에 충분히 근접할 때까지 인코딩 계수는 단계적으로 증가한다. 도 21의 예시에서, 이러한 상황은 적응형 인코더(220)가 인코딩 계수 E2에 따라 자신의 플로우 레이트를 조절한 이후에 2126으로 나타난 매트릭 μ(2)의 값에서 충족된다.
명목 레이트와 인코딩 계수 E3에 따라 적응형 인코더(220)가 자신의 인코딩 파라매터를 조절한 경우에, 2108, 2128, 2148로 나타난 매트릭 μ(1), μ(2), μ(3)의 값들은 그들 각각의 수용 간격 아래가 된다. 인코딩 계수는 E4의 값까지 증가하고, 여기서 매트릭 μ(1)의 값(2110)이 자신의 수용 간격의 상계에 근접하고, 매트릭 μ(2)(3)의 값들(2130, 2150)은 그들 각각의 수용 간격 내에 있다.
명목 레이트와 인코딩 계수 E7에 따라 적응형 인코더(220)가 자신의 인코딩 계수를 조절한 경우에, 2138로 나타난 매트릭 μ(2)의 값은 수용 간격(2122)의 상계를 초과한다. 인코딩 계수는 E6(<E7)의 값으로 줄어든다. 매트릭 μ(1)과 μ(3)는 그들 각각의 수용 간격 아래인 2116과 2156의 값으로 줄어든다. 그러나 매트릭 μ(2)는 자신의 수용 간격(2122) 내인 2136의 값으로 줄어든다. 따라서, 인코딩 계수는 E6값에서 변하지 않는다. 연결 투과율은 감소는 2114, 2134, 2154로 각각 나타낸 값들로 매트릭이 다음에 증가하도록 한다. 매트릭 μ(2)이 자신의 상계를 초과하고, 인코딩 계수는 E5의 값으로 줄어든다.
도 22는 연결을 통해 스트림 서버(120)에 의해 클라이언트(160)로 전달된 신호의 피크(peak) 인코딩 레이트(피크 플로우 레이트)의 함수로 패킷-손실 비율 θ을 도시한다. 앞서 정의된 바와 같이, 연결 투과율은 기설정 성능 목표를 어기지 않고 스트림 서버로부터 클라이언트로의 연결이 지속할(버틸) 수 있는 피크 플로우 레이트이다. 도 22의 예시에서, 투과율은 패킷-손실 성능에 따라서만 정의된다. 도 22는 패킷-손실 비율과 연결의 튜과율에 따라 정규화된 피크 인코딩 레이트 간의 바람직한 관계를 도시한다. 피크 인코딩 레이트는 알려져 있다. 그러나, 연결의 투과율은 시간에 따라 변할 수 있으며 안 알려져 있을 수 있다. 만약, 피크 인코딩 레이트가 투과율보다 높으면, 패킷-손실 비율 θ는 0보다 크고, 피크 인코딩 레이트 대 투과율의 비율은 1/(1-θ)로 결정될 수 있으며, 패킷 손실을 제거하기 위해 인코딩 레이트는 (1-θ)의 지수(factor)로 감소할 수 있다. 패킷-손실 비율은 상술된 바와 같이 선택된 타임 윈도우에서 측정될 수 있다. 라인(2210)은 패킷-손실 비율 θ를 피크 인코딩 레이트 대 현재 투과율의 비율 ρ의 함수로 도시한다. ρ≤1.0에서 θ의 값은 0이다. ρ=1.5에서 θ=0.33이고 ρ=2.0에서 θ=0.5이다.
만약, θ의 측정된 값이 0이면, 피크 인코딩 레이트 대 투과율의 비율은 0위와 1아래 사이의 어느 것이던 될 수 있으며, 인코딩 레이트의 적절한 증가(즉, 인코딩 계수 E의 증가)를 정확하게 결정하는 것은 어려우며, 그것은 패킷 손실을 피하면서 신호 충실도(signal fidelity)를 개선시킬 것이다. 패킷 손실이 측정될 때까지(θ>0) 인코딩 레이트는 단계적으로 증가하고, 그러면 이에 따라 인코딩 레이트는 수정된다. θ의 측정된 값이 상당히 작으면(예를 들어, 0.001의 자릿수 로), 인코딩 레이트 수정은 필요하지 않을 수 있다. 패킷-손실 비율의 하계 θmin(라인 2220)와 상계 θmax(라인 2330)에 의해 정의되는 수용 간격은 θ의 작은 값에 대한 불필요한 처리를 피하도록 도움을 준다. θmin과 θmax의 값은 디자인 파라매터이다. 0.001의 θmin값과 0.02의 θmax값이 적절한 값으로 고려될 수 있다.
프로세서에 의해 실행되면 상술한 방법들의 단계들을 수행하는 명령들이 저장된 컴퓨터 판독가능 매체, 예를 들어 DVD, CD-ROM, 플로피, 또는 비휘발성 메모리와 같은 메모리,가 역시 제공될 수 있다.
본 발명의 특정 실시예들이 상세하게 기술되었지만, 설명된 실시예들은 설명을 위한 것이지 제한을 위한 것이 아님을 주의하여야 한다. 보여진 실시예들의 다양한 변화 및 변경이 발명의 범위의 넓은 측면에서 벗어나지 않고 하기의 청구항들의 범위 내에서 가능하다.

Claims (17)

  1. 데이터-스트리밍 서버로부터 클라이언트 장치에 시-변화 연결을 통해 전송되는 신호의 적응형 인코딩 레이트를 결정하는 방법에 있어서,
    상기 연결의 현재 인코딩 레이트를 판단하는 단계;
    제1타임 인스턴트와 제2타임 인스턴트 사이의 W 측정값들을 포함하는 타임 윈도우에서 상기 연결의 특정 지표의 측정값들을 얻은 단계;
    상기 측정값들로부터 상기 특정 지표의 매트릭 μ를 판단하는 단계;
    μ의 값이 하계 μ1과 상계 μ2를 가지는 소정 수용 간격 내에 있는 조건 하에서, 상기 현재 인코딩 레이트를 수용하는 단계; 및
    상기 현재 인코딩 레이트를
    (1)μ의 값이 상기 수용 간격의 상기 상계 μ2를 초과하면, 지수 χ2(<1)
    (2)μ의 값이 상기 수용 간격의 상기 하계 μ1 아래이면, 지수 χ1(>1)
    중 하나에 의해 조절하는 단계
    를 포함하는 적응형 인코딩 레이트 결정 방법.
  2. 제 1항에 있어서,
    상기 특정 지표는 상기 연결의 전송 지연이고, 상기 매트릭을 판단하는 단계는,
    상기 전송 지연의 측정값 σ를 얻는 단계;
    상기 측정값 σ를 가산하고 순환 어레이 V 내의 현재 인덱스에서의 엔트리를 감산하여, 합계 Σ를 업데이트하는 단계 -여기서, 상기 순환 어레이는 상기 특정 지표의 이전 측정값들을 저장하는 W(>1)의 엔트리를 가짐-;
    상기 현재 인덱스에서 상기 순환 어레이 내에 상기 측정값 σ를 저장하는 단계;
    상기 현재 인덱스에 1을 더해서 업데이트하고 W 인덱스를 0으로 리셋하는 단계;
    측정값들의 누계 숫자를 나타내는 카운터에 1을 더하는 단계;
    상기 카운터가 소정 문턱 P* 아래이면 상기 얻는 단계를 반복하는 단계; 및
    상기 카운터가 상기 문턱 P* 이상이면 상기 매트릭을 상기 합계 Σ로 결정하는 단계를 포함하는
    적응형 인코딩 레이트 결정 방법.
  3. 제 2항에 있어서,
    상기 하계 μ1이 W에 의해 곱셈된 수용 전송 지연의 하계로 결정되고, 상기 상계 μ2는 W가 곱셈된 수용 전송 지연의 상계로 결정되는
    적응형 인코딩 레이트 결정 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 현재 인코딩 레이트의 상기 조절 단계 이후에, 상기 카운터를 0으로 리셋하는 단계
    를 더 포함하는 적응형 인코딩 레이트 결정 방법.
  5. 제 2항 내지 제 4항 중 어느 한 항에 있어서,
    상기 현재 인코딩 레이트를 조절하는 어떠한 2개의 연속적인 단계들 사이의 시간 간격도 소정 최소 시간 간격을 초과하도록 상기 문턱 P*를 결정하는 단계
    를 더 포함하는 적응형 인코딩 레이트 결정 방법.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 지수 χ1은 (μ1-Σ)의 함수로 결정되고, 상기 지수 χ2는 (Σ-μ2)의 함수로 결정되는
    적응형 인코딩 레이트 결정 방법.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    상기 특정 지표는 데이터 손실 비율이고, 상기 매트릭은 상기 타임 윈도우에서 얻어진 데이터 손실 비율 θ이고,
    여기서 μ1과 μ2(>μ1)는 수용 데이터 손실 비율의 경계이고, θ가 μ1보다 작을 때 상기 지수 χ1은 소정 곱셈자 χ(>1)로 결정되고, θ>μ2일 때 상기 지수 χ2는 (1-θ)로 결정되는
    적응형 인코딩 레이트 결정 방법.
  8. 시-변화 연결을 통한 인코더로부터 디코더로의 데이터 스트리밍 방법에 있어서,
    인코딩 계수와 상기 연결을 관련짓는 단계 -여기서, 상기 인코딩 계수는 상기 인코더 출력의 플로우 레이트를 결정함-;
    다수 성능 지표와 상기 연결을 관련짓는 단계;
    상기 다수 성능 지표와 일-대-일로 대응되는 다수 성능 매트릭을 정의하는 단계;
    현재 인코딩 계수에서, 타임 윈도우에서 상기 연결의 성능 측정값들의 다수 셋을 얻는 단계 -여기서 상기 성능 측정값들의 다수 셋 각각은 상기 다수 성능 지표 중 하나에 대응함-;
    성능 매트릭의 현재값들의 셋을 생성하기 위해, 대응되는 성능 측정값들의 셋을 이용하여 각각의 성능 매트릭의 현재값을 판단하는 단계; 및
    각각의 성능 매트릭의 상기 현재값에 따라 우선의(preferred) 인코딩 계수를 결정하는 단계
    를 포함하는 데이터 스트리밍 방법.
  9. 제 8항에 있어서,
    수용 간격들의 셋을 정의하는 단계 -여기서 각각의 상기 수용 간격은 각각의 하계와 각각의 상계를 가지며 상기 다수 성능 매트릭 중 하나에 대응함-;
    성능 매트릭의 현재값들의 상기 셋의 각각의 요소가 대응하는 수용 간격의 하계보다 낮으면, 상기 우선의 인코딩 계수를 생성하기 위해, 상기 현재 인코딩 계수에 제1지수(1보다 큼)를 곱하는 단계; 및
    성능 매트릭의 현재값들의 상기 셋의 적어도 하나의 요소가 대응하는 수용 간격의 상계를 초과하면, 상기 우선이 인코딩 계수를 생성하기 위해, 상기 현재 인코딩 계수에 제2지수(1보다 작음)를 곱하는 단계
    를 더 포함하는 데이터 스트리밍 방법.
  10. 제 8항 또는 제 9항에 있어서,
    상기 다수 성능 지표는 전송 지연, 데이터 손실 및 상기 연결을 통해 수신한 데이터를 홀딩하는 디코더 버퍼의 점유 시간을 포함하고,
    상기 다수 성능 매트릭은
    상기 타임 윈도우 동안의 상기 인코더로터 상기 디코더로의 전송 지연의 평균값;
    상기 타임 윈도우 동안의 데이터 손실 값; 및
    상기 타임 윈도우 동안의 상기 디코더 버퍼의 점유 시간 값을 포함하는
    데이터 스트리밍 방법.
  11. 제 8항 내지 제 10항 중 어느 한 항에 있어서,
    상기 제1지수와 상기 제2지수의 곱은 1보다 작은
    데이터 스트리밍 방법.
  12. 제 8항 내지 제 11항 중 어느 한 항에 있어서,
    적어도 소정 최소 시간 간격을 두고 이전의 타임 윈도우의 뒤를 잇도록 상기 타임 윈도우를 선택하는 단계
    를 더 포함하는 데이터 스트리밍 방법.
  13. 제 8항 내지 제12항 중 어느 한 항에 있어서,
    성능 측정값들의 상기 다수 셋은 실-시간 전송 프로토콜(RTP)과 실-시간 전송 제어 프로토콜(RTCP)을 사용하는 상기 인코더와 상기 디코더 간의 제어 데이터의 교환을 통해 얻어지는
    데이터 스트리밍 방법.
  14. 시-변화 연결을 통한 인코더로부터 디코더로의 데이터 스트리밍 방법에 있어서,
    인코딩 계수를 상기 인코더와 관련짓는 단계 -여기서, 상기 인코딩 계수는 상기 인코더의 출력의 플로우 레이트를 결정함-;
    상기 연결의 성능 매트릭을 정의하는 단계;
    하계와 상계를 가지는 성능 매트릭의 수용 간격을 정의하는 단계;
    현재 인코딩 계수에서, 타임 윈도우에서 상기 연결의 성능 측정값들의 셋을 얻는 단계;
    성능 측정값들의 상기 셋에 따라 상기 연결의 상기 매트릭의 현재값을 알아내는 단계; 및
    하기 (1),(2) 중 하나에 따라 우선의 인코딩 계수를 결정하는 단계
    (1)상기 매트릭의 상기 현재값이 상기 하계보다 낮은 경우에, 상기 우선의 인코딩 계수를 생성하기 위해, 상기 현재의 인코딩 계수에 제1지수(1보다 큼)를 곱함
    (2)상기 매트릭의 상기 현재값이 상기 상계를 초과하면, 상기 우선의 인코딩 계수를 생성하기 위해, 상기 현재의 인코딩 계수에 제2지수(1보다 작음)를 곱함
    를 포함하는 데이터 스트리밍 방법.
  15. 제 14항에 있어서,
    상기 우선의 인코딩 계수와 명목 인코딩 레이트에 따라 신호를 인코딩하도록 상기 인코더에 명령하는 단계
    를 더 포함하는 데이터 스트리밍 방법.
  16. 제 14항 또는 제 15항에 있어서,
    상기 제1지수는 상기 하계와 상기 매트릭의 상기 현재값의 차이의 함수이고,
    상기 제2지수는 상기 매트릭의 상기 현재값과 상기 상계의 차이의 함수인
    데이터 스트리밍 방법.
  17. 제 14항 내지 제 16항 중 어느 한 항에 있어서,
    상기 매트릭은 다음 (1)~(3) 중 하나인
    (1)상기 타임 윈도우 동안의 전송 지연의 평균값
    (2)상기 타임 윈도우 동안의 데이터 손실의 평균값
    (3)상기 타임 윈도우의 마지막에서 측정된 디코더 버퍼의 점유 시간 값 -여기서, 상기 디코더 버퍼는 상기 연결을 통해 수신한 데이터를 홀딩함-
    데이터 스트리밍 방법.
KR1020117004353A 2008-07-28 2008-10-16 시-변화 전송 미디어를 통한 데이터 스트리밍 KR101399509B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/180,697 US8001260B2 (en) 2008-07-28 2008-07-28 Flow-rate adaptation for a connection of time-varying capacity
US12/180,704 US7844725B2 (en) 2008-07-28 2008-07-28 Data streaming through time-varying transport media
US12/180,697 2008-07-28
US12/180,704 2008-07-28
PCT/CA2008/001824 WO2010012067A1 (en) 2008-07-28 2008-10-16 Data streaming through time-varying transport media

Publications (2)

Publication Number Publication Date
KR20110044258A true KR20110044258A (ko) 2011-04-28
KR101399509B1 KR101399509B1 (ko) 2014-05-27

Family

ID=41609870

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117004353A KR101399509B1 (ko) 2008-07-28 2008-10-16 시-변화 전송 미디어를 통한 데이터 스트리밍
KR1020117004344A KR101519903B1 (ko) 2008-07-28 2008-10-16 시-변화 가능 연결을 위한 플로우-레이트 적응

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117004344A KR101519903B1 (ko) 2008-07-28 2008-10-16 시-변화 가능 연결을 위한 플로우-레이트 적응

Country Status (7)

Country Link
EP (2) EP2308200B1 (ko)
JP (3) JP5536059B2 (ko)
KR (2) KR101399509B1 (ko)
CN (2) CN102106112B (ko)
CA (2) CA2723788C (ko)
IL (2) IL209628A (ko)
WO (2) WO2010012067A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2493504B (en) * 2011-07-25 2017-11-29 Qualcomm Technologies Int Ltd Data flow control
US9306994B2 (en) * 2012-06-06 2016-04-05 Cisco Technology, Inc. Stabilization of adaptive streaming video clients through rate limiting
WO2015034405A1 (en) * 2013-09-05 2015-03-12 Telefonaktiebolaget L M Ericsson (Publ) Adaptive multimedia codec parameter adaptation
GB2524958A (en) * 2014-04-03 2015-10-14 Orbital Multi Media Holdings Corp Data flow control method
JP5896055B2 (ja) * 2015-02-24 2016-03-30 住友電気工業株式会社 優先度設定装置及びコンピュータプログラム
US10135890B2 (en) * 2015-03-06 2018-11-20 Sony Interactive Entertainment LLC Latency-dependent cloud input channel management
US20160259453A1 (en) 2015-03-06 2016-09-08 Sony Computer Entertainment America Llc Dynamic adjustment of cloud game data streams to output device and network quality
US10516892B2 (en) 2015-09-28 2019-12-24 Cybrook Inc. Initial bandwidth estimation for real-time video transmission
US10756997B2 (en) 2015-09-28 2020-08-25 Cybrook Inc. Bandwidth adjustment for real-time video transmission
CN107438187B (zh) * 2015-09-28 2020-06-30 苏州踪视通信息技术有限公司 实时视频传输的带宽调整
US10506257B2 (en) 2015-09-28 2019-12-10 Cybrook Inc. Method and system of video processing with back channel message management
US9397973B1 (en) * 2015-10-16 2016-07-19 Machine Zone, Inc. Systems and methods for transferring message data
CN108476345B (zh) * 2015-11-02 2021-10-15 万特里克斯公司 内容控制流媒体网络中的流量速率调节的方法和***
CN107170460B (zh) * 2017-06-30 2020-12-08 深圳Tcl新技术有限公司 音质调整方法、***、主机端、及存储介质
KR102119661B1 (ko) * 2018-10-31 2020-06-08 한국전력공사 회전기기 고장 예지를 위한 건전성 지표 추이 및 잔존수명 예측 기법
CN110113777B (zh) * 2019-04-29 2022-03-01 深圳广熵科技有限公司 一种数据采集方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6400954B1 (en) * 1998-05-15 2002-06-04 Tlelefonaktiebolaget Lm Ericsson (Publ) Methods and systems for mode selection based on access network capacity
JP3520986B2 (ja) * 2000-12-08 2004-04-19 タイコエレクトロニクスアンプ株式会社 電気コネクタ
JP3900413B2 (ja) * 2002-02-14 2007-04-04 Kddi株式会社 映像情報伝送方式およびプログラム
KR20030095995A (ko) * 2002-06-14 2003-12-24 마츠시타 덴끼 산교 가부시키가이샤 미디어 전송방법 및 그 송신장치 및 수신장치
SG111978A1 (en) * 2002-11-20 2005-06-29 Victor Company Of Japan An mpeg-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
JP4069444B2 (ja) * 2002-12-10 2008-04-02 ソニー株式会社 符号化制御方法及び符号化制御プログラム
US20060233201A1 (en) 2002-12-18 2006-10-19 Hartmut Wiesenthal Adaptive encoding of digital multimedia information
JP2004215224A (ja) * 2002-12-20 2004-07-29 Nippon Telegr & Teleph Corp <Ntt> 符号誤り訂正方法、符号誤り訂正システム、プログラム及びそのプログラムを記録した記録媒体
JP3769752B2 (ja) * 2002-12-24 2006-04-26 ソニー株式会社 情報処理装置および情報処理方法、データ通信システム、並びに、プログラム
EP1593046A2 (en) * 2003-02-13 2005-11-09 Nokia Corporation Rate adaptation method and device in multimedia streaming
JP3894130B2 (ja) * 2003-02-13 2007-03-14 日本電信電話株式会社 パス容量増減判断方法
BRPI0511858B1 (pt) * 2004-06-07 2020-12-22 Sling Media, Inc. transmissor de mídia pessoal e respectivo sistema de transmissão, métodos de provimento de acesso a fonte áudio/visual em localização remota da fonte áudio/visual e de fluxo (streaming) de sinal de mídia para local de assinante remoto
KR100608821B1 (ko) * 2004-07-22 2006-08-08 엘지전자 주식회사 휴대단말기의 왕복지연시간 측정장치 및 방법
JP2006129439A (ja) * 2004-09-28 2006-05-18 Kyocera Corp 通信システム、基地局装置、サーバ装置、移動局装置、及び送信データ量決定方法
JP4838143B2 (ja) * 2004-11-17 2011-12-14 シャープ株式会社 送信装置
KR100631514B1 (ko) * 2004-12-16 2006-10-09 엘지전자 주식회사 실시간 스트리밍 서비스의 전송률 제어 방법
GB2423219B (en) * 2005-02-10 2007-04-18 Motorola Inc A network proxy client, a communication system and a method for providing a service between a server and an end client
JP4697525B2 (ja) * 2005-04-20 2011-06-08 ソニー株式会社 送受信システム、送信装置および送信方法、受信装置および受信方法、並びにプログラム
US8842555B2 (en) * 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems
US8381047B2 (en) * 2005-11-30 2013-02-19 Microsoft Corporation Predicting degradation of a communication channel below a threshold based on data transmission errors

Also Published As

Publication number Publication date
CN102106113A (zh) 2011-06-22
IL209722A (en) 2014-12-31
JP5768292B2 (ja) 2015-08-26
CN102106113B (zh) 2014-06-11
KR101519903B1 (ko) 2015-05-14
CA2723788C (en) 2016-10-04
EP2308199A1 (en) 2011-04-13
KR20110044257A (ko) 2011-04-28
WO2010012067A1 (en) 2010-02-04
CA2723788A1 (en) 2010-02-04
JP5465723B2 (ja) 2014-04-09
EP2308200B1 (en) 2013-12-11
EP2308200A4 (en) 2012-03-21
JP2011529307A (ja) 2011-12-01
EP2308200A1 (en) 2011-04-13
CN102106112A (zh) 2011-06-22
EP2308199B1 (en) 2013-12-18
JP2014123957A (ja) 2014-07-03
IL209722A0 (en) 2011-02-28
IL209628A (en) 2017-04-30
JP5536059B2 (ja) 2014-07-02
CA2723628C (en) 2015-12-22
KR101399509B1 (ko) 2014-05-27
IL209628A0 (en) 2011-02-28
EP2308199A4 (en) 2012-03-21
CN102106112B (zh) 2014-07-09
WO2010012066A1 (en) 2010-02-04
JP2011529306A (ja) 2011-12-01
CA2723628A1 (en) 2010-02-04

Similar Documents

Publication Publication Date Title
KR101399509B1 (ko) 시-변화 전송 미디어를 통한 데이터 스트리밍
US9112947B2 (en) Flow-rate adaptation for a connection of time-varying capacity
US8135856B2 (en) Data streaming through time-varying transport media
KR102366630B1 (ko) 화상 전화에서의 수신기 구동 업 스위칭
KR20110120836A (ko) 디지털 콘텐트의 적응형 스트리밍 제어
KR100929771B1 (ko) 스트림당 이용가능한 대역폭 및 비트 스트림 교환을계산하는 다중 데이터 스트림을 전송하기 위한 데이터통신 방법 및 시스템
CN104980818A (zh) 增强的媒体质量管理
US10911804B2 (en) Bitrate instruction device, bitrate instruction method, and non-transitory recording medium

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170512

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180510

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190509

Year of fee payment: 6

R401 Registration of restoration