KR20220104198A - 디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉 - Google Patents

디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉 Download PDF

Info

Publication number
KR20220104198A
KR20220104198A KR1020227020577A KR20227020577A KR20220104198A KR 20220104198 A KR20220104198 A KR 20220104198A KR 1020227020577 A KR1020227020577 A KR 1020227020577A KR 20227020577 A KR20227020577 A KR 20227020577A KR 20220104198 A KR20220104198 A KR 20220104198A
Authority
KR
South Korea
Prior art keywords
audio
packet
segment
stream
decoded
Prior art date
Application number
KR1020227020577A
Other languages
English (en)
Inventor
치옹 칭 라이
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220104198A publication Critical patent/KR20220104198A/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • 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

Abstract

시스템은 오디오 패킷의 실시간 스트림을 생성하는 서버와 스트림의 오디오 콘텐츠를 디코딩 및 재생하기 위한 클라이언트 디바이스 포함한다. 클라이언트 디바이스는 네트워크를 통해 오디오 패킷의 스트림을 수신하도록 구성된 네트워크 인터페이스 및 스트림의 오디오 패킷의 서브세트를 일시적으로 버퍼링하도록 구성된 버퍼를 포함한다. 클라이언트 디바이스는 상기 버퍼로부터 오디오 패킷을 수신하기 위한 입력 및 디코딩된 오디오 데이터 스트림의 대응하는 세그먼트를 제공하기 위한 출력을 갖는 오디오 디코더를 더 포함한다. 클라이언트 디바이스는 또한 손실되거나 지연된 오디오 패킷의 디코딩 대신에 반복된 디코딩을 위해 상기 디코더에 의해 이전에 디코딩되었던 상기 버퍼 내의 서브세트의 오디오 패킷을 다시 상기 디코더의 입력에 제공하도록 구성된 스트림 모니터링 모듈을 포함한다.

Description

디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉
실시간 미디어 스트리밍 서비스는 패킷 손실 또는 지연된 패킷과 같은 네트워크 문제에 취약한 경우가 많다. 오디오 스트림의 경우, 오디오 패킷의 손실 또는 지연 도착은 문제가 될 수 있는데, 수신 클라이언트 디바이스의 오디오 디코더가 일반적으로 오디오 재생을 일시 중지할 수 없기 때문으로, 이는 오디오 품질을 저하시켜 서비스 품질에 영향을 미친다. 지연/손실된 오디오 패킷의 영향을 완화하기 위해, 많은 시스템에서 FEC(순방향 오류 수정), 묵음 삽입, 보간 분석 또는 디코딩 후 세그먼트 복제와 같은 기존 PLC(패킷 손실 은닉) 기법을 사용한다.
일반적으로 FEC 기반 PLC 기법은 증가된 수의 적어도 부분적으로 중복된 패킷의 전송에 의존하며, 이러한 중복성을 통해 클라이언트 디바이스는 손실되거나 지연된 오디오 패킷을 재구성할 수 있다. 그러나 이러한 중복성은 추가 대역폭을 소모하므로 종종 오디오 스트림의 전체 비트 전송률이 감소한다. 또한 이 접근법은 FEC 기능이 내장된 클라이언트 디바이스로만 제한된다. 사실상 무음 삽입 기법은 손실/지연 오디오 패킷에 대응하는 시간 슬롯에 대해 0 출력 또는 기본 정의 출력을 제공한다. 구현하기는 비교적 간단하지만 이 기본 삽입은 종종 인지할 수 있는 오디오 아티팩트를 발생시킨다. 대조적으로, 이전 오디오 신호를 분석하고 신호 추정을 통해 손실/지연 패킷의 내용을 재구성하려고 시도하는 보간 분석 기반 기법은 향상된 오디오 신호 복제를 제공하여 인식할 수 있는 오디오 아티팩트를 줄일 수 있다. 디코딩 후 복제 기법은 오디오 디코더의 오디오 출력 슬라이스를 복제하여 지연/손실된 오디오 패킷을 보상하고, 재구성된 오디오 신호를 분석하고 오디오 아티팩트를 줄이는 방식으로 효과적으로 "연결"하는 추가 프로세싱에 의존한다. 그러나, 디코딩 후 복제 기법 및 보간 분석 기법은 향상된 신호 충실도를 제공할 수 있지만, 이러한 기법은 종종 많은 클라이언트 디바이스에서 실행 불가능한 복잡성과 컴퓨팅 리소스 기능을 필요로 한다.
제1 실시예에서, 전자 디바이스는 네트워크를 통해 오디오 패킷의 스트림을 수신하도록 구성된 네트워크 인터페이스 및 스트림의 오디오 패킷의 서브세트를 일시적으로 버퍼링하도록 구성된 버퍼를 포함하고, 그리고 상기 버퍼로부터 오디오 패킷을 수신하기 위한 입력 및 디코딩된 오디오 데이터 스트림의 대응하는 세그먼트(즉, 버퍼로부터의 오디오 패킷에 각각 대응하는 디코딩된 오디오 데이터의 세그먼트)를 제공하기 위한 출력을 갖는 오디오 디코더를 포함한다. 전자 디바이스는 또한 손실되거나 지연된 오디오 패킷의 디코딩 대신에 반복된 디코딩을 위해 상기 디코더에 의해 이전에 디코딩되었던 상기 버퍼 내의 서브세트의 오디오 패킷을 다시 상기 디코더의 입력에 제공하도록 구성된 스트림 모니터링 모듈을 더 포함한다. 스트림 모니터링 모듈은 반복된 디코딩을 위해 상기 디코더에 의해 이전에 디코딩되었던 상기 오디오 패킷을 다시 상기 디코더의 입력에 제공함으로써 패킷 손실 은닉(PLC) 프로세스를 제공하도록 구성되며, 이는 프로세스는 상기 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과하지 않는다고 결정하는 것에 응답하여 이루어지며, 그리고 상기 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 오류를 트리거하도록 더 구성될 수 있다. 상기 스트림 모니터링 모듈은 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 손실되거나 지연된 오디오 패킷을 보상하기 위한 대안적인 패킷 손실 은닉(PLC) 프로세스를 구현하도록 더 구성될 수 있다.
오류를 트리거하는 것은 오류 신호, 예를 들어 오디오 스트림(및 예시적인 실시예에서 또한 대응하는 비디오 스트림이 있는 경우 대응하는 비디오 스트림)의 재생을 중지시키는 오류 신호의 생성을 트리거하는 것 및/또는 시스템 성능 검사를 개시하는 것을 포함할 수 있다.
제안된 전자 디바이스는 따라서 네트워크로부터 오디오 스트림을 수신하기 위한 네트워크 인터페이스, 전자 디바이스에서 수신될 때 오디오 패킷의 서브세트를 일시적으로 버퍼링하기 위한 버퍼, 예를 들어 지터 버퍼, 및 디코딩된 오디오 신호의 대응하는 세그먼트를 생성하기 위해 버퍼로부터의 오디오 패킷을 디코딩하기 위한 오디오 디코더를 포함할 수 있다. 그런 다음, 디코딩된 오디오 신호는 다른 오디오 소스와 혼합될 수 있고, 재패킷화되고 추가로 전송되거나, 그렇지 않으면 추가 프로세싱되어 궁극적으로 하나 이상의 대응하는 스피커를 구동하는데 사용되는 하나 이상의 아날로그 오디오 신호를 생성한다. 적어도 하나의 실시예에서, 전자 디바이스는 네트워크에 의해 손실되거나 과도하게 지연된(즉, "늦은") 하나 이상의 후속 오디오 패킷을 보상하기 위해 이전에 수신된 오디오 패킷의 하나 이상의 반복 디코딩에 기초하여 제안된 PLC(패킷 손실 은닉) 기법을 사용할 수 있다. 이를 위해, 전자 디바이스는 스트림 모니터링 모듈을 이용하여 수신된 오디오 스트림을 모니터링하여 스트림의 오디오 패킷이 지연되거나 손실된 때를 검출할 수 있다. 이러한 지연 또는 손실된 오디오 패킷을 검출하는 것에 응답하여, 스트림 모니터링 모듈은 이전 시간 슬롯에 대해 디코더에 의해 이전에 디코딩되었던 버퍼의 서브세트의 오디오 패킷을 손실되거나 지연되고 현재 시간 슬롯에 대해 의도된 오디오 패킷의 디코딩 대신 현재 시간 슬롯에 대한 반복된 디코딩을 위해 디코더의 입력에 다시 제공한다. 지연/손실 패킷으로 인한 간격을 채우기 위해 이전에 디코딩된 오디오 패킷의 디코딩을 반복함으로써 이 PLC 기법은 디코더의 오디오 합성(일반적인 디코딩 프로세싱 경로를 따름)을 활용하여, 패킷 디코딩 복제 동안 디코딩된 오디오 신호의 연속성을 용이하게 하여, 따라서 이러한 연속성이 없을 때 발생할 수 있는 왜곡 또는 아티팩트를 줄이거나 제거한다.
예시적 실시예에서, 스트림 모니터링 모듈은 상기 전자 디바이스에서 적시에 수신된 제1 오디오 패킷에 대해, 제1 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제1 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하고; 지연되거나 손실된 제2 오디오 패킷에 대해, 제2 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제2 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하도록 구성되며; 그리고 상기 제2 세그먼트는 상기 제1 세그먼트와 연속성을 갖는다. 스트림 모니터링 모듈은 또한 지연되거나 손실된 제3 오디오 패킷에 대해, 제3 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제3 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하도록 구성되며; 그리고 상기 제3 세그먼트는 상기 제2 세그먼트와 연속성을 갖는다.
상기 임의의 인스턴스에서, 상기 오디오 패킷의 스트림은 상기 네트워크를 통해 상기 전자 디바이스에 연결된 서버에서 실행되는 비디오 게임 애플리케이션에 의해 생성된 오디오 콘텐츠로부터 생성될 수 있다.
다른 실시예는 위에서 설명된 인스턴스 중 임의의 것의 전자 디바이스를 동작시키는 방법, 뿐만 아니라 오디오 패킷의 스트림을 생성하기 위한 서버 및 위에서 설명된 임의의 인스턴스의 전자 디바이스를 포함하는 시스템을 포함할 수 있다.
다른 실시예에서, 제안된 컴퓨터로 구현되는 방법은 네트워크로부터 오디오 패킷의 스트림을 수신하는 단계, 상기 오디오 패킷의 서브세트를 일시적으로 버퍼링하는 단계, 오디오 디코더에서, 디코딩된 오디오 데이터 스트림의 제1 세그먼트를 생성하기 위해 상기 서브세트의 제1 오디오 패킷을 디코딩하는 단계, 및 상기 스트림의 제1 오디오 패킷에 후속하는 제2 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 오디오 디코더에서, 상기 디코딩된 오디오 신호의 제2 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 다시 디코딩하는 단계를 포함하며, 상기 제2 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제1 세그먼트에 후속한다. 방법은 또한 상기 스트림의 제2 오디오 패킷에 후속하는 제3 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 오디오 디코더에서, 상기 디코딩된 오디오 신호의 제3 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 세 번째로 디코딩하는 단계를 포함하며, 상기 제3 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제2 세그먼트에 후속한다. 상기 제1 오디오 패킷을 다시 디코딩하는 단계는 상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과하지 않았다는 결정에 응답하여 이루어질 수 있다. 방법은 상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 오류를 트리거하는 단계를 더 포함할 수 있다. 방법은 상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 손실되거나 지연된 제2 오디오 패킷을 보상하기 위한 대안적인 패킷 손실 은닉 프로세스를 구현하는 단계를 더 포함할 수 있다. 상기 설명된 인스턴스 중 임의의 것에서, 오디오 디코더는 제1 세그먼트와 연속성을 갖도록 제2 세그먼트를 생성할 수 있다. 유사하게, 상기 설명된 인스턴스 중 임의의 것에서, 오디오 패킷의 스트림은 서버에서 실행되는 비디오 게임 애플리케이션에 의해 생성된 오디오 콘텐츠로부터 생성될 수 있다.
다른 실시예는 오디오 패킷을 버퍼링하는 버퍼 및 오디오 패킷을 디코딩하는 디코더를 포함하는 전자 디바이스를 포함할 수 있고, 상기 전자 디바이스는 예시적 방법을 수행하도록 구성된다.
다른 실시예는 프로세서를 조작하도록 구성된 실행가능한 명령어 세트를 저장하는 비일시적 컴퓨터 판독가능 매체를 포함하며, 상기 프로세서는 디코딩된 오디오 신호의 제1 세그먼트를 생성하기 위해 네트워크를 통해 수신된 스트림의 오디오 패킷의 일시적으로 - 버퍼링된 서브세트의 제1 오디오 패킷을 디코딩하고, 그리고 상기 스트림의 제1 오디오 패킷에 후속하는 제2 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 오디오 디코더에서 상기 디코딩된 오디오 신호의 제2 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 다시 디코딩하도록 구성되며, 상기 제2 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제1 세그먼트에 후속하며 상기 제1 세그먼트와 연속성을 갖는다.
본 개시는 더 잘 이해될 수 있고, 그것의 수많은 구성 및 이점은 첨부 도면을 참조함으로써 통상의 기술자에게 명백해진다. 상이한 도면에서 동일한 참조 부호의 사용은 유사하거나 동일한 아이템을 표시한다.
도 1은 일부 실시예에 따라 프리-디코더 패킷 복제에 기초한 패킷 손실 은닉(PLC)을 사용하는 실시간 미디어 스트리밍 시스템을 도시하는 블록도이다.
도 2는 일부 실시예에 따라 프리-디코더 패킷 복제를 사용하는 PLC를 위한 방법을 도시하는 흐름도이다.
도 3은 도 2의 방법의 예시적 구현예를 도시하는 도면이다.
도 1 내지 도 3은 하나 이상의 네트워크를 통해 서버로부터 사용자의 전자 디바이스(즉, "클라이언트 디바이스")로 전송되는 실시간 오디오 스트림에서 패킷 손실 또는 패킷 지연의 영향을 완화하기 위한 다양한 시스템 및 기법을 도시한다. 클라이언트 디바이스는 네트워크로부터 오디오 스트림을 수신하기 위한 네트워크 인터페이스, 클라이언트 디바이스에서 수신될 때 오디오 패킷의 서브세트를 일시적으로 버퍼링하기 위한 지터 버퍼 및 디코딩된 오디오 신호의 대응하는 세그먼트를 생성하기 위해 지터 버퍼로부터의 오디오 패킷을 디코딩하기 위한 오디오 디코더를 포함할 수 있다. 예를 들면, 그런 다음, 디코딩된 오디오 신호는 다른 오디오 소스와 혼합될 수 있고, 재패킷화되고 추가로 전송되거나, 그렇지 않으면 추가 프로세싱되어 궁극적으로 하나 이상의 대응하는 스피커를 구동하는데 사용되는 하나 이상의 아날로그 오디오 신호를 생성한다. 적어도 하나의 실시예에서, 클라이언트 디바이스는 네트워크에 의해 손실되거나 과도하게 지연된(즉, "늦은") 하나 이상의 후속 오디오 패킷을 보상하기 위해 이전에 수신된 오디오 패킷의 하나 이상의 반복 디코딩에 기초하여 PLC(패킷 손실 은닉) 기법을 사용한다. 이를 위해, 클라이언트 디바이스는 스트림 모니터링 모듈을 이용하여 수신된 오디오 스트림을 모니터링하여 스트림의 오디오 패킷이 지연되거나 손실된 때를 검출한다. 이러한 지연 또는 손실된 오디오 패킷을 검출하는 것에 응답하여, 스트림 모니터링 모듈은 이전 시간 슬롯에 대해 디코더에 의해 이전에 디코딩되었던 버퍼의 서브세트의 오디오 패킷을 손실되거나 지연되고 현재 시간 슬롯에 대해 의도된 오디오 패킷의 디코딩 대신 현재 시간 슬롯에 대한 반복된 디코딩을 위해 디코더의 입력에 다시 제공한다. 지연/손실 패킷으로 인한 간격을 채우기 위해 이전에 디코딩된 오디오 패킷의 디코딩을 반복함으로써 이 PLC 기법은 디코더의 오디오 합성(일반적인 디코딩 프로세싱 경로를 따름)을 활용하여, 패킷 디코딩 복제 동안 디코딩된 오디오 신호의 연속성을 용이하게 하여, 따라서 이러한 연속성이 없을 때 발생할 수 있는 왜곡 또는 아티팩트를 줄이거나 제거한다.
도 1은 일부 실시예에 따른 프리-디코더 패킷 복제를 사용하는 PLC 기법을 사용하는 실시간 미디어 스트리밍 시스템(100)을 도시한다. 시스템(100)은 하나 이상의 네트워크(106)를 통해 사용자의 전자 디바이스(104)(이하, "클라이언트 디바이스(104)")에 연결된 서버(102)를 포함한다. 하나 이상의 네트워크(106)는 예를 들어, 인터넷 또는 다른 공용 액세스 네트워크, 유선 또는 무선 WAN(Wide Area Network), 유선 또는 무선 LAN(Local Area Network), 유선 또는 무선 PAN(Personal Area Network) 또는 이들의 조합을 포함할 수 있다.
서버(102)는 네트워크(106), 실시간 미디어 소스(110) 및 오디오 인코더(112)에 연결된 네트워크 인터페이스(108)를 포함한다. 실시간 미디어 소스(110)는 클라이언트 디바이스(104)로의 전송을 위해 실시간 미디어 콘텐츠를 생성하거나 제공한다. 예를 들어, 실시간 미디어 소스(110)는 네트워크(106)를 통해 클라이언트 디바이스(104)로부터 수신된 플레이어 입력에 기초하여 서버(102)에서 실행되는 클라우드 기반 비디오 게임을 포함할 수 있으며, 비디오 게임은 클라이언트에 전송하기 위한 비디오 프레임 스트림 및 수반되는 오디오 프레임 스트림을 생성한다. 다른 예로서, 실시간 미디어 소스(110)는 다양한 참가자의 클라이언트 디바이스 사이에서 비디오 및 오디오 스트림을 분배하는 화상 회의 애플리케이션을 포함할 수 있다. 또 다른 예로서, 실시간 미디어 소스(110)는 모바일 셀룰러 시스템에서 VoIP(Voice-over-Internet Protocol) 또는 다른 패킷 기반 음성 호출의 음성 콘텐츠의 포워딩 전송을 포함할 수 있다. 오디오 인코더(112)는 실시간 미디어 소스(110)로부터의 오디오 콘텐츠 스트림을 인코딩하고, 결과적으로 인코딩된 오디오 스트림을 네트워크 인터페이스(108)에 제공하도록 동작하며, 그 결과 네트워크 인터페이스(108)는 인코딩된 오디오 스트림을 패킷화하고, 결과 오디오 패킷을 패킷화된 오디오 스트림(114)의 일부로서 네트워크(106)를 통해 클라이언트 디바이스(104)에 전송한다.
클라이언트 디바이스(104)는 오디오 스트림(114)의 오디오 콘텐츠를 재생하거나 또 다른 전자 디바이스에 의한 재생을 위해 오디오 콘텐츠를 디코딩 및 포워딩하는데 사용되는 다양한 전자 디바이스 중 임의의 것을 나타낸다. 클라이언트 디바이스(104)의 예는 모바일 전화, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 게임 콘솔, "스마트" 텔레비전, "스마트" 시계, 자동차 정보/오락 시스템 등을 포함한다. 클라이언트 디바이스(104)는 오디오 스트림(114)의 오디오 패킷을 수신하기 위한 네트워크 인터페이스(116), 최근 수신된 오디오 패킷의 슬라이딩 서브세트를 일시적으로 버퍼링하기 위한 지터 버퍼(118)(예를 들어, 원형 버퍼), 및 적어도 하나의 스피커(124)를 구동하기 위해 하나 이상의 아날로그 스피커 신호로 변환되기 전에 적어도 하나의 스피커(124)를 구동하는데 사용되는 하나 이상의 아날로그 오디오 신호로 직접 변환되거나(예를 들어, 디지털-아날로그 변환기 또는 DAC를 통해) 디지털 증폭기/믹서(127)에 의해 추가로 프로세싱될 수 있는 출력 디코딩된 오디오 신호(122)의 대응하는 디코딩된 오디오 세그먼트를 생성하기 위해(예: 펄스 코드 변조(PCM) 디지털 신호) 특정 순서(예를 들어, 수신된 순서, 타임 스탬프에 기초한 순차적인 순서 등)로 지터 버퍼(118)로부터의 오디오 패킷을 순차적으로 디코딩하도록 동작하는 오디오 디코더(120)를 포함한다. 일 실시예에서, 오디오 디코더(120)는 시스템 메모리(130) 또는 다른 비일시적 컴퓨터 판독 가능 매체에 저장된 오디오 디코딩 소프트웨어(128)를 실행하는 하나 이상의 프로세서(126)로서 구현된다. 예를 들어, 오디오 디코딩 소프트웨어(128)는 오푸스 인터랙티브 오디오 코덱(Opus Interactive Audio Codec) 또는 기타 잘 알려진 또는 독점 소프트웨어 기반 코덱으로 구현될 수 있다. 다른 실시예에서, 오디오 디코더(120)는 본 명세서에 설명된 기능을 수행하도록 구성된 ASIC(application-specific integrated circuit) 또는 FPGA(field-programmable gate array)와 같은 하드코딩된 또는 프로그램 가능한 로직으로서 구현될 수 있다. 또 다른 실시예에서, 오디오 디코더(120)는 소프트웨어를 실행하는 프로세서와 특정 하드코딩된/프로그래머블 로직의 조합으로서 구현될 수 있다.
적어도 하나의 실시예에서, 네트워크(106)는 하나 이상의 패킷 교환 네트워크의 조합이고, 따라서 혼잡, 라우팅 오류, 버퍼 오버플로우 및 오디오 스트림(114)의 오디오 패킷 중 하나 이상이 손실되거나(즉, 클라이언트 디바이스(104)에 의해 수신되지 않음) 지연(즉, 대응하는 디코딩 시간슬롯에서 재생을 위해 프로세싱될 시간 내에 클라이언트 디바이스(104)에 의해 수신되지 않음)될 수 있는 다른 네트워크 문제의 대상이 된다. 지연 오디오 패킷은 대응하는 시간 슬롯의 표현된 오디오 콘텐츠의 재생을 제공하는데 사용할 수 없다는 점에서 손실 오디오 패킷과 동일한 결과를 가져오므로 사실상 "손실"은 본 명세서에서 "손실된 오디오"에 대한 별도의 언급이 없는 한 네트워크(106)에서 손실된 오디오 패킷 또는 클라이언트 디바이스(104)에 너무 늦게 도착한 오디오 패킷을 포함하도록 의도된다. 보상 메커니즘이 없으면, 손실 오디오 패킷은 오디오 디코더(120)가 대응 시간 슬롯에 대한 디코딩된 오디오 신호(122)의 대응 세그먼트를 생성하기 위해 디코딩할 의도된 오디오 콘텐츠를 갖지 않을 것이며, 따라서 결과적으로 청취자의 경험을 손상시킬 디코딩된 오디오 신호(122)에서 상당한 불연속성을 도입한다는 것을 의미한다. FEC, 묵음 삽입, 보간 분석 및 디코딩된 신호 세그먼트 반복과 같은 종래 PLC 기법은 손실된 오디오 패킷의 영향을 완화하려고 시도하지만, 이러한 종래 기법은 지나치게 복잡하고 리소스 집약적이거나 결과적으로 디코딩된 오디오 신호에서 불연속성을 충분히 제거하지 못한다.
따라서, 적어도 하나의 실시예에서 클라이언트 디바이스(104)는 프리-디코더 패킷 복제(즉, 디코더의 입력에서 오디오 패킷 콘텐츠의 복제)에 기초한 PLC 기법을 사용한다. 이를 위해, 클라이언트 디바이스(104)는 네트워크 인터페이스(116) 및 지터 버퍼(118)에 연결되고 지터 버퍼(118)에 버퍼링된 오디오 패킷을 선택하고 이를 오디오 디코더(120)의 입력(136)에 제공하도록 동작하는 패킷 선택기(134)에 더 연결된 스트림 모니터링 모듈(132)을 더 포함한다. 일부 실시예에서, 스트림 모니터링 모듈(132) 및 패킷 선택기(134) 중 하나 또는 둘 모두는 시스템 메모리(130) 또는 다른 비일시적 컴퓨터 판독 가능 매체에 저장된 소프트웨어(138)를 실행하는 하나 이상의 프로세서(126)로서 적어도 부분적으로 구현된다. 다른 실시예에서, 스트림 모니터링 모듈(132) 및 패킷 선택기(134) 중 하나 또는 둘 모두는 하드코딩된 또는 프로그램 가능한 로직, 또는 프로세서 실행 소프트웨어와 프로그램 가능한/하드코딩된 로직의 조합으로서 적어도 부분적으로 구현된다.
일반적인 동작 개요로서, 스트림 모니터링 모듈(132)은 손실된 오디오 패킷을 검출하기 위해 네트워크 인터페이스(116) 또는 지터 버퍼(118)를 통해 수신된 오디오 스트림(114)을 모니터링한다. 대응하는 디코딩 시간 슬롯에 대한 오디오 패킷이 제 시간에 수신되는 동안, 스트림 모니터링 모듈(132)은 패킷 선택기(134)를 제어하여 지터 버퍼(118)로부터 수신된 오디오 패킷에 액세스하고, 대응하는 시간 슬롯에 대한 디코딩된 오디오 신호(122)의 세그먼트를 생성하기 위한 오디오 콘텐츠의 디코딩을 위해 액세스 오디오 패킷을 오디오 디코더(120)에 제공한다. 대조적으로, 손실된 오디오 패킷을 검출하는 것에 응답하여, 손실된 패킷에 대한 디코딩 시간 슬롯이 접근할 때, 스트림 모니터링 모듈(132)은 이전 디코딩 시간슬롯에 대해 오디오 디코더(120)에 의해 디코딩되었던 오디오 패킷에 액세스하도록 패킷 선택기(134)를 제어하고, 반복된 디코딩을 위해 이 동일한 오디오 패킷을 오디오 디코더(120)의 입력(136)에 제공하여, 결과적으로 디코딩된 세그먼트가 디코딩된 오디오 신호(122)에서 손실된 오디오 패킷에 대해 손실되지 않았다면 오디오 디코더(120)에 의해 생성되었을 디코딩된 세그먼트에 대한 대체물로서 사용되도록 한다.
예를 들어 설명하기 위해, 서버(102)가 네트워크(106)를 통해 오디오 스트림(114)의 오디오 패킷(140, 141, 142)을 순서대로 전송한다고 가정한다. 이 예에서, 오디오 패킷(140, 142)은 성공적으로 수신되어 클라이언트 디바이스(104)에서 정시에 버퍼링되지만, 오디오 패킷(141)은 네트워크(106)에서 손실된다. 따라서, 오디오 패킷(140)이 적시에 수신되고 버퍼링된 상태에서, 패킷 선택기(134)는 대응하는 시간 슬롯 X에서 지터 버퍼(118)로부터 오디오 디코더(120)의 입력(136)으로 오디오 패킷(140)을 제공하고, 이에 따라 오디오 디코더(120)는 디코딩된 오디오 신호(122)의 세그먼트 Y를 생성하기 위해 오디오 패킷(140)의 오디오 콘텐츠를 디코딩한다. 다음 시간 슬롯 X+1에 대해, 다음 오디오 패킷, 오디오 패킷(141)이 "손실"되었다는 결정에 응답하여, 스트림 모니터링 모듈(132)은 패킷 선택기(134)를 제어하여 이전에 디코딩된 오디오 패킷 즉, 오디오 패킷(140)을 오디오 디코더(120)의 입력(136)으로 다시 제공하고, 그 후 다시 디코딩되어 디코딩된 오디오 신호(122)의 대응하는 세그먼트 Y+1을 생성한다. 오디오 디코더(120)에 의해 나타나는 전형적인 오디오 합성 속성은 동일한 오디오 콘텐츠로부터 오디오 디코더(120)에 의해 이전에 생성된 세그먼트 Y와 매끄럽게 스티칭되도록 오디오 디코더(120)에 의해 생성되는 세그먼트 Y+1을 초래하며, 두 세그먼트가 동일한 입력 패킷(오디오 패킷 140)로부터 생성되었음에도 불구하고, 세그먼트 Y와 세그먼트 Y+1 사이의 디코딩된 오디오 신호(122)의 연속성을 보장한다. 이어서, 오디오 패킷(142)이 적시에 수신됨에 따라, 시간 슬롯 X+2에 대해 패킷 선택기(134)는 오디오 패킷(142)을 오디오 디코더(120)의 입력(136)에 제공하고, 오디오 디코더(120)는 디코딩된 오디오 신호(122)에 대해 세그먼트 Y+2를 생성하기 위해 오디오 패킷(142)을 디코딩하며, 이는 오디오 디코더(120)에 의해 사용되는 표준 오디오 합성 절차로 인해 오디오 디코더(120)에 의해 세그먼트 Y+2와 다시 매끄럽게 연결된다.
도 2는 일부 실시예에 따라 도 1을 더 자세히 설명되는 도 1의 시스템(100)의 클라이언트 디바이스(104)에 의해 사용된 프리-디코더 패킷 반복 PLC 기법을 나타내는 방법(200)을 도시한다. 블록(202)으로 나타낸 바와 같이, 오디오 스트림(114)을 프로세싱하기 위한 클라이언트 디바이스(104)의 초기화 동안, 스트림 모니터링 모듈(132)은 다수의 파라미터를 설정한다. 이러한 파라미터 초기화 중 하나는 반복되는 패킷 수의 지속적인 카운트를 나타내는 변수 REP_PACKET_COUNT를 0 또는 다른 초기화 값으로 설정하는 것을 포함한다. 또 다른 파라미터 초기화는 변수 THRESHOLD를 구현예에 따라 오류 또는 다른 PLC 프로세스로 전환을 트리거하기 전에 오디오 패킷이 연속으로 코딩을 위해 복제될 수 있는 최대 횟수(또는 복제된 디코딩이 수행된 횟수)를 나타내는 특정 수로 설정하는 것을 포함한다. 따라서 THRESHOLD는 패킷 손실과 오디오 품질 측면에서 견고성 사이의 균형을 유지하는데 사용할 수 있는 튜닝 파라미터이다. 따라서 THRESHOLD에 대한 값은 사용자, 오디오 스트림(114)의 제공자, 클라이언트 디바이스(104)의 제공자 등에 의해 설정될 수 있다.
블록(204)에서, 클라이언트 디바이스(104)는 네트워크 인터페이스(116)를 통해 서버(102)로부터 오디오 스트림(114)의 오디오 패킷을 수신하고, 지터 버퍼(118)에서 오디오 패킷의 슬라이딩 서브세트를 버퍼링하기 시작한다(여기서 현재 버퍼링된 서브세트의 최대 크기는 지터 버퍼(118)의 항목 수에 기반한다). 오디오 패킷이 수신되고 버퍼링됨에 따라, 블록(206)에서 스트림 모니터링 모듈(132)은 오디오 패킷이 손실되었는지 여부를 결정하기 위해 들어오는 오디오 패킷을 모니터링한다. 손실된 패킷이 검출되지 않을 때, 블록(208)에서 스트림 모니터링 모듈(132)은 변수 REP_PACKET_COUNT를 0으로 설정하거나 그렇지 않으면 유지하고, 다음 디코딩 시간 슬롯에 대해, 패킷 선택기(134)는 지터 버퍼로부터 해당 디코딩 시간 슬롯에 대응하는 버퍼링된 오디오 패킷에 액세스하고, 블록(210)에서 액세스된 오디오 패킷을 입력 오디오 패킷으로서 오디오 디코더(120)의 입력(136)에 제공한다.
설명하기 위해, 일부 구현예에서, 각각의 오디오 패킷에는 서버(102)에서의 인코딩 프로세스 동안 의도된 재생 시퀀스에서 대응하는 오디오 패킷의 포지션을 식별하는 시퀀스 번호가 할당된다. 결과적으로, 스트림 모니터링 모듈(132)이 지터 버퍼(118)로부터 다음 오디오 패킷에 액세스할 때, 스트림 모니터링 모듈(132)은 액세스된 오디오 패킷의 시퀀스 번호를 예상되는 시퀀스 번호와 비교한다. 이들 숫자가 일치할 때, 스트림 모니터링 모듈(132)은 대응하는 디코딩 시간 슬롯에 대한 오디오 패킷이 시기적절하다고 결정한다. 반대로, 액세스된 오디오 패킷의 실제 시퀀스 번호가 예상 시퀀스 번호와 일치하지 않으면,스트림 모니터링 모듈(132)은 대응하는 디코딩 시간 슬롯에 대한 오디오 패킷을 손실된 것으로 식별한다.
블록(206)으로 돌아가서, 손실된 오디오 패킷이 검출되면, 블록(212)에서 스트림 모니터링 모듈(132)은 변수 REP_PACKET COUNT를 THRESHOLD와 비교함으로써 동일한 오디오 패킷에 대한 연속된 패킷 디코딩 복제의 최대 수가 수행되었는지 여부를 결정한다. 그렇다면(즉, REP_PACKET_COUNT = THRESHOLD), 손실된 패킷의 중단된 시퀀스에 대한 더 이상의 패킷 디코딩 반복은 허용되지 않으며, 따라서 블록(214)에서 스트림 모니터링 모듈(132)은 오류를 트리거하여 오디오 스트림(및 비디오 스트림이 있는 경우 대응 비디오 스트림)의 재생을 중지하고 시스템 성능 검사를 개시한다. 대안적으로, 클라이언트 디바이스(104)는 오류를 트리거하는 대신에 묵음 삽입, 보간 분석 등과 같은 다른 PLC 기법을 사용하도록 전환할 수 있다. 그러나, 연속 최대 패킷 디코딩 반복보다 적은 횟수가 수행된 경우(즉, REP_PACKET_COUNT < THRESHOLD), 블록(216)에서, 스트림 모니터링 모듈(132)은 패킷 선택기(134)가 지터 버퍼(118)로부터 가장 최근의 시간 슬롯에 대해 이전에 디코딩되었던 오디오 패킷에 액세스하고, 이 액세스된 오디오 패킷을 다가오는 디코딩 시간 슬롯에 대한 오디오 디코더의 입력(136)에 대한 입력 오디오 패킷으로서 제공하게 한다. 스트림 모니터링 모듈(132)은 또한 이 오디오 패킷의 패킷 디코딩 복제가 수행되었음을 반영하기 위해 REP_PACKET_COUNT를 증가시킨다.
블록(218)에서, 오디오 디코더(120)는 블록(206-216)에 의해 표현된 프로세스를 통해 선택된 입력 오디오 패킷, 즉 현재 디코딩 시간 슬롯과 연관된 오디오 패킷(이 패킷이 손실되지 않은 경우) 또는 이전 시간 슬롯에 대해 이전에 디코딩되었던 오디오 패킷(이 시간 슬롯에 대해 의도된 오디오 패킷이 손실된 경우)을 디코딩한다. 오디오 디코더(120)는 입력 오디오 패킷의 인코딩된 오디오 콘텐츠로부터 디코딩된 오디오 신호(122)의 대응하는 세그먼트를 생성한다. 위에서 설명된 바와 같이, 오디오 디코더(120)에 의해 일반적으로 사용되는 오디오 합성 기법은 생성된 각 세그먼트를 다음 세그먼트와 매끄럽게 연결하여, 하나 이상의 패킷이 연속으로 손실된 경우에도 실질적인 불연속성이 없는 디코딩된 오디오 신호(122)를 제공한다. 디코딩된 오디오 신호(122)의 대응하는 세그먼트를 생성하기 위한 오디오 패킷의 디코딩과 동시에, 블록(220)에서 디코딩된 오디오 신호(122)는 추가로 프로세싱될 수 있고(예를 들어, 다른 오디오 신호와 혼합함으로써), 오디오 스트림(114)에 의해 표현되는 오디오 콘텐츠의 재생에 영향을 미치도록 하나 이상의 스피커(124)를 구동하기 위해 사용된 하나 이상의 아날로그 신호로 변환될 수 있다.
도 3은 도 2의 방법(200)에 의해 표현된 프리-디코더 패킷 반복 PLC 프로세스의 예시적인 동작을 도시하는 차트(300)를 도시한다. 차트(300)의 7개의 수직 행은 클라이언트 디바이스(104)의 오디오 디코더(120)에 대한 7개의 디코딩 시간 슬롯을 나타내며, 시간 슬롯 A, B, C, D, E, F 및 G로 식별되며, 시간 슬롯 A가 가장 빠른 시간 슬롯이고, 시간 슬롯 G는 가장 늦은 시간 슬롯이다. 행(310)은 각각의 대응하는 타임 슬롯 A-G에 대한 오디오 패킷을 생성할 때 서버(102)의 액션을 나타내고, 행(312)는 각각의 대응하는 시간 슬롯에 대해 서버(102)로부터 오디오 패킷을 수신할 때 클라이언트 디바이스(104)의 액션을 나타내며, 행(314)은 오디오 패킷을 디코딩하고 결과적인 디코딩된 오디오 신호 세그먼트의 재생을 제공할 때 클라이언트 디바이스의 액션을 나타낸다.
행(310)에 의해 도시된 바와 같이, 서버는 각각 시간 슬롯 A, B, C, D, E, F 및 G에 대한 오디오 패킷(301, 302, 303, 304, 305, 306, 307)을 생성 및 전송한다. 행(312 및 314)로 표현되는 바와 같이, 클라이언트 디바이스 측에서, 시간 슬롯 A에 대해, 오디오 패킷(301)이 수신(손실 또는 지연 도착 없이)되고, 버퍼링되고, 디코딩되고, 디코딩된 오디오 신호의 결과 세그먼트가 정상 동작에 따라 재생된다. 마찬가지로, 시간 슬롯 B의 경우, 오디오 패킷(302)이 수신되고(손실 또는 지연 도착 없이), 버퍼링되고, 디코딩되고, 디코딩된 오디오 신호의 결과 세그먼트는 정상 동작에 따라 재생된다. 그러나, 시간 슬롯 C의 경우, 연관된 오디오 패킷(303)은 네트워크(106)에 의해 손실된다. 따라서, 스트림 모니터링 모듈(132)은 오디오 패킷(303)의 손실된 상태를 기록하고, 따라서 패킷 선택기(134)가 이전 시간 슬롯 B에 대해 디코딩된 오디오 패킷, 즉 오디오 패킷(302)에 액세스하고 이 오디오 패킷(302)을 시간 슬롯 C에 대한 디코딩된 오디오 신호의 대응하는 세그먼트로 다시 디코딩하기 위한 오디오 디코더(120)에 제공하게 한다. 따라서, 오디오 패킷(302)의 오디오 콘텐츠는 결과적으로 디코딩된 오디오 신호의 2개의 연속적인 세그먼트를 생성하기 위해 두 번 디코딩되며, 한 번은 연관 시간 슬롯 B에 대해 그리고 다시 후속 시간 슬롯 C에 대해 손실된 오디오 패킷(303)을 채우기 위해 다시 디코딩되어, 시간 슬롯 B 및 C에 대응하는 세그먼트에 대한 오디오 신호를 재구성한다.
그 후, 시간 슬롯 D에 대해, 연관된 오디오 패킷(304)은 정시에 수신되고, 따라서 오디오 디코더(120)에 의해 디코딩된 오디오 신호의 대응하는 세그먼트로 디코딩하기 위해 제공된다. 후속하는 2개의 시간 슬롯 E 및 F에 대해, 연관 오디오 패킷(305 및 306)은 각각의 시간 슬롯에서 디코딩을 위해 정시에 수신되지 않고 대신 후속 시간 슬롯 G 동안 늦게 수신된다. 따라서 시간 슬롯 E에 대해, 클라이언트 디바이스(104)는 디코딩된 오디오 신호의 대응하는 세그먼트를 디코딩하기 위해 오디오 패킷(304)의 오디오 콘텐츠를 재사용하고, 오디오 패킷(304)은 시간 슬롯 F에 대한 디코딩된 오디오 신호의 다른 세그먼트를 생성하기 위해 세 번째 디코딩을 위해 다시 선택된다. 오디오 패킷(305, 306, 307)의 3개 모두는 시간 슬롯 G에 대해 제시간에 수신되는 반면, 오디오 패킷(305 및 306)은 이전 시간 슬롯과 연관되어 지터 버퍼(118)에서 폐기되고 오디오 디코더(120)는 오디오 패킷(307)을 디코딩하여 시간 슬롯 G에 대응하는 디코딩된 오디오 신호의 세그먼트를 생성한다.
일부 실시예에서, 전술한 기법의 일정 양태는 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체에 저장되거나 그렇지 않으면 유형적으로 수록된 하나 이상의 실행가능한 명령어들의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때 전술한 기법들 중 하나 이상의 양태를 수행하기 위해 하나 이상의 프로세서를 조작하는 명령어 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체는, 예를 들어 자기 또는 광 디스크 저장 디바이스, 플래시 메모리와 같은 솔리드 스테이트 저장 디바이스, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체에 저장된 실행가능한 명령어는 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서들에 의해 해석되거나 실행가능한 다른 명령어 포맷일 수 있다.
컴퓨터 판독가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용 중에 컴퓨터 시스템에 의해 액세스가능한 임의의 저장 매체, 또는 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, ROM(read-only memory) 또는 플래시 메모리), 또는 MEMS(microelectromechanical systems) 기반 저장 매체를 포함할 수 있으나, 이에 한정되지 않는다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 시스템에 내장되고(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되고(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 제거 가능하게 부착되거나(예를 들어, 광 디스크 또는 범용 직렬 버스(USB) 기반 플래시 메모리) 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 연결될 수 있다(예를 들어, NAS(Network Access Storage)).
일반적 설명에서 상술된 모든 활동 또는 요소가 요구되는 것은 아니며, 특정 활동 또는 디바이스의 일부가 요구되지 않을 수 있으며, 하나 이상의 추가 활동이 수행될 수 있거나 또는 요소가 설명된 것들에 더하여 포함될 수 있다. 또한, 활동들이 나열된 순서는 반드시 그들이 수행되어야 하는 순서가 아니다. 또한, 개념들이 특정 실시예들을 참조하여 설명되었다. 그러나, 통상의 기술자는 아래의 청구 범위에 기재된 본 개시의 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음을 인식한다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미로 간주되어야하고, 그러한 모든 수정은 본 개시의 범위 내에 포함되는 것으로 의도된다.
특정 실시예들과 관련하여 이점들, 다른 장점들 및 문제들에 대한 해결책들이 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책 및 이점, 장점 또는 해결책이 발생하거나 더 두드러지게 할 수 있는 구성(들)은 임의의 또는 모든 청구항들의 중요, 필수 또는 기본 구성으로서 해석되어서는 안된다. 또한, 개시된 주제는 수정될 수 있고, 다르게 그러나 본 명세서의 교시의 이익을 가지며 통상의 기술자에게 명백한 균등한 방식으로 실행될 수 있으므로, 상기 개시된 특정한 실시예들은 예시적인 것이다. 아래의 청구 범위에 기재된 것 이외의 본 명세서에 도시된 구성 또는 설계의 세부 사항에 대한 제한은 의도되지 않았다. 따라서, 상기 개시된 특정한 실시예는 변경되거나 수정될 수 있으며, 이러한 모든 변형은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 요구되는 보호는 아래의 청구 범위에 기술된 바와 같다.

Claims (19)

  1. 전자 디바이스로서,
    네트워크를 통해 오디오 패킷의 스트림을 수신하도록 구성된 네트워크 인터페이스;
    상기 스트림의 오디오 패킷의 서브세트를 일시적으로 버퍼링하도록 구성된 버퍼;
    상기 버퍼로부터 오디오 패킷을 수신하기 위한 입력 및 디코딩된 오디오 데이터 스트림의 대응하는 세그먼트를 제공하기 위한 출력을 갖는 오디오 디코더; 및
    손실되거나 지연된 오디오 패킷의 디코딩 대신에 반복된 디코딩을 위해 상기 오디오 디코더에 의해 이전에 디코딩되었던 상기 버퍼 내의 서브세트의 오디오 패킷을 다시 상기 오디오 디코더의 입력에 제공하도록 구성된 스트림 모니터링 모듈을 포함하는 전자 디바이스.
  2. 청구항 1에 있어서, 상기 스트림 모니터링 모듈은 상기 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과하지 않는다는 결정에 추가로 응답하여, 반복된 디코딩을 위해 상기 디코더에 의해 이전에 디코딩되었던 상기 오디오 패킷을 다시 상기 디코더의 입력에 제공하도록 구성되는, 전자 디바이스.
  3. 청구항 2에 있어서, 상기 스트림 모니터링 모듈은 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 오류를 트리거하도록 더 구성되는, 전자 디바이스.
  4. 청구항 2에 있어서, 상기 스트림 모니터링 모듈은 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 손실되거나 지연된 오디오 패킷을 보상하기 위한 대안적인 패킷 손실 은닉 프로세스를 구현하도록 더 구성되는, 전자 디바이스.
  5. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 스트림 모니터링 모듈은:
    상기 전자 디바이스에서 적시에 수신된 제1 오디오 패킷에 대해, 제1 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제1 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하고; 그리고
    지연되거나 손실된 제2 오디오 패킷에 대해, 제2 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제2 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하도록 구성되는, 전자 디바이스.
  6. 청구항 5에 있어서, 상기 오디오 디코더는 상기 제1 세그먼트와 상기 제2 세그먼트 사이의 연속성을 제공하도록 구성되는, 전자 디바이스.
  7. 청구항 5 또는 6에 있어서, 상기 스트림 모니터링 모듈은:
    지연되거나 손실된 제3 오디오 패킷에 대해, 제3 시간 슬롯에 대한 디코딩된 오디오 신호의 대응하는 제3 세그먼트로 디코딩하기 위해 상기 오디오 디코더에 상기 제1 오디오 패킷을 제공하도록 구성되는, 전자 디바이스.
  8. 청구항 7에 있어서, 상기 오디오 디코더는 상기 제2 세그먼트와 상기 제3 세그먼트 사이의 연속성을 제공하도록 구성되는, 전자 디바이스.
  9. 청구항 1 내지 8 중 어느 한 항에 있어서, 상기 오디오 패킷의 스트림은 상기 네트워크를 통해 상기 전자 디바이스에 연결된 서버에서 실행되는 비디오 게임 애플리케이션에 의해 생성된 오디오 콘텐츠로부터 생성되는, 전자 디바이스.
  10. 상기 오디오 패킷의 스트림을 생성하기 위한 서버 및 청구항 1 내지 9 중 어느 한 항의 전자 디바이스를 포함하는, 시스템.
  11. 컴퓨터로 구현되는 방법으로서,
    네트워크로부터 오디오 패킷의 스트림을 수신하는 단계;
    상기 오디오 패킷의 서브세트를 일시적으로 버퍼링하는 단계;
    오디오 디코더에서, 디코딩된 오디오 데이터 스트림의 제1 세그먼트를 생성하기 위해 상기 서브세트의 제1 오디오 패킷을 디코딩하는 단계; 및
    상기 스트림의 제1 오디오 패킷에 후속하는 제2 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 오디오 디코더에서, 상기 디코딩된 오디오 신호의 제2 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 다시 디코딩하는 단계를 포함하며, 상기 제2 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제1 세그먼트에 후속하는, 방법.
  12. 청구항 11에 있어서,
    상기 스트림의 제2 오디오 패킷에 후속하는 제3 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 오디오 디코더에서, 상기 디코딩된 오디오 신호의 제3 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 세 번째로 디코딩하는 단계를 포함하며, 상기 제3 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제2 세그먼트에 후속하는, 방법.
  13. 청구항 11 또는 청구항 12에 있어서, 상기 제1 오디오 패킷을 다시 디코딩하는 단계는 상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과하지 않았다는 결정에 응답하여 이루어지는, 방법.
  14. 청구항 13에 있어서,
    상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 오류를 트리거하는 단계를 더 포함하는, 방법.
  15. 청구항 13에 있어서,
    상기 제1 오디오 패킷이 연속으로 디코딩된 횟수가 특정 임계값을 초과한 것에 응답하여 손실되거나 지연된 제2 오디오 패킷을 보상하기 위한 대안적인 패킷 손실 은닉 프로세스를 구현하는 단계를 더 포함하는, 방법.
  16. 청구항 11 내지 15 중 어느 한 항에 있어서, 상기 오디오 디코더는 상기 제1 세그먼트와 연속성을 갖도록 제2 세그먼트를 생성하는, 방법.
  17. 청구항 11 내지 16 중 어느 한 항에 있어서, 상기 오디오 패킷의 스트림은 서버에서 실행되는 비디오 게임 애플리케이션에 의해 생성된 오디오 콘텐츠로부터 생성되는, 방법.
  18. 오디오 패킷을 버퍼링하는 버퍼 및 오디오 패킷을 디코딩하는 디코더를 포함하는 전자 디바이스로서, 상기 전자 디바이스는 청구항 11 내지 17 중 어느 한 항의 방법을 수행하도록 구성된, 전자 디바이스.
  19. 프로세서를 조작하도록 구성된 실행가능한 명령어 세트를 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 프로세서는:
    디코딩된 오디오 신호의 제1 세그먼트를 생성하기 위해 네트워크를 통해 수신된 스트림의 오디오 패킷의 일시적으로 버퍼링된 서브세트의 제1 오디오 패킷을 디코딩하고; 그리고
    상기 스트림의 제1 오디오 패킷에 후속하는 제2 오디오 패킷이 손실되거나 지연되었다는 것을 검출함에 응답하여, 상기 디코딩된 오디오 신호의 제2 세그먼트를 생성하기 위해 상기 제1 오디오 패킷을 다시 디코딩하도록 구성되며, 상기 제2 세그먼트는 상기 디코딩된 오디오 신호에서 상기 제1 세그먼트에 후속하며 상기 제1 세그먼트와 연속성을 갖는, 비일시적 컴퓨터 판독가능 매체.
KR1020227020577A 2020-04-01 2020-12-07 디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉 KR20220104198A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063003370P 2020-04-01 2020-04-01
US63/003,370 2020-04-01
PCT/US2020/063618 WO2021201926A1 (en) 2020-04-01 2020-12-07 Audio packet loss concealment via packet replication at decoder input

Publications (1)

Publication Number Publication Date
KR20220104198A true KR20220104198A (ko) 2022-07-26

Family

ID=74046198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227020577A KR20220104198A (ko) 2020-04-01 2020-12-07 디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉

Country Status (5)

Country Link
US (1) US20220392459A1 (ko)
EP (1) EP4014233A1 (ko)
JP (1) JP2023514901A (ko)
KR (1) KR20220104198A (ko)
WO (1) WO2021201926A1 (ko)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3118953B2 (ja) * 1992-05-12 2000-12-18 松下電器産業株式会社 音声信号補間装置
US7069208B2 (en) * 2001-01-24 2006-06-27 Nokia, Corp. System and method for concealment of data loss in digital audio transmission
US20050049853A1 (en) * 2003-09-01 2005-03-03 Mi-Suk Lee Frame loss concealment method and device for VoIP system
JP2007010855A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 音声再生装置
US8386246B2 (en) * 2007-06-27 2013-02-26 Broadcom Corporation Low-complexity frame erasure concealment
US8185388B2 (en) * 2007-07-30 2012-05-22 Huawei Technologies Co., Ltd. Apparatus for improving packet loss, frame erasure, or jitter concealment
JP5599487B2 (ja) * 2013-04-24 2014-10-01 パナソニック株式会社 Adpcm音声伝送システムの音声処理装置およびその音声処理方法
KR102242260B1 (ko) * 2014-10-14 2021-04-20 삼성전자 주식회사 이동 통신 네트워크에서 음성 품질 향상 방법 및 장치
US10320693B2 (en) * 2016-07-06 2019-06-11 Qualcomm Incorporated Method for packet data convergence protocol count synchronization
US10037761B1 (en) * 2017-06-05 2018-07-31 Intel IP Corporation Audio decoder state update for packet loss concealment
US10726851B2 (en) * 2017-08-31 2020-07-28 Sony Interactive Entertainment Inc. Low latency audio stream acceleration by selectively dropping and blending audio blocks
US20190081719A1 (en) * 2017-09-12 2019-03-14 Dolby Laboratories Licensing Corporation Packet Loss Concealment for Critically-Sampled Filter Bank-Based Codecs Using Multi-Sinusoidal Detection
CN109524015B (zh) * 2017-09-18 2022-04-15 杭州海康威视数字技术股份有限公司 音频编码方法、解码方法、装置及音频编解码系统
US10652121B2 (en) * 2018-02-26 2020-05-12 Genband Us Llc Toggling enhanced mode for a codec
US20200020342A1 (en) * 2018-07-12 2020-01-16 Qualcomm Incorporated Error concealment for audio data using reference pools

Also Published As

Publication number Publication date
US20220392459A1 (en) 2022-12-08
EP4014233A1 (en) 2022-06-22
WO2021201926A1 (en) 2021-10-07
JP2023514901A (ja) 2023-04-12

Similar Documents

Publication Publication Date Title
US9426335B2 (en) Preserving synchronized playout of auxiliary audio transmission
ES2837924T3 (es) Corrección selectiva adelantada de errores para códecs de audio espaciales
US9602918B2 (en) Stream caching for audio mixers
KR101314242B1 (ko) 가상적인 fec 디코더 및 디코딩 제어를 위한 시그널링
US8300667B2 (en) Buffer expansion and contraction over successive intervals for network devices
JP2006345582A (ja) メディアデータをストリーミングする方法、システム及びクライアント装置
JP2021522718A (ja) ライブブロードキャスティングに対する適応ビットレート方法
KR20090001370A (ko) 코덱의 구성 설정 방법 및 이를 적용한 코덱
US11743535B2 (en) Video fragment file processing
US20170331756A1 (en) Interactivity driven error correction for audio communication in lossy packet-switched networks
WO2005122455A1 (ja) 双方向通信方法と装置、システムならびにプログラム
JP2018011365A (ja) ストリーミングサービスを提供する方法及び装置
CN110557226A (zh) 一种音频传输方法和装置
KR20220104198A (ko) 디코더 입력시 패킷 복제를 통한 오디오 패킷 손실 은닉
US9437203B2 (en) Error concealment for speech decoder
KR101904422B1 (ko) 코덱의 구성 설정 방법 및 이를 적용한 코덱
JP2007006359A (ja) 復号化装置,復号化方法及びデジタル音声通信システム
CN114079534B (zh) 编码、解码方法、装置、介质和电子设备
US11855775B2 (en) Transcoding method and apparatus, medium, and electronic device
KR102049348B1 (ko) VoIP를 활용한 네트워크 기반의 선택적 품질의 음원 방송을 위한 기법
KR101645294B1 (ko) 코덱의 구성 설정 방법 및 이를 적용한 코덱
CN114520687A (zh) 应用于卫星系统的音频数据处理方法、装置及设备
KR20160096059A (ko) 코덱의 구성 설정 방법 및 이를 적용한 코덱