KR101411197B1 - 패킷 스트림 내의 지터 보상 방법 - Google Patents

패킷 스트림 내의 지터 보상 방법 Download PDF

Info

Publication number
KR101411197B1
KR101411197B1 KR1020097005329A KR20097005329A KR101411197B1 KR 101411197 B1 KR101411197 B1 KR 101411197B1 KR 1020097005329 A KR1020097005329 A KR 1020097005329A KR 20097005329 A KR20097005329 A KR 20097005329A KR 101411197 B1 KR101411197 B1 KR 101411197B1
Authority
KR
South Korea
Prior art keywords
packet
jitter
playout delay
buffer
sample
Prior art date
Application number
KR1020097005329A
Other languages
English (en)
Other versions
KR20090058522A (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20090058522A publication Critical patent/KR20090058522A/ko
Application granted granted Critical
Publication of KR101411197B1 publication Critical patent/KR101411197B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P25/00Drugs for disorders of the nervous system
    • 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
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • H04J3/0632Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]
    • 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
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • H04J3/0626Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers plesiochronous multiplexing systems, e.g. plesiochronous digital hierarchy [PDH], jitter attenuators
    • 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/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • 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/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Chemical & Material Sciences (AREA)
  • Organic Chemistry (AREA)
  • Neurology (AREA)
  • Neurosurgery (AREA)
  • Chemical & Material Sciences (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Medicinal Chemistry (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Biomedical Technology (AREA)
  • Pharmacology & Pharmacy (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

패킷 스트림 내의 지터를 보상하는 방법이 개시된다. 이 방법은 패킷 스트림 내의 패킷들로부터 추출된 디코딩되지 않은 프레임들을 지터 버퍼 내에 배치하는 한편 평균 플레이아웃 지연을 이용하여 결정된 속도로 지터 버퍼로부터의 프레임들을 디코딩하고 디코딩된 프레임들을 샘플 버퍼 내에 배치하는 단계를 포함한다. 평균 플레이아웃 지연은 각각의 패킷이 이용 가능해짐에 따라 각각의 패킷에 대하여 산출된 플레이아웃 지연의 이동 평균(running average)이다. 각각의 패킷에 대한 플레이아웃 지연은 샘플 버퍼 지연과 지터 버퍼 지연의 합이다. 각각의 패킷이 수신됨에 따라, 평균 플레이아웃 지연은 수신된 패킷과 연관된 플레이아웃 지연을 현재 평균 플레이아웃 지연과 비교하는 것에 기초하여 조절된다.
패킷 스트림, 지터, 플레이아웃 지연, 패킷, 디코더, 프레임, 풀모델 디코더

Description

패킷 스트림 내의 지터 보상 방법{NETWORK JITTER SMOOTHING WITH REDUCED DELAY}
IP(Internet Protocol) 네트워크와 같이, 컴퓨팅 장치들에 의해 이용되는 통신 네트워크들은 패킷들로 데이터를 송신한다. 패킷들은 송신을 위한 특정의 방식으로 구성된 데이터의 번들들(bundles of data)이다. 패킷은 헤더와 보디를 포함한다. 보디는 데이터를 포함하며 헤더는 목적지 어드레스, 패킷의 크기, 에러 체킹 코드 등을 포함하는 소정의 제어 정보를 포함한다. 컴퓨팅 장치로부터의 데이터는 패킷 내에 삽입되며 패킷은 데이터를 추출하고 이용하는 다른 컴퓨팅 장치에 송신된다. 예를 들어, 마이크에 연결된 컴퓨팅 장치는 구두 메시지를 기록하고, 패킷들을 이용하여, 스피커를 통해 구두 메시지를 재생하는 제2 컴퓨팅 장치에 구두 메시지를 송신하는 데에 이용될 수 있다.
패킷들을 이용하여 구두 메시지를 송신하기 위하여, 구두 메시지는 아날로그 오디오 신호로서 기록된다. 오디오 신호를 디지털 신호로 변환하기 위하여 ADC(analog to digital converter)가 이용된다. 디지털 신호는 코더/디코더(코덱)에 의해 코딩된 바이너리 데이터(coded binary data)로 변환된다. 바이너리 데이터를 인코딩하는 것은 통상적으로 데이터를 압축하는 것을 포함한다. 바이너리 데이터는 별개의 프레임들로 나누어지고 버퍼 내에 배치된다. 패킷타이 저(packetizer)는 버퍼로부터 하나 이상의 프레임들을 추출하고 프레임들을 하나 이상의 패킷들에 배치한다. 패킷들은 네트워크를 통해 재생 컴퓨팅 장치로 송신된다. 패킷 판독기는 패킷들을 판독하고 패킷들로부터 하나 이상의 프레임들을 추출하며 프레임들을 버퍼 내에 배치한다. 프레임들이 버퍼로부터 추출되고 프레임 내에 포함된 인코딩된 바이너리 데이터는 코덱에 의해 디코딩되고 디지털 신호로 변환된다. 디지털 신호는 DAC 변환기(digital to analog)에 의해 아날로그 오디오 신호로 변환된다. 오디오 신호는 원래의 구두 메시지를 재생하는 스피커를 구동한다.
통신 네트워크들은 물리 장치들의 어셈블리들이기 때문에, 분실되지 않은 패킷들은 전달되는 데에 한정된 양의 시간을 차지한다. 패킷 전달 시간은, 송신 라인들을 통해 패킷들이 이동하는 물리적 거리, 패킷들을 라우트하는 데에 이용되는 네트워크 라우터들 및 스위치들의 성능 변동, 및 패킷들을 송신 및 수신하는 컴퓨팅 장치들 간의 타이밍 차이들인 "클럭 드리프트(clock drift)"와 같은 다양한 지연의 원인들(sources of delay)(이들에 한정하는 것은 아님)에 기인하여 가변된다. 송신 중에 패킷이 마주치는 지연 원인들의 수 및 종류들에 따라, 지연들의 지속기간은 시간에 따라 변화한다. 패킷들의 지연에서의 변동은 "통계적 분산(statistical dispersion)" 또는 덜 형식적으로는 "지터(jitter)"로 호칭된다. 네트워크에 지터가 많을수록, 일정한 패킷 전달 속도를 유지하기가 더욱 어려워져서, 네트워크를 통해 송신된 오디오 신호를 정확히 재생하는 것이 더욱 어렵게 된다.
실제로, 지터는 짧은 기간(예를 들면, 수 밀리초)에 걸쳐 최대 패킷 지연에서 최소 패킷 지연을 뺀 것으로 정의될 수 있다. 최대 패킷 지연과 최소 패킷 지연 간의 차이, 즉 지터의 절대값은 짧은 기간 동안, 즉 단기간 동안 수신된 다수의 패킷들을 포함할 만큼 충분히 큰 버퍼를 가지는 것만큼 중요하지는 않다. 지터를 측정하는 것은 오디오 신호를 적응시켜 신호가 나타내는 오디오 출력을 정확히 재생하는 기술들을 가능하게 한다. 바람직하게는, 신호 적응은 장기간에 걸쳐 제공되는데, 즉 비교적 긴 기간(예를 들면 약 1 초)에 걸쳐 패킷 지연이 변화한다. 장기간 패킷 지연이 증가하면, 오디오 신호는 신장된다(expanded). 장기간 패킷 지연이 감소하면, 오디오 신호는 압축된다(contracted). 오디오 신호들을 압축 및 신장하기 위한 많은 방법들이 있다. 예를 들어, 오디오 신호를 압축하기 위하여, 유용한 정보가 거의 없거나 전혀 없는 신호의 작은 세그먼트들이 제거될 수 있으며, 오디오 신호를 신장하기 위하여, 신호의 작은 세그먼트들이 카피되고 반복될 수 있다.
신호 압축 또는 신장에 의해 지터를 보상하는 것은 주의해서 과하지 않게 수행되어야 한다. 예를 들어, 오디오 신호가 사람의 음성을 인코딩한 것이고 오디오 신호가 너무 많이 압축되면, 생성된 가청 발언(audible speech)은 빠르게 들릴 수 있다. 동일한 오디오 신호가 너무 많이 신장되면, 재생된 가청 발언은 느리게 들릴 수 있다. 따라서, 지터를 보상하기 위한 조절(adjustments)은 원래의 발언이 적절히 재생되기에 충분하도록 서서히 주의해서 수행되어야 한다.
신호 압축 및 신장과 같은 지터 보상 기술들을 적용할 시기를 결정하기 위한 전통적인 방법들은 종종 지터의 원인들이 측정되고, 정량화되며, 값들로서 기록되어지는 것을 요구한다. 이 값들은 그 후 지터의 효과들을 보상하는 기술들을 적용하는 시기를 결정하는 데에 이용된다.
발명의 개요
이 개요는 이하의 상세한 설명부에서 더 설명되는 개념들의 선택을 간단한 형태로 도입하기 위해 제공된다. 이 개요는 청구된 본원 발명의 주요 특징들을 식별하기 위한 것은 아니며, 청구된 본원 발명의 범위를 결정하는 것을 보조하기 위하여 이용하려는 것도 아니다.
패킷 스트림 내의 지터 보상 방법이 개시된다. 이 방법은 패킷 스트림 내의 패킷들로부터 디코딩되지 않은 프레임들을 추출하는 단계 및 상기 디코딩되지 않은 프레임들을 지터 버퍼 내에 배치하는 한편 지터 버퍼로부터의 프레임들을 디코딩하고 디코딩된 프레임들을 샘플 버퍼 내에 배치하는 단계를 포함한다. 디코딩되지 않은 프레임들은 지터 버퍼 내에 배치되고, 디코딩된 프레임들은 평균 플레이아웃 지연에 의해 결정된 속도로 샘플 버퍼 내에 배치된다. 평균 플레이아웃 지연은 각각의 패킷이 이용 가능해짐에 따라 각각의 패킷에 대하여 산출된 플레이아웃 지연의 이동 평균(running average)이다. 각각의 패킷에 대한 플레이아웃 지연은 샘플 버퍼 지연과 지터 버퍼 지연의 합이다.
각각의 패킷이 수신됨에 따라, 평균 플레이아웃 지연은 수신된 패킷과 연관된 플레이아웃 지연, 즉 현재 플레이아웃 지연에 더욱 가깝게 매칭하도록 적응된다. 더욱 구체적으로, 현재 플레이아웃 지연은 수신된 패킷 내에 포함된 디코딩된 프레임 또는 프레임들에 대하여 예측된 플레이아웃 지연이다. 현재 플레이아웃 지연은 디코딩된 프레임이 지터 버퍼 내에 배치되자 마자 결정된다. 이 때, 인코딩된 프레임이 디코딩되어 재생되기, 즉 플레이아웃되기 전에 인코딩된 프레임이 지터 버퍼 내에서 얼마나 오래 유지될 지가 대략적으로 산출될 수 있다.
평균 플레이아웃 지연이 현재 플레이아웃 지연과 비교된다. 현재 플레이아웃 지연이 평균 플레이아웃 지연보다 작은 경우에, 평균 플레이아웃 지연의 값은 감소된다. 현재 플레이아웃 지연이 평균 플레이아웃 지연보다 크다면, 평균 플레이아웃 지연의 값은 증가된다.
도 1은 예시적인 동기 데이터 디코더의 블럭도.
도 2는 예시적인 비동기 데이터 디코더의 블럭도.
도 3은 예시적인 지터 버퍼 및 지터 버퍼 아래의 연관된 예시적인 샘플 버퍼를 나타내는 도면.
도 4는 시간에 따라 기록된 패킷 지연들을, 지터 버퍼를 다양한 시점들에 재배치하면서 도시한 예시적인 도면.
도 5a는 시간에 따라 기록된 패킷 지연들을, 지터 버퍼를 다양한 시점들에 재배치하면서 상세하게 도시한 예시적인 도면.
도 5b는 시간에 따라 기록된 플레이아웃 지연들을, 지터 버퍼를 다양한 시점들에 재배치하면서 상세하게 도시한 예시적인 도면.
도 6은 패킷과 연관된 플레이아웃 지연 di와 평균 플레이아웃 지연 Di 간의 관계의 예시적인 도면.
도 7은 시간에 따라 기록된 플레이아웃 지연들 및 시간에 따라 기록된 평균 플레이아웃 지연을 나타내는 곡선의 예시적인 도면.
도 8은 네트워크를 통해 송신된 신호들에 대한 지터의 영향들을 보상하기 위한 예시적인 방법을 흐름도.
도 9는 평균 플레이아웃 지연을 조절하기 위한 예시적인 방법의 흐름도.
도 10은 샘플 버퍼로부터의 프레임들의 전달을 조절하기 위한 예시적인 방법의 흐름도.
본 발명의 상기의 양태들 및 많은 부수적인 장점들은, 첨부도면들과 함께 고려될 때, 이하의 상세한 설명을 참조하여 더 잘 이해되는 것과 같이, 용이하게 이해될 것이다.
IP 네트워크와 같은 네트워크를 통하여 송신되며 오디오 신호를 기술하는 데이터와 같은 데이터를 포함하는 패킷들은 종종, 각각의 패킷이 수신됨에 따라, 데이터 디코더, 즉 디코더에 의해 디코딩된다. 통상적으로 패킷들의 디코딩은 패킷들에 포함된 압축 데이터를 압축해제하는 것을 포함한다. 도 1은 패킷(102)을 수신하고, 패킷 내의 데이터를 디코딩하며, 디코딩된 데이터를 프레임(104)으로서 전달하는 예시적인 디코더(100)를 예시하는 블럭도이다. 도 1에 도시된 디코더(100) 는 동기하여 패킷(102)을 수신하고 프레임(104)을 전달한다. 일반적으로, 각각의 패킷이 디코더(100)에 도달함에 따라, 각각의 패킷 내의 데이터가 즉시 디코딩되고 디코딩된 데이터를 포함하는 하나 이상의 프레임들이 전달된다. 프레임들은 디코더(100)가 패킷들을 수신하고 디코딩하는 것과 동일한 속도로 전달된다.
네트워크를 통해 송신된 패킷들은 종종 지터, 즉 패킷 전달 지연 변동에 의해 영향을 받는다. 도 1에 도시된 디코더(100)와 같은 동기 디코더들(synchronous decoders)에 대한 지터의 영향을 제거하기 위한 방법들은 종종 지터 원인들(jitter source)이 원격 장치들에 있더라도 지터 원인들이 측정될 것을 요구한다. 예를 들어, 패킷이 로컬 장치와 원격 장치 간에 이동하는 거리에 의해 발생된 송신 지연(transmission delay)이 측정되고, 정량화되며 기록될 필요가 있을 수 있다. 유사하게, 동기 디코더들에 지터 보상(jitter compensation)을 적용하기 위하여, 패킷이 통과하여 이동하는 네트워크 라우터들 및 스위치들의 성능 변동 및 원격 및 로컬 장치들의 클럭 드리프트(clock drift)가 측정되고, 정량화되며 기록될 필요가 있을 수 있다.
도 2에 도시된 풀-모델(pull-model) 디코더(200)와 같은 비동기 디코더들은 도 1에 도시된 동기 디코더(100)와 같은 동기 디코더들에 대한 대안이다. 풀-모델 디코더는 특히 특정 소스로부터의 데이터를 요구하는 비동기 디코더이다. 풀-모델 디코더(200)는 패킷(202)을 수신하고, 패킷(202) 내의 데이터를 디코딩하며, 디코딩된 데이터를 포함하는 프레임(204)을 전달한다. 동기 디코더와 달리, 풀-모델 디코더(200)와 같은 비동기 디코더는 비동기적으로 패킷(202)을 수신하고 프레 임(204)을 전달한다. 풀-모델 디코더(200)는 패킷들을 수신하고 프레임들을 전달하는 것을 동시에 할 수 있지만, 패킷들이 도달하는 속도와 프레임들이 전달되는 속도는 반드시 동일한 것은 아니다. 패킷들이 풀-모델 디코더(200)에 도달하는 속도는 프레임들이 전달되는 속도를 즉시 변경시키지 않고 변화할 수 있다. 패킷 입력 속도와 프레임 출력 속도의 분리(decoupling)는, 예를 들어, 오디오 프레임들을 필요로 하는 오디오 애플리케이션에 의해 프레임들이 요구될 때 프레임들을 전달하는 것에 의해 달성된다.
도 2에 도시된 풀-모델 디코더(200)와 같은 풀-모델 디코더는 요구시 프레임들을 전달하기 위하여 샘플 버퍼 및 지터 버퍼를 이용한다. 도 3은 예시적인 지터 버퍼(300) 및 연관된 예시적인 샘플 버퍼(312)를 도시한다. 예시적인 지터 버퍼(300)와 같은 지터 버퍼는 복수의 저장 셀들을 포함하는 데이터 버퍼이다. 복수의 셀들 내의 각각의 셀은 하나의 디코딩되지 않은 프레임을 포함할 수 있다. 통상적으로, 어떤 주어진 시간에, 모든 셀들이 프레임들을 포함하는 것은 아니다. 예를 들어, 셀 0(304), 셀 1(306), 셀 2(308) 및 셀 3(310)은 각각 하나의 프레임을 포함하고 나머지 셀들은 프레임들을 포함하지 않을 수 있다. 지터 버퍼 내의 디코딩되지 않은 프레임들은 재생 순서(playback order)로, 즉 프레임 데이터가 재생되어야 하는 순서로 배열된다. 즉, 셀 0(304)이 셀 1(306) 이전에 재생되고, 셀 1(306)이 셀 2(308) 이전에 재생되며, 셀 2(308)가 셀 3(310) 이전에 재생된다. 지터 버퍼(300)는 판독되고 제거될 셀을 가리키는 포인터(302)를 포함한다. 지터 버퍼(300) 내의 셀 0(304)과 같은 지터 버퍼의 첫 번째 셀은 "지터 헤드"로 호칭한 다. 도 3-7에서, 지터 버퍼의 지터 헤드는 빗금(crosshatching)으로 표시된다. 지터 버퍼(300)와 연관된 예시적인 샘플 버퍼(312)가 또한 도 3에 도시된다. 샘플 버퍼(312)는 지터 버퍼(300)로부터 프레임들을 판독, 디코딩, 및 제거함으로써 생성되는 디코딩된 프레임 데이터(314)를 포함한다.
도 2에 도시된 예시적인 풀-모델 디코더(200)와 같은 풀-모델 디코더는 요구시, 패킷(202)이 수신됨에 따라 패킷(202)으로부터 디코딩되지 않은 프레임들을 추출하고, 디코딩되지 않은 프레임들을 재생 순서로 지터 버퍼(300) 내에 로딩하며, 하나 이상의 프레임들이 요구되는 경우, 샘플 버퍼(312)로부터의 프레임들(314)을 전달하는 것에 의해 프레임들을 전달한다. 프레임들(314)이 전달됨에 따라, 프레임들(314)은 샘플 버퍼(312)로부터 제거된다. 샘플 버퍼(312)에 프레임들이 없다면, 풀-모델 디코더(200)는 지터 버퍼(300)로부터 "다음" 디코딩되지 않은 프레임을 판독 및 제거하고, 프레임을 디코딩하며, 디코딩된 프레임을 샘플 버퍼(312) 내에 로드한다. 그 후, 포인터(302)는 다음 판독될 셀로 이동된다. 바람직하게는, 포인터(302)는 지터 헤드(304)의 하나 또는 두 개의 셀들 내에 유지된다. 각각의 인커밍 패킷(incoming packet)은 패킷의 시퀀스 번호에 대응하는 지터 버퍼 내의 셀에 배치된다. 지터의 양이 많다면, 패킷을 삽입하는 포인터는 첫 번째 셀과 두 번째 셀 사이에서 전후로 이동한다. 따라서, 짧은 기간에 걸친 최소 셀 배치는 지터 버퍼의 헤드로부터 대략 한 개의 셀보다 더 가깝지 않아야 한다.(minimum cell placement over a short period of time should rarely come closer than about one cell from the head of the jitter buffer) 지터가 거의 또는 전혀 없고 패킷들이 패킷들의 시퀀스 번호 순으로 도달하면, 계속되는 패킷들은 지터 버퍼의 초기 부분부터(예를 들어, 지터 헤드의 한 프레임 내에서) 배치되고 소모된다. 예를 들어, 전형적인 지터 버퍼는 약 1 내지 5 초의 프레임 데이터를 포함하며 전형적인 프레임은 약 20 밀리초의 데이터를 포함한다. 지터 버퍼(300) 내의 디코딩되지 않은 프레임들이 제거됨에 따라, 나머지 디코딩되지 않은 프레임들은 다음 이용 가능한 셀로 이동함으로써 지터 헤드(304)로 향하여 이동된다.
샘플 버퍼(312) 내의 복수의 디코딩된 프레임들은 재생 가능한 프레임들(314)의 끊임없는(contiguous) 샘플을 형성한다. 재생 가능한 샘플들(314)이 프레임 버퍼(312)로부터 추출되고 재생됨에 따라, 샘플 버퍼(312)에 재생 가능한 샘플들이 더 삽입될 필요가 있다. 샘플 버퍼(312)에 대하여 새로운 샘플들이 요구됨에 따라, 디코딩되지 않은 프레임들이 지터 버퍼(300)의 헤드로부터 추출되고 프레임들은 샘플들로 디코딩되며 샘플 버퍼(312) 내로 삽입된다.
지터로 인해 패킷들의 도달의 지연이 변화할 수 있기 때문에, 프레임들이 지터 버퍼 내로 삽입되는 속도는 프레임들이 샘플 버퍼(312)로부터 요구되는 속도와 비교하여 차이가 있다. 여기에 기술된 방법은 히스토리 윈도우(history window)로서 지터 버퍼(300)를 이용함으로써 이러한 불일치(disparity)를 보상한다. 예를 들어, 지터 버퍼(300)가 샘플 버퍼 내에 1초의 오디오 데이터를 제공할 만큼 충분한 디코딩되지 않은 프레임들을 저장할 수 있다면, 1초 지터 버퍼(one second jitter buffer)는 1초 히스토리 윈도우로 간주될 수 있다. 이하의 설명으로부터 잘 이해되는 바와 같이, 상기 방법은, 이 예에서는, 지터 버퍼가 패킷들이 전달되 고 있는 1초의 히스토리를 "커버"하는 것을 확실히 하도록 1초 지터 버퍼를 정렬시킴으로써 패킷 지연과 샘플 요구 속도 간의 변동을 보상한다. 예를 들어, 1초 히스토리 윈도우는 50개의 셀들을 포함할 수 있으며, 각각의 셀은 20밀리초의 디코딩되지 않은 프레임 데이터를 포함할 수 있다. 바람직하게는, 디코딩되지 않은 프레임들 내의 데이터가 재생될 필요가 있는 시점들이 지터 버퍼에 의해 커버되는 시간 길이(time span) 내에 있도록, 1초 지터 버퍼는 시간 차원에서 정렬된다.
패킷들이 전달되는 시간 길이를 커버하도록 지터 버퍼를 정렬시키는 프로세스는 도 4에 도시된 시간에 따라 기록된 패킷 지연들의 예시적인 도표에 의해 예시된다. 더욱 구체적으로 도 4는 시간에 따라 기록된 패킷 지연들을 나타내는 패킷 지연 곡선(400)을 포함한다. 예시적인 네 위치들(402a, 402b, 402c, 및 402d)에 지터 버퍼가 도시된다. 예시적인 네 위치들(402a, 402b, 402c, 및 402d)에 있는 지터 버퍼의 지터 헤드의 위치가 패킷 지연 곡선(400)의 4개의 셀들 내에 있도록, 지터 버퍼가 패킷 지연 곡선에 정렬된다. 예를 들어, 위치(402b)의 지터 버퍼는 패킷 지연 곡선(400)이 하강하였기 때문에 위치(402a)에 있는 지터 버퍼보다 아래에 있다. 위치(402c)의 지터 버퍼는 패킷 지연 곡선(400)이 상승하였기 때문에 위치(402b)의 지터 버퍼보다 위에 있다. 위치(402d)의 지터 버퍼는 패킷 지연 곡선이 다시 하강하였기 때문에 위치(402c)의 지터 버퍼보다 아래에 있다. 실제 패킷 지연들은 예시된 패킷 지연 곡선(400)이 나타내는 것보다 더 많거나 더 적게 달라질 수 있다. 따라서, 패킷 지연 곡선(400)은 제한적인 것이 아닌 예시적인 것으로 해석되어야 한다.
지터 버퍼를 패킷 지연 곡선에 정렬시키기 위해 어떻게 지터 버퍼를 조절할 것인지를 결정하기 위해, 플레이아웃 지연(playout delay)이 산출된다. 패킷 지연은 디코더에 도달하는 패킷의 지연을 측정하는 한편, 플레이아웃 지연은 디코딩된 프레임들이 플레이아웃되는 데에 걸리는 시간을 추정한다. 실제로, 플레이아웃 지연 값은 거의 연관된 패킷 지연의 역수 값(inverse value)이 될 수 있다. 패킷 지연과 플레이아웃 지연 간의 거의 역수의 관계는 도 5a와 도 5b를 비교함으로써 알 수 있다. 도 5a는 도 4에 도시된 패킷 지연 곡선(400)에 유사한 패킷 지연 곡선의 전형적인 섹션의 더욱 상세한 도면이다. 도 5b는 도 5a에 도시된 패킷 지연 곡선과 연관된 플레이아웃 지연 곡선의 상세한 도면이다.
도 5a에서 패킷 지연 곡선(500)은 짧은 히스토리 윈도우 동안의 패킷 지연들을 나타낸다. 도시된 패킷 지연 곡선(500)은 국부 최대값들(local maxima, 504, 508) 및 국부 최소값들(local minima, 502, 506, 및 510)을 정의한다. 국부 최대값(504)은 국부 최소값들(502 및 506) 사이에 있고, 국부 최대값(508)은 국부 최소값들(506 및 510) 사이에 있다. 세 개의 위치들(520a, 520b, 및 520c)에 지터 버퍼가 도시된다. 위치(520a)는 국부 최소값(502)과 국부 최대값(504) 사이에 있고, 위치(520b)는 국부 최대값(504)과 국부 최소값(506) 사이에 있으며, 위치(520c)는 국부 최소값(506)과 국부 최대값(508) 사이에 있다. 지터 버퍼의 헤드가 플레이아웃 지연 곡선(500)의 하나의 셀 내에 있도록 지터 버퍼가 위치된다.
플레이아웃 지연은 패킷 지연의 거의 역수이므로, 플레이아웃 지연을 나타내는 곡선은 패킷 지연을 나타내는 곡선의 거의 역(inverse)이다. 따라서, 도 5b에 도시된 예시적인 플레이아웃 지연 곡선(550)은 도 5a에 도시된 패킷 지연 곡선(500)의 거의 역이다. 플레이아웃 지연은 패킷 지연의 거의 역수이므로, 패킷 지연 곡선에서의 최대값들은 연관된 플레이아웃 지연 곡선에서의 최소값들이 되고 패킷 지연 곡선에서의 최소값들은 연관된 플레이아웃 지연 곡선에서의 최대값들이 된다. 예를 들어, 도 5a에 도시된 국부 최소값(502)은 도 5b에 도시된 플레이아웃 지연에 도시된 국부 최대값(552)이 된다. 유사하게, 국부 최대값(504)은 국부 최소값(554)이 되고, 국부 최소값(506)은 국부 최대값(556)이 되고, 국부 최대값(508)은 국부 최소값(558)이 되며, 국부 최소값(510)은 국부 최대값(560)이 된다.
플레이아웃 지연 곡선은 패킷 지연 곡선의 거의 역이므로, 지터 헤드가 지터 버퍼의 가장 아래쪽에 있도록 지터 버퍼가 반전된다. 예를 들어, 도 5a에서, 지터 헤드는 지터 버퍼의 가장 위쪽에 있는 반면, 도 5b에서 지터 헤드는 지터 버퍼의 가장 아래쪽에 있다. 위치들(570a, 570b, 및 570c)에 지터 버퍼가 도시된다. 도 5a에 도시된 패킷 지연 곡선(500)에 걸쳐 정렬된 지터 버퍼와 유사하게, 지터 버퍼는 도 5b에 도시된 플레이아웃 지연 곡선(550)에 걸쳐 정렬된다.
상기에 언급된 바와 같이, 세 개의 위치들(570a, 570b, 및 570c)에 지터 버퍼가 도시된다. 세 개의 위치들은 도 5a의 위치들(520a, 520b, 및 520c)에 각각 정렬된다. 위치(570a)에서 지터 버퍼는 지터 버퍼의 헤드의 한 개의 셀 내에서 국부 최대값(552)과 국부 최소값(554) 사이의 플레이아웃 지연 곡선(550)의 섹션을 오버레이한다. 위치(570b)에서 지터 버퍼는 지터 버퍼의 헤드의 한 개의 셀 내에 서 국부 최소값(554)과 국부 최대값(556) 사이의 플레이아웃 지연 곡선(550)의 섹션을 오버레이한다. 위치(570c)에서 지터 버퍼는 지터 버퍼의 헤드의 한 개의 셀 내에서 국부 최대값(556)과 국소 최소값(558) 사이의 플레이아웃 지연 곡선(550)의 섹션을 오버레이한다.
지터 헤드가 지터 버퍼의 헤드의 한 개의 셀 내에서 플레이아웃 지연 곡선을 오버레이하거나 거의 오버레이하도록 지터 버퍼의 위치를 조절하는 것은 평균 플레이아웃 지연을 조절하는 것을 포함한다. 도 6은 패킷과 연관된 플레이아웃 지연 di, 평균 플레이아웃 지연 Di, 지터 버퍼(600), 및 지터 버퍼의 헤드(602) 사이의 관계들을 그림으로 나타낸다. 바람직하게는 , 지터 버퍼(600)의 헤드(602)는 평균 플레이아웃 지연 곡선(610)과 플레이아웃 지연 곡선(620) 모두를 오버레이한다. 지터 헤드(602)와 평균 플레이아웃 지연 곡선(610) 사이의 거리는 Di로 나타낸 거리에 의해 주어진다. 샘플 지연을 포함하는 플레이아웃 지연 곡선(620)과 지터 헤드(602) 사이의 거리는 di로 나타낸 거리에 의해 주어진다.
지터 헤드(602)가 플레이아웃 지연 곡선(620)을 오버레이하거나 거의 오버레이하도록 지터 버퍼(600)의 위치를 조절하는 방법은, 지터 제어를 위한 최소 지연값 Dmin(보통은 0임)을 설정하고, 지터 제어를 위한 최대 지연값 Dmax(보통은 0임)을 설정함으로써 시작한다. 지터 버퍼(600) 내에서 패킷이 이용 가능하면, 패킷은 디코딩되고 지터 버퍼(600)는 다음 패킷을 지터 헤드 내로 이동시키도록 시프트된다. 디코딩된 패킷은 샘플 버퍼(예를 들면, 샘플 버퍼(312)) 내의 마지막 샘플에 부가 되는 새로운 샘플들을 생성한다. 지터 버퍼(600) 내에서 패킷이 이용 가능하지 않다면, 분실 패킷(missing packet)은 합성된 샘플들(synthesized samples)을 이용하여 신호를 압축 또는 신장함으로써 숨겨지며 신호를 압축 또는 신장하기 위하여 이용된 합성된 샘플들은 샘플 버퍼(312) 내의 마지막 샘플에 부가된다.
상기 방법의 개시시에 설정된 Dmax 및 Dmin의 값들은 신호를 압축할지 또는 신장할지를 결정하는 데 이용된다. Di가 Dmax보다 더 크다면, 신호는 압축되며 Di는 동일한 대응 시간 감소만큼 감소된다. Di가 Dmin보다 작으면, 신호는 신장되며 Di는 동일한 대응 시간 증가만큼 증가된다. Di가 Dmax보다 크지 않고 Di가 Dmin보다 작지 않으면, 신호는 변경되지 않고 Di의 값은 변경된다. 이 때, 샘플 버퍼(312)로부터의 요구된 수의 샘플들이 리턴된다.
당업자는 신호가 어떻게 압축 또는 신장되는지는 신호가 "유성음(voiced)"인지 또는 "무성음(unvoiced)"인지에 의존한다는 것을 이해할 것이다. 유성음 신호는 유용한 정보를 포함하는 한편 무성음 신호는 침묵, 배경 잡음, 또는 "sh" 혹은 "ss"와 같은 소리들을 포함한다. 신호가 무성음이라면, 신호는 잡음 기반(noise-based) 방법들을 이용하여 신장될 수 있다. 그러한 신장 방법들에서는, 샘플이 프레임 길이의 1.5배 만큼 신장될 수 있다. 프레임 길이의 1.5배보다 더 많거나 더 적게 샘플을 신장하는 것도 가능하다. 따라서, 프레임 길이의 1.5배 만큼 샘플을 신장하는 것은 제한이 아닌 예시적인 것으로서 해석되어야 한다. 예를 들어, 프레 임 길이가 20 밀리초이면, 프레임의 길이가 30 밀리초가 될 때까지 잡음 샘플들을 삽입하여 프레임이 신장될 수 있다. 신호가 유성음이면, 피치 사이클들(pitch cycles)을 반복하거나 이전 피치 사이클들로부터 새로운 피치 사이클들을 생성함으로써 신호가 신장될 수 있다. 유성음 신호의 경우, 프레임의 신장된 길이는 피치 사이클들의 크기에 의존한다. 예를 들어, 피치 사이클이 5 밀리초에 이르는 경우, 프레임의 길이는 5 밀리초 증분으로(in five milisecond increments) 신장될 수 있다. 따라서, 유성음 신호들을 신장하기 위한 기술들은 신호 의존적이다. 당업자들은 무성음 신호를 압축하기 위하여 윈도잉(windowing)이나 샘플 제거를 이용하여 샘플들이 절단 및 병합되는 것을 이해할 것이다. 통상적으로, 신호의 프레임을 원하는 길이, 예를 들어 프레임 길이의 절반으로 압축하는 것이 가능하다. 유성음 신호를 압축하기 위하여, 피치 사이클들이 제거되거나 병합된다. 따라서, 프레임의 압축된 길이는 피치 사이클들의 크기 및 유성음 신호들을 신장하기 위한 기술들이 얼마나 신호 의존적인지에 따른다.
상기에 언급된 바와 같이, 신호가 압축되면, Di의 값은 동일한 대응 시간 감소만큼 감소되고; 신호가 신장되면, Di의 값은 동일한 대응 시간 증가만큼 증가된다. Di의 값은 신호 압축 및 신장에 따라 신호 길이를 이용하여 조절될 수 있다. 신호가 길이 Norig을 가지고, 신호 길이가 Nnew가 되면, Di
Figure 112009015467488-pct00001
Figure 112009015467488-pct00002
와 같이 수정되며, 이 경우 S는 샘플링 속도(예를 들면, 초당 16000 샘플들)이며 결과는 초단위이다. 당업자들은 종종 평균 플레이아웃 지연 곡선(610)과 같은 평균 플레이아웃 지연 곡선을 "엔벨로프(envelope)"로 호칭한다. 다음 번에 패킷이 수신될 때, 엔벨로프는 Di ( old )가 아닌 Di(new)에 기초하여 업데이트된다. 즉, Di ( new )는 Di ( old )를 오버라이트(overwrite)하는 데에 즉시 이용될 수 있다.
바람직하게는, 평균 플레이아웃 지연 Di가 감소되거나 증가되는 양은 이용된 전송 프로토콜의 유형에 따라 결정된다. 예를 들어, TCP(transmission control protocol)는 UDP(user datagram protocol)보다 더 신속한 적응(adaptation)과 따라서 더 큰 조절 양들(adjustment amounts)을 요구한다. UDP의 경우, di가 Di보다 작다면,
Figure 112009015467488-pct00003
이고; di가 Di보다 작지 않다면,
Figure 112009015467488-pct00004
이다. TCP의 경우, di가 Di보다 작다면,
Figure 112009015467488-pct00005
이고; di가 Di보다 작지 않다면,
Figure 112009015467488-pct00006
Figure 112009015467488-pct00007
이다.
상기 설명된 기술들을 이용하여 플레이아웃 지연 곡선을 지터 헤드가 오버레이하도록 하기 위한 지터 버퍼의 위치 조절을 예시하는 도면이 도 7에 도시된다. 도 7의 도면은 예시적인 플레이아웃 지연 곡선(700), 예시적인 평균 플레이아웃 지연 곡선(710), 즉 엔벨로프(710), 및 5개의 위치들에 도시된 지터 버퍼(720)를 포 함한다. 플레이아웃 지연 곡선(700)은 실선이다. 엔벨로프(710)는 점선이다. 엔벨로프(710)는 플레이아웃 지연 곡선(700)보다 시간상 훨씬 더 서서히 변화하는 것을 주목한다. 바람직하게는, 가능한 많이, 지터 헤드가 엔벨로프(710)에 가깝도록 지터 헤드가 조절된다. 예를 들어, 위치들(720a, 720b, 720c, 720d, 및 720e)에 지터 버퍼(720)가 도시된다. 위치(720a, 720c, 720d, 및 720e)에서, 지터 헤드가 엔벨로프(710)에 매우 가깝고 지터 버퍼의 두 번째 셀이 엔벨로프(710)를 오버레이하도록 지터 버퍼가 조절된다. 위치(720b)에서 지터 버퍼가 엔벨로프(710)보다 위에 있고 지터 헤드가 엔벨로프(710)보다 위에 있다. 시간에 따라, 지터 버퍼 및 지터 헤드는 아래로 내려오고 엔벨로프(710)와 정렬된다.
네트워크를 통해 송신된 신호들에 대한 지터의 영향을 보상하기 위하여 지터 헤드가 엔벨로프와 정렬되도록 지터 헤드 및 지터 버퍼를 조절하기 위한 예시적인 방법이 도 8의 흐름도에 의해 예시된다. 대부분의 장치들의 경우, 상기 예시적인 방법 적용시, 샘플들이 일정한 속도로 전달되는 것이 바람직한 것을 주목한다. 따라서, 샘플들이 일정한 속도로 샘플 버퍼로부터 풀링되는 것이 바람직하다. 패킷 지연의 양의 변화를 수용하고 여전히 일정한 샘플 전달 속도를 유지하기 위해, 샘플 버퍼 내의 샘플들이 압축되어 샘플 버퍼 내에 더 적은 수의 샘플들이 있는 것을 확실하게 하거나; 샘플 버퍼 내의 샘플들이 신장되어 샘플 버퍼 내에 더 많은 수의 샘플들이 있는 것을 확실하게 한다. 샘플 버퍼 내의 샘플들의 수를 변화시키는 것은 지터 버퍼가 얼마나 신속하게 시프트되는지를 간접 제어한다. 샘플 버퍼 내에 샘플들이 더 많다면, 지터 버퍼를 시프트시킬 필요성이 줄어들며, 이로써 더 긴 패 킷 지연들을 수용한다. 샘플 버퍼 내의 샘플들의 수가 적어지면, 지터 버퍼를 시프트할 필요성이 늘어나게 되며, 이로써 더 짧은 패킷 지연들을 수용한다.
도 8에 도시된 예시적인 방법은 블럭(800)에서 시작한다. 블럭(800)에서, 패킷이 수신되는 경우, 평균 플레이아웃 지연은 도 9에 도시된 바와 같이 수신된 패킷의 플레이아웃 지연을 이용하여 조절된다. 블럭(802)에서 샘플들이 샘플 버퍼로부터 풀링되며, 샘플 전달은 도 10에 도시된 바와 같이 평균 플레이아웃 지연을 이용하여 조절된다. 블럭(800)에서의 동작은 블럭(802)에서의 동작에 대하여 비동기적으로 발생하는 것을 주목한다. 따라서, 블럭들(800 및 802)에서의 동작들은 거의 동시에 수행될 수 있다.
도 9는 평균 플레이아웃 지연을 조절(즉, 도 8의 블럭(800)에서의 동작)하기 위한 예시적인 방법의 흐름도이다. 이 방법은 패킷이 수신되는 도 9의 블럭(900)에서 시작한다. 블럭(902)에서 수신된 패킷의 시퀀스 번호 및/또는 타임스탬프가 지터 헤드 내의 패킷에 비교된다. 타임스탬프 및/또는 시퀀스 번호는 패킷을 지터 버퍼 내의 어느 곳에 배치할 것인지를 결정하기 위하여 이용된다. 타임스탬프 또는 시퀀스 번호가 패킷 내의 프레임 또는 프레임들이 지터 헤드 패킷 내의 프레임들 앞에 배치되어야 하는 것을 나타내면, 지터 헤드 프레임이 뒤로 이동되어 패킷 내의 프레임들이 지터 헤드까지 삽입되는 것을 허용한다. 다르게는, 타임스탬프 또는 시퀀스 번호는 패킷 내의 프레임 또는 프레임들이 지터 버퍼 내의 마지막 점유된 셀 바로 뒤에 또는 다른 셀들에 배치되어야하는 것을 나타낼 수 있다. 지터 버퍼 내에 일시적인 "홀들(holes)"이 있을 수 있다(즉, 어떤 지터 버퍼 셀들은 점 유되는 한편 다른 셀들은 일시적으로 점유되지 않은 상태에 있을 수 있음).
실제로, 지터 헤드 프레임을 뒤로 이동시켜 패킷 내의 프레임들이 지터 헤드까지 삽입되도록 허용할 필요성은, 이용중인 전송 프로토콜이 TCP이고 큰 버스트들에서(in large bursts) 패킷들이 지연되는 경우 발생하는 것이 보통이다. 다른 전송 프로토콜(예를 들어, UDP)의 경우, 이러한 늦은 패킷들(late packets)은 드롭되어 지터 헤드 프레임이 한 개 셀 뒤로 시프트되거나 전혀 시프트되지 않도록 할 수 있다.
도 9의 블럭(904)에서 계속되어, 프레임들, 즉 디코딩되지 않은 프레임들이 지터 버퍼 내에 배치된다. 블럭(906)에서, 플레이아웃 지연 di가 산출된다. 블럭(908)에서, 플레이아웃 지연 di 와 평균 플레이아웃 지연 Di 사이의 비교가 이루어진다. di가 Di보다 작다면, 즉 플레이아웃 지연이 평균 플레이아웃 지연보다 작다면, 제어 흐름은 블럭(910)으로 이동한다. 그렇지 않다면, 제어 흐름은 블럭(912)으로 이동한다. 블럭(910)에서, Di는 상기에서 설명된 기술들을 이용하여 서서히 di에 적응된다. 블럭(912)에서, Di는 상기에서 설명된 기술들을 이용하여 신속하게 di에 적응된다. 블럭들(910 및 912) 이후, 방법은 종료한다.
도 10은 샘플들을 풀링하고 산출된 평균 플레이아웃 지연을 이용하여 샘플 전달 속도를 조절(즉, 도 8의 블럭(802)에 도시된 동작)하기 위한 예시적인 방법의 흐름도이다. 이 방법은 샘플-풀링이 요구되는, 즉 샘플 버퍼(312)와 같은 샘플 버 퍼로부터의 샘플들이 요구되는 도 10의 블럭(1000)에서 시작한다. 블럭(1002)에서 충분한 샘플들이 샘플 버퍼 내에 있는지 결정하기 위한 테스트가 이루어진다. 샘플 버퍼 내에 충분한 샘플들이 있다면, 제어 흐름은 샘플들이 전달되는 블럭(1018)으로 이동한다. 샘플 버퍼 내에 충분한 샘플들이 없다면, 제어 흐름은 결정 블럭(1004)으로 이동한다. 결정 블럭(1004)에서, 지터 버퍼 내의 첫 번째 패킷, 즉 지터 헤드 내의 패킷이 수신되었는지를 결정하기 위한 테스트가 이루어진다. 지터 버퍼 내의 첫 번째 패킷이 수신되면, 제어 흐름은 패킷이 디코딩되는 블럭(1006)으로 이동하며 패킷의 디코딩된 프레임들은 샘플 버퍼 내에 배치된다. 첫 번째 패킷이 수신되지 않았다면, 제어 흐름은 블럭(1008)으로 이동한다. 블럭(1008)에서, 첫 번째 패킷이 이용 가능하지 않기 때문에 분실된 프레임들은 합성된 샘플들을 이용하여 숨겨진다. 이 방법은 디코딩되거나 합성된 샘플들이 샘플 버퍼 내에 배치되는 블럭(1010)에서 계속된다. 결정 블럭(1012)에서, Di는 평균 플레이아웃 지연에 대하여 원하는 범위에 비교된다. Di가 원하는 범위 내에 있다면, 제어 흐름은 샘플들이 전달되는 블럭(1018)으로 이동한다. Di가 낮다면, 즉 원하는 범위의 최소값보다 낮다면, 제어 흐름은 블럭(1014)으로 이동한다. Di가 높다면, 즉 원하는 범위의 최대값보다 높다면, 제어 흐름은 블럭(1016)으로 이동한다. 블럭(1014)에서, 신호는 상기에 설명된 기술들을 이용하여 신장된다. 블럭(1016)에서, 신호는 상기에 설명된 기술들을 이용하여 압축된다. 블럭(1018)에서, 샘플들이 전달되고 방법은 종료한다.
예시적인 실시예들이 예시되고 설명되었지만, 본 발명의 취지 및 범위를 벗어나지 않고 다양한 변화들이 이루어질 수 있음을 이해할 것이다.

Claims (20)

  1. 패킷 스트림 내의 지터 보상 방법으로서,
    상기 패킷 스트림 내의 각 패킷을 수신하는 것에 응답하여 제1 방법을 수행하는 단계와,
    제2 방법을 수행하는 단계
    를 포함하되,
    상기 제1 방법은
    상기 패킷 스트림 내의 소정 패킷을 수신하는 단계와,
    상기 소정 패킷 내의 프레임을 지터 버퍼에 추가하는 단계와,
    컴퓨팅 장치에 의해, 상기 소정 패킷의 플레이아웃 지연(playout delay)을 계산하는 단계 - 상기 소정 패킷의 상기 플레이아웃 지연은 상기 소정 패킷 내의 상기 프레임이 플레이아웃되기 전에 상기 지터 버퍼 및 샘플 버퍼 내에 남아 있을 것으로 예측되는 총 시간이고, 상기 컴퓨팅 장치는 상기 프레임이 상기 지터 버퍼로부터 제거되기 전에 상기 소정 패킷의 상기 플레이아웃 지연을 계산함 - 와,
    상기 컴퓨팅 장치에 의해, 평균 플레이아웃 지연을 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭하도록 조절하는 단계 - 상기 평균 플레이아웃 지연은 상기 패킷 스트림 내의 각각의 패킷에 대한 상기 플레이아웃 지연의 이동 평균(running average)임 -
    를 포함하고,
    상기 제2 방법은
    상기 샘플 버퍼 내에 충분한 샘플이 없음을 판정한 후, 상기 지터 버퍼 내의 첫 번째 패킷을 디코딩하는 단계와,
    상기 첫 번째 패킷을 디코딩하는 단계 이후, 상기 첫 번째 패킷의 디코딩된 프레임을 상기 샘플 버퍼 내로 배치하는 단계와,
    상기 샘플 버퍼 내의 상기 샘플에 의해 표현되는 신호의 길이를, 상기 조절된 평균 플레이아웃 지연에 기초하여 조절하는 단계
    를 포함하는
    패킷 스트림 내의 지터 보상 방법.
  2. 제1항에 있어서,
    상기 지터 버퍼는 지터 헤드를 갖는
    패킷 스트림 내의 지터 보상 방법.
  3. 제2항에 있어서,
    상기 제1 방법을 수행하는 단계는 상기 소정 패킷과 연관된 시퀀스 지시자를 상기 지터 헤드 내의 패킷과 연관된 시퀀스 지시자와 비교하는 단계를 더 포함하고, 상기 소정 패킷 내의 상기 프레임을 상기 지터 버퍼에 추가하는 단계는 상기 시퀀스 지시자의 비교에 기초하여 상기 지터 버퍼 내로 상기 소정 패킷 내의 상기 프레임을 배치하는 단계를 포함하며,
    상기 평균 플레이아웃 지연을 조절하는 단계는
    상기 플레이아웃 지연이 상기 평균 플레이아웃 지연보다 작은 경우에는 상기 평균 플레이아웃 지연을 제1 양(a first amount)에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계와,
    그렇지 않은 경우에는 상기 평균 플레이아웃 지연을 제2 양(a second amount) - 상기 제1 양은 상기 제2 양보다 큼 - 에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계
    를 포함하는
    패킷 스트림 내의 지터 보상 방법.
  4. 제3항에 있어서,
    상기 시퀀스 지시자는 타임스탬프인
    패킷 스트림 내의 지터 보상 방법.
  5. 제3항에 있어서,
    상기 시퀀스 지시자는 시퀀스 번호인
    패킷 스트림 내의 지터 보상 방법.
  6. 제3항에 있어서,
    상기 평균 플레이아웃 지연을 상기 제2 양에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계는 수학식
    Figure 112013107254894-pct00008
    Figure 112013107254894-pct00009
    에 기초하며, Di는 상기 소정 패킷 수신시 상기 지터 헤드와 상기 평균 플레이아웃 지연 간의 거리를 나타내고 di는 상기 소정 패킷의 플레이아웃 지연을 나타내는
    패킷 스트림 내의 지터 보상 방법.
  7. 제3항에 있어서,
    상기 평균 플레이아웃 지연을 상기 제1 양에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계는 수학식
    Figure 112013107254894-pct00010
    에 기초하며, Di는 상기 소정 패킷 수신시 상기 지터 헤드와 상기 평균 플레이아웃 지연 간의 거리를 나타내고 di는 상기 소정 패킷에 연관된 플레이아웃 지연을 나타내는
    패킷 스트림 내의 지터 보상 방법.
  8. 제3항에 있어서,
    상기 평균 플레이아웃 지연을 상기 제2 양에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계는 수학식
    Figure 112013107254894-pct00011
    Figure 112013107254894-pct00012
    에 기초하며, Di는 상기 소정 패킷 수신시 상기 지터 헤드와 상기 평균 플레이아웃 지연 간의 거리를 나타내고 di는 상기 소정 패킷의 플레이아웃 지연을 나타내는
    패킷 스트림 내의 지터 보상 방법.
  9. 제3항에 있어서,
    상기 평균 플레이아웃 지연을 상기 제1 양에 의해 상기 소정 패킷의 상기 플레이아웃 지연에 더 가깝게 매칭되도록 조절하는 단계는 수학식
    Figure 112013107254894-pct00013
    에 기초하며, Di(new)는 상기 소정 패킷 수신시 상기 지터 헤드와 상기 평균 플레이아웃 지연 간의 거리를 나타내고 di는 상기 소정 패킷의 플레이아웃 지연을 나타내는
    패킷 스트림 내의 지터 보상 방법.
  10. 제1항에 있어서,
    샘플 풀링 요구(samples-pull request)에 응답하기 위해 상기 샘플 버퍼 내에 충분한 샘플이 있는지 판정하는 단계와,
    상기 샘플 풀링 요구에 응답하기 위해 상기 샘플 버퍼 내에 충분한 샘플이 있지 않은 경우, 상기 샘플 버퍼에 대한 추가적인 샘플을 생성하는 단계
    를 포함하는 패킷 스트림 내의 지터 보상 방법.
  11. 제10항에 있어서,
    상기 샘플 버퍼에 대한 추가적인 샘플을 생성하는 단계는
    상기 지터 버퍼의 지터 헤드에서의 패킷이 수신되었는지 판정하는 단계와,
    상기 지터 헤드에서의 상기 패킷이 수신된 경우에는 상기 지터 헤드에서의 상기 패킷을 디코딩하는 단계와,
    그렇지 않은 경우에는 상기 지터 헤드에서의 상기 패킷을 숨기는(concealing) 단계
    를 포함하는
    패킷 스트림 내의 지터 보상 방법.
  12. 제11항에 있어서,
    상기 샘플 버퍼 내의 상기 샘플에 의해 표현되는 신호의 길이를 조절하는 단계는
    상기 조절된 평균 플레이아웃 지연을 미리 선택된 원하는 범위와 비교하는 단계와,
    상기 조절된 플레이아웃 지연이 상기 원하는 범위의 최소값보다 작은 경우에는, 상기 샘플 버퍼 내의 상기 샘플에 의해 표현되는 신호를 신장하는(expanding) 단계
    를 더 포함하는
    패킷 스트림 내의 지터 보상 방법.
  13. 제12항에 있어서,
    상기 샘플 버퍼 내의 상기 샘플에 의해 표현되는 신호의 길이를 조절하는 단계는
    상기 조절된 플레이아웃 지연이 상기 원하는 범위의 최대값보다 큰 경우에는, 상기 신호를 압축하는(contracting) 단계
    를 더 포함하는
    패킷 스트림 내의 지터 보상 방법.
  14. 패킷 스트림 내의 지터 보상 방법으로서,
    전송 프로토콜을 통해 컴퓨터 네트워크로부터 상기 패킷 스트림을 수신하는 단계와,
    상기 패킷 스트림 내의 소정 패킷의 시퀀스 지시자와 지터 버퍼의 지터 헤드 내의 패킷의 시퀀스 지시자를 비교하는 단계와,
    상기 소정 패킷의 시퀀스 지시자와 상기 지터 버퍼의 상기 지터 헤드에서의 패킷의 시퀀스 지시자의 비교에 기초하여 상기 소정 패킷을 상기 지터 버퍼 내로 배치하는 단계와,
    상기 소정 패킷을 수신하면 상기 소정 패킷의 플레이아웃 지연(playout delay)을 계산하는 단계 - 상기 소정 패킷의 상기 플레이아웃 지연은 상기 소정 패킷 내의 프레임이 플레이아웃되기 전에 상기 지터 버퍼 및 샘플 버퍼 내에 남아 있을 것으로 예측되는 총 시간임 - 와,
    상기 소정 패킷의 상기 플레이아웃 지연이 평균 플레이아웃 지연보다 작은지 판정하는 단계 - 상기 평균 플레이아웃 지연은 상기 패킷 스트림 내의 패킷의 플레이아웃 지연의 이동 평균(running average)임 - 와,
    상기 소정 패킷의 상기 플레이아웃 지연이 상기 평균 플레이아웃 지연보다 작다는 판정에 응답하여, 상기 평균 플레이아웃 지연을 상기 소정 패킷의 상기 플레이아웃 지연으로 제1 양(a first amount)에 의해 적응시키는 단계와,
    상기 소정 패킷의 상기 플레이아웃 지연이 상기 평균 플레이아웃 지연보다 작지 않다는 판정에 응답하여, 상기 평균 플레이아웃 지연을 상기 소정 패킷의 상기 플레이아웃 지연으로 제2 양(a second amount) - 상기 제1 양은 상기 제2 양보다 큼 - 에 의해 적응시키는 단계와,
    샘플 풀링 요구(samples-pull request)를 수신하는 단계와,
    상기 샘플 풀링 요구를 수신하는 단계에 응답하여, 상기 샘플 버퍼 내에 충분한 샘플이 있는지 판정하는 단계와,
    상기 샘플 버퍼 내에 충분한 샘플이 있다는 판정에 응답하여, 상기 샘플 버퍼 내의 상기 샘플 중 적어도 일부를 상기 평균 플레이아웃 지연에 의해 주어진 속도(rate)로 전달하는 단계와,
    상기 샘플 버퍼 내에 충분한 샘플이 없다는 판정에 응답하여, 상기 지터 헤드에서의 패킷이 수신되었는지 판정하는 단계와,
    상기 지터 헤드에서의 상기 패킷이 수신되었다는 판정에 응답하여, 상기 지터 헤드에서의 상기 패킷을 디코딩하여 디코딩된 샘플을 생성(produce)하는 단계 및 상기 디코딩된 샘플을 상기 샘플 버퍼로 추가하는 단계와,
    상기 지터 헤드에서의 상기 패킷이 아직 수신되지 않았다는 판정에 응답하여, 합성된 샘플을 생성(generate)하는 단계 및 상기 합성된 샘플을 상기 샘플 버퍼로 추가하는 단계와,
    상기 평균 플레이아웃 지연이 원하는 범위 내인지 판정하는 단계와,
    상기 적응된 평균 플레이아웃 지연이 상기 원하는 범위보다 낮다면 상기 샘플 버퍼 내의 상기 샘플에 의해 표현되는 신호를 신장(expanding)하는 단계와,
    상기 적응된 평균 플레이아웃 지연이 상기 원하는 범위보다 높다면 상기 신호를 압축(compressing)하는 단계와,
    상기 샘플 버퍼 내의 상기 샘플을 전달하는 단계
    를 포함하는 패킷 스트림 내의 지터 보상 방법.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020097005329A 2006-09-15 2007-08-28 패킷 스트림 내의 지터 보상 방법 KR101411197B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/522,268 US8483243B2 (en) 2006-09-15 2006-09-15 Network jitter smoothing with reduced delay
US11/522,268 2006-09-15
PCT/US2007/076958 WO2008033663A1 (en) 2006-09-15 2007-08-28 Network jitter smoothing with reduced delay

Publications (2)

Publication Number Publication Date
KR20090058522A KR20090058522A (ko) 2009-06-09
KR101411197B1 true KR101411197B1 (ko) 2014-06-24

Family

ID=39184110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097005329A KR101411197B1 (ko) 2006-09-15 2007-08-28 패킷 스트림 내의 지터 보상 방법

Country Status (10)

Country Link
US (2) US8483243B2 (ko)
EP (1) EP2084873B1 (ko)
JP (1) JP4945638B2 (ko)
KR (1) KR101411197B1 (ko)
CN (1) CN101518001B (ko)
AU (1) AU2007297062B2 (ko)
BR (1) BRPI0714231A2 (ko)
MX (1) MX2009002294A (ko)
RU (2) RU2439828C2 (ko)
WO (1) WO2008033663A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8274889B2 (en) * 2008-03-18 2012-09-25 International Business Machines Corporation Method, system and computer program product involving congestion detection in ethernet
US8291257B2 (en) * 2010-03-29 2012-10-16 Freescale Semiconductor, Inc. Apparatus and method to compensate for injection locking
US20150254056A1 (en) * 2014-03-10 2015-09-10 JamKazam, Inc. Track based music management server and related methods for interactive music systems
KR102422794B1 (ko) * 2015-09-04 2022-07-20 삼성전자주식회사 재생지연 조절 방법 및 장치와 시간축 변형방법 및 장치
CN109787861B (zh) * 2016-08-01 2021-03-02 北京大学 网络数据延迟控制方法
CN108966028B (zh) * 2018-08-17 2021-04-30 上海悠络客电子科技股份有限公司 一种基于网络状况动态调节播放速度的防抖动方法
KR20210096921A (ko) * 2020-01-29 2021-08-06 삼성전자주식회사 스트리밍 데이터를 처리하는 방법 및 전자 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004010670A1 (en) 2002-07-19 2004-01-29 Koninklijke Philips Electronics N.V. Jitter compensation method for systems having wall clocks
KR20040031035A (ko) * 2001-09-04 2004-04-09 노키아 코포레이션 토크 스퍼트 동안의 재동기화를 이용하여 패킷-기반 음성단말기 내의 동기화 지연을 감소시키기 위한 방법 및 장치
US20040184488A1 (en) * 2003-03-20 2004-09-23 Wolfgang Bauer Method and a jitter buffer regulating circuit for regulating a jitter buffer
US20060034338A1 (en) 2004-08-12 2006-02-16 Infineon Technologies Ag Method and arrangement for compensating for jitter in the delay of data packets

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440562A (en) * 1993-12-27 1995-08-08 Motorola, Inc. Communication through a channel having a variable propagation delay
US6434606B1 (en) * 1997-10-01 2002-08-13 3Com Corporation System for real time communication buffer management
CA2299943A1 (en) * 2000-03-03 2001-09-03 Shane M. Rogers Apparatus for adjusting a local sampling rate based on the rate of reception of packets
US6775301B1 (en) * 2000-03-08 2004-08-10 3Com Corporation System and method for compensating for channel jitter
US6862298B1 (en) * 2000-07-28 2005-03-01 Crystalvoice Communications, Inc. Adaptive jitter buffer for internet telephony
US20040204935A1 (en) * 2001-02-21 2004-10-14 Krishnasamy Anandakumar Adaptive voice playout in VOP
US7110416B2 (en) * 2001-09-04 2006-09-19 Nokia Corporation Method and apparatus for reducing synchronization delay in packet-based voice terminals
CN1464685A (zh) * 2002-06-13 2003-12-31 优创科技(深圳)有限公司 一种在网络终端缓冲区中处理音频流回放的方法
US7362770B2 (en) * 2002-09-06 2008-04-22 Lsi Logic Corporation Method and apparatus for using and combining sub-frame processing and adaptive jitter-buffers for improved voice quality in voice-over-packet networks
US7457282B2 (en) * 2003-10-29 2008-11-25 Nokia Corporation Method and apparatus providing smooth adaptive management of packets containing time-ordered content at a receiving terminal
US7424026B2 (en) * 2004-04-28 2008-09-09 Nokia Corporation Method and apparatus providing continuous adaptive control of voice packet buffer at receiver terminal
JP4534582B2 (ja) * 2004-05-07 2010-09-01 ソニー株式会社 音声ストリーム再生装置及び音声ストリーム再生方法
JP4146489B2 (ja) * 2004-05-26 2008-09-10 日本電信電話株式会社 音声パケット再生方法、音声パケット再生装置、音声パケット再生プログラム、記録媒体
KR100631514B1 (ko) * 2004-12-16 2006-10-09 엘지전자 주식회사 실시간 스트리밍 서비스의 전송률 제어 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040031035A (ko) * 2001-09-04 2004-04-09 노키아 코포레이션 토크 스퍼트 동안의 재동기화를 이용하여 패킷-기반 음성단말기 내의 동기화 지연을 감소시키기 위한 방법 및 장치
WO2004010670A1 (en) 2002-07-19 2004-01-29 Koninklijke Philips Electronics N.V. Jitter compensation method for systems having wall clocks
US20040184488A1 (en) * 2003-03-20 2004-09-23 Wolfgang Bauer Method and a jitter buffer regulating circuit for regulating a jitter buffer
US20060034338A1 (en) 2004-08-12 2006-02-16 Infineon Technologies Ag Method and arrangement for compensating for jitter in the delay of data packets

Also Published As

Publication number Publication date
EP2084873A1 (en) 2009-08-05
EP2084873B1 (en) 2018-07-11
JP2010504039A (ja) 2010-02-04
US20130294463A1 (en) 2013-11-07
MX2009002294A (es) 2009-03-20
CN101518001A (zh) 2009-08-26
EP2084873A4 (en) 2016-12-21
BRPI0714231A2 (pt) 2013-01-15
US20080069127A1 (en) 2008-03-20
AU2007297062A1 (en) 2008-03-20
RU2011136136A (ru) 2013-03-10
RU2596808C2 (ru) 2016-09-10
AU2007297062B2 (en) 2010-10-28
US8483243B2 (en) 2013-07-09
RU2009109202A (ru) 2010-09-20
KR20090058522A (ko) 2009-06-09
RU2439828C2 (ru) 2012-01-10
CN101518001B (zh) 2013-03-27
WO2008033663A1 (en) 2008-03-20
JP4945638B2 (ja) 2012-06-06
US9479276B2 (en) 2016-10-25

Similar Documents

Publication Publication Date Title
KR101411197B1 (ko) 패킷 스트림 내의 지터 보상 방법
EP1362341B1 (en) Method and apparatus for encoding and decoding pause information
US7590531B2 (en) Robust decoder
US7710982B2 (en) Sound packet reproducing method, sound packet reproducing apparatus, sound packet reproducing program, and recording medium
KR100968928B1 (ko) 오디오 스트림 및 비디오 스트림의 동기화 장치 및 방법
JP5734517B2 (ja) 多チャンネル・オーディオ信号を処理する方法および装置
JP4485690B2 (ja) マルチメディア信号を伝送する伝送システム
WO2005109401A1 (ja) 音響信号のパケット通信方法、送信方法、受信方法、これらの装置およびプログラム
JP2007295578A (ja) 音声データのフレームを含む音声ストリームを通す複数の通信モジュールを含む通信システムのための方法
US7240013B2 (en) Method and apparatus for controlling buffering of audio stream
US20040071132A1 (en) Method and a communication apparatus in a communication system
KR100594599B1 (ko) 수신단 기반의 패킷 손실 복구 장치 및 그 방법
JP4862136B2 (ja) 音声信号処理装置
KR20050066477A (ko) VoIP 시스템을 위한 프레임 손실 은닉 방법 및 장치
JP2000330592A (ja) 圧縮音響ストリーム内データ追加方法およびその装置

Legal Events

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

Payment date: 20170522

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 6