KR20060087612A - 스트림 언더런/오버런 복구 - Google Patents

스트림 언더런/오버런 복구 Download PDF

Info

Publication number
KR20060087612A
KR20060087612A KR1020067010237A KR20067010237A KR20060087612A KR 20060087612 A KR20060087612 A KR 20060087612A KR 1020067010237 A KR1020067010237 A KR 1020067010237A KR 20067010237 A KR20067010237 A KR 20067010237A KR 20060087612 A KR20060087612 A KR 20060087612A
Authority
KR
South Korea
Prior art keywords
packet
stream
sample blocks
packet length
complete sample
Prior art date
Application number
KR1020067010237A
Other languages
English (en)
Other versions
KR100874286B1 (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 KR20060087612A publication Critical patent/KR20060087612A/ko
Application granted granted Critical
Publication of KR100874286B1 publication Critical patent/KR100874286B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/0018Speech coding using phonetic or linguistical decoding of the source; Reconstruction using text-to-speech synthesis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Holding Or Fastening Of Disk On Rotational Shaft (AREA)
  • Seasonings (AREA)
  • Colloid Chemistry (AREA)
  • Measurement Of Radiation (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)

Abstract

스트림 언더런(under-run) 및/또는 오버런(over-run) 상태들로부터 복구하기 위한 머신 판독가능 매체(machine-readable media), 방법들, 및 장치가 기술된다. 소정의 실시예들에서, 오디오 컨트롤러는 스트림의 임의의 불완전한 샘플 블록을 폐기할 수 있다.
스트림 언더런/오버런, 복구, 오디오 컨트롤러, 데이터 스트리밍, TBR 값

Description

스트림 언더런/오버런 복구{STREAM UNDER-RUN/OVER-RUN RECOVERY}
오디오 코덱은 오디오 컨트롤러가 수용하도록 프로그램된 것보다 많은 샘플들을 오디오 컨트롤러에 제공할 수 있다. 만약 오디오 컨트롤러가 부가적인 샘플들을 수용할 수 없다면, 부가적인 샘플들은 오버런 때문에 상실될 수 있다. 거꾸로, 만약 오디오 컨트롤러가 수용하도록 프로그램된 것보다 적은 데이터를 오디오 코덱이 오디오 컨트롤러에 제공한다면, 오디오 컨트롤러는 언더런 때문에 오디오 코덱으로부터의 다른 데이터를 하나 또는 그 이상의 샘플이라고 판단할 것이다. 언더런과 오버런 상태 양쪽 모두는 오디오의 품질을 감소시키고 및/또는 오류 상태들을 유발할 수 있다.
본원에 기술된 발명은 첨부 도면들에서 한정으로서가 아니라 예로서 예시되었다. 예시의 단순성 및 명료성을 위해, 도면들에서 예시된 요소들은 반드시 일정한 비율로 그려지지는 않았다. 예를 들면, 소정의 요소들의 치수는 명료성을 위해 다른 요소들에 비해 과장될 수 있다. 또한, 적절하다고 생각된 곳에서는, 대응하거나 유사한 요소들을 나타내기 위해서 참조 부호들이 도면들 중에서 반복되었다.
도 1은 오디오 컨트롤러를 갖춘 컴퓨팅 디바이스의 실시예를 예시한다.
도 2는 도 1의 오디오 컨트롤러에 의해 전송된 프레임의 실시예를 예시한다.
도 3은 도 1의 오디오 컨트롤러의 흐름 제어 방법의 실시예를 예시한다.
다음의 설명은 데이터 스트리밍 기법들을 설명한다. 다음의 설명에서, 논리 구현들, 연산코드들, 피연산자들을 특정하기 위한 수단, 자원 분할/공유/중복 구현들, 시스템 구성요소들의 유형들 및 상호관계들, 및 논리 분할/통합 선택들과 같은 다수의 특정한 세부사항들이 본 발명의 보다 완전한 이해를 제공하기 위해 개시된다. 그러나 본 기술분야의 당업자는 본 발명이 그러한 특정한 세부사항들 없이도 실시될 수 있다는 것을 이해할 것이다. 다른 예들에서, 제어 구조들, 게이트 레벨의 회로들 및 전체 소프트웨어 명령 시퀀스들은 본 발명을 모호하게 하지 않기 위해 세부적으로 도시되지 않았다. 본 기술분야의 당업자들은 포함된 설명들을 가지고, 과도한 실험없이 적절한 기능을 구현할 수 있을 것이다.
본 명세서에서 "일 실시예", "실시예", "예시적인 실시예" 등에 대한 언급은, 기술된 실시예가 특별한 특징, 구조 또는 특성을 포함할 수 있지만, 모든 실시예가 반드시 그 특별한 특징, 구조 또는 특성을 포함하지 않을 수도 있다는 것을 나타낸다. 게다가, 그러한 표현들은 반드시 동일한 실시예를 가리키지는 않는다. 또한, 어떤 특별한 특징, 구조 또는 특성이 한 실시예와 관련되어 기술될 때, 명백하게 기술되었건 아니건 다른 실시예들과 관련하여 그러한 특징, 구조 또는 특성을 실시하는 것은 본 기술 분야의 당업자의 지식 안에 있다고 여겨진다.
본 발명의 실시예들은 하드웨어, 펌웨어, 소프트웨어 또는 그들의 임의의 조합으로 구현될 수 있다. 본 발명의 실시예들은 하나 또는 그 이상의 프로세서들에 의해 판독 및 실행될 수 있는 머신 판독가능 매체(machine-readable medium)에 저장된 명령어들로서 구현될 수도 있다. 머신 판독가능 매체는 머신(예를 들면, 컴퓨팅 디바이스)에 의해 판독가능한 형태로 정보를 저장 또는 전달하기 위한 임의의 메카니즘을 포함할 수 있다. 예를 들면, 머신 판독가능 매체는 ROM(read only memory); RAM(random access memory); 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 장치들; 전기, 광, 음향 또는 다른 형태들의 전파되는 신호들(예를 들면, 반송파들, 적외선 신호들, 디지털 신호들 등) 및 다른 것들을 포함할 수 있다.
컴퓨팅 디바이스의 실시예가 도 1에 도시된다. 컴퓨팅 디바이스는 프로세서 버스(104)를 경유하여 서로 연결된 프로세서(100) 및 칩셋(102)을 포함할 수 있다. 칩셋(102)은 프로세서(100)를 메모리(106) 및 오디오 컨트롤러(108)에 연결시키는 하나 또는 그 이상의 집적 회로 패키지들 또는 칩들을 포함할 수 있다. 칩셋(102)은 프로세서를, 하나 또는 그 이상의 버스(112)를 경유하여 예를 들면 BIOS 펌웨어, 키보드들, 마우스들, 저장 디바이스들, 네트워크 인터페이스들 등과 같은 컴퓨팅 디바이스의 다른 구성요소들(110)에 더 연결시킬 수 있다. 일 실시예에서, 칩셋(102)은 메모리 버스(116)를 경유하여 메모리(106)에 액세스하기 위한 메모리 컨트롤러(114)를 포함할 수 있다. 메모리 컨트롤러(114)는 프로세서(100), 오디오 컨트롤러(108), 및 컴퓨팅 디바이스의 다른 구성 요소들(110)과 연관된 메모리 트랜잭션들에 응답하여 메모리(106)에 액세스할 수 있다. 또한, 메모리(106)는, 메모리 컨트롤러(114)가 그로부터 데이터를 판독할 수 있고 및/또는 그에 데이터를 기입할 수 있는 어드레스 가능한 저장 위치들을 제공하는 다양한 메모리 장치들을 포함할 수 있다. 특히, 메모리(106)는 예를 들면, DRAM(Dynamic Random Access Memory) 디바이스들, SDRAM(Synchronous DRAM) 디바이스들, DDR(Double Data Rate) SDRAM 디바이스들, 또는 다른 메모리 장치들과 같은 하나 또는 그 이상의 상이한 유형들의 메모리 장치들을 포함할 수 있다.
오디오 컨트롤러(108)는 메모리(106)와 오디오 코덱들(118) 사이의 데이터 흐름을 제어할 수 있다. 오디오 컨트롤러(108)는 칩셋(102) 안에 통합될 수 있다. 그러나 도시된 바와 같이, 오디오 컨트롤러(108)는 칩셋(102)과 분리될 수도 있다. 그러한 실시예에서, 오디오 컨트롤러(108)는 버스 인터페이스(120), 링크 컨트롤러(122) 및 하나 또는 그 이상의 DMA(direct memory access) 컨트롤러들(124)을 포함할 수 있다. 오디오 컨트롤러(108)의 버스 인터페이스(120)는, 칩셋(102)의 메모리 컨트롤러(114)에 연결된 메모리(106)에 오디오 컨트롤러(108)를 인터페이스하기 위해 칩셋(102)의 버스 인터페이스(120)에 오디오 컨트롤러(108)를 연결할 수 있다.
링크 컨트롤러(122)는, 오디오 컨트롤러(108)와 코덱들(118) 사이의 링크들을 제어함에 의해 오디오 버스(126) 및 오디오 버스(126)에 연결된 코덱들(118)에 대한 인터페이스를 오디오 컨트롤러(108)에 제공할 수 있다. 일 실시예에서, 오디오 버스(126)는 각각의 코덱(118)으로부터 오디오 컨트롤러(108)까지의 하나 또는 그 이상의 지점 간 직렬 입력 링크들을 포함할 수 있다. 오디오 버스(126)는 오디오 컨트롤러(108)로부터 코덱들(118)까지의 방송 직렬 출력 링크를 더 포함할 수 있다. 링크 컨트롤러(122)는 오디오 버스 프로토콜에 따라 오디오 버스(126)의 링크들을 경유하여 프레임들(128)을 생성 및 수신할 수 있다.
일 실시예에서, 각각의 DMA 컨트롤러(124)는, 메모리(106)의 버퍼와 하나 또는 그 이상의 오디오 코덱(118) 사이에서 데이터를 스트림하도록 프로세서(100)에 의해 개별적으로 프로그램될 수 있다. 오디오 코덱들(118)은 컴퓨팅 디바이스에 포함되고 및/또는 다르게 연결되는 사운드 카드들, 모뎀들, 팩스기들, 오디오 캡처 디바이스들 등에 대응할 수 있다. 일 실시예에서, 오디오 코덱들(118)은 칩셋(102)에 통합될 수 있고, 컴퓨팅 디바이스의 메인 보드에 실장될 수 있고, 컴퓨팅 디바이스에 연결된 애드인(add-in) 카드에 실장될 수 있고, 및/또는 컴퓨팅 디바이스의 인터페이스 포트(도시 안됨)에 연결된 예를 들면, 도킹 스테이션(docking station), 오디오 믹서 등과 같은 외부 디바이스의 일부분일 수 있다.
도 2에 예시된 바와 같이, 링크 컨트롤러(122)는 오디오 버스 제어 링크의 제어 신호들(130) 및 오디오 버스 직렬 데이터 입력 링크의 데이터 신호들(132)에 의해 정해진 프레임들(128)을 통해 코덱(118)으로부터 오디오 스트림들을 수신할 수 있다. 특히, 제어 신호들(130)은 프레임(128)의 시작을 나타내는 프레임 싱크들(frame syncs)(134)을 포함할 수 있다. 예시된 바와 같이, 프레임(128)은 커맨드/응답(136), 하나 또는 그 이상의 스트림 태그들(138), 하나 또는 그 이상의 패킷들(140) 및 선택적인 널(null) 필드(142)를 포함할 수 있다. 커맨드/응답(136)은 프레임(128)의 수신기에 소정의 작동을 수행하도록 요구하는 커맨드를 포함할 수 있고, 및/또는 이전의 프레임(128)의 커맨드에 대한 응답을 포함할 수 있다.
일반적으로, 스트림 태그들(138)은 패킷(140)의 시작을 나타낼 수 있고, 어떤 스트림에 패킷(140)이 연관되었는지를 식별할 수 있고, 패킷(140)의 길이를 나타낼 수 있다. 일 실시예에서, 프레임(128)의 각각의 스트림 태그(138)는 어떤 스트림이 패킷(140)과 연관되었는지를 나타내는 스트림 식별자(ID)(144)를 포함할 수 있다. 게다가, 각각의 스트림 태그(138)는 다음에 오는 패킷(140)의 길이(예를 들면, 바이트 수)를 나타내는 실제 패킷 길이(146)를 포함할 수 있다. 스트림 태그들(138)은 코덱(118)이 단일 프레임(128) 동안 다수의 스트림들 및/또는 단일 스트림의 다수의 패킷들(140)을 전송하도록 허용할 수 있다. 게다가, 널 필드(142)는 프레임(128)을 고정된 길이로 또는 소정의 프레임 단위 길이의 배수로 연장하는 패드 비트들/바이트들을 포함할 수 있다. 또 다른 실시예에서, 널 필드(142)는 어떠한 데이터도 전송되지 않는 오디오 링크의 휴지 기간과 연관될 수 있다.
도시된 바와 같이, 각각의 패킷(140)은 하나 또는 그 이상의 샘플 블록들(148) 및 선택적인 널 패드(150)를 포함할 수 있다. 널 패드(150)는 패킷(140)이 고정된 패킷 길이 또는 소정의 패킷 단위 길이의 배수가 되도록 메꿀 수 있다. 또 다른 실시예에서, 널 패드(150)는 어떠한 데이터도 전송되지 않는 오디오 링크의 휴지 기간과 연관될 수 있다. 패킷(140)의 각각의 샘플 블록(148)은 복수의 채널의 각각의 채널에 대한 개별적인 샘플(152)을 포함할 수 있다. 예를 들면, 스테레오 샘플 블록(148)은 스테레오 오디오 신호의 시간에 있어 동일한 샘플 포인트(sample point)와 연관된 우측 채널 샘플(152) 및 좌측 채널 샘플(152)을 포함할 수 있다. 유사하게, 5.1 샘플 블록(148)은 5.1 채널 오디오 신호의 시간에 있어서 동일한 샘플 포인트와 연관된 중앙 채널 샘플(152), 전방 우측 채널 샘플(152), 전방 좌측 채널 샘플(152), 후방 우측 채널 샘플(152), 후방 좌측 채널 샘플(152), 및 베이스 채널 샘플(152)을 포함할 수 있다.
일 실시예에서, 프로세서(100)는 코덱(118)으로부터 메모리(106)의 버퍼로 전달될 스트림의 특성들로 오디오 컨트롤러(108)를 프로그램할 수 있다. 특히, 프로세서(100)는, DMA 컨트롤러(124)를 스트림에 할당할 수 있고, 샘플 길이(예를 들면, 샘플(152)당 비트 수)를 설정할 수 있고, 샘플 블록 길이(예를 들면, 샘플 블록(148)당 샘플들(152)의 수 또는 바이트 수)를 설정할 수 있고, 예상 패킷 길이(예를 들면, 패킷(140)당 바이트 수 또는 샘플 블록들의 수)를 설정하여 코덱(118)이 각각의 패킷(140) 동안 전송할 것으로 예상되는 양을 나타낼 수 있다.
그러한 환경에서, 만약 오디오 컨트롤러(108)가 수용하도록 구성된 예상 패킷 길이보다 큰 실제 패킷 길이(146)를 가지는 패킷(140)을 코덱(118)이 보낸다면 오버런이 발생할 수 있다. 일 실시예에서, 여분의 샘플 블록들(148)은 패킷(140)의 유효한 샘플 블록들(148)이기 때문에, 오디오 컨트롤러(108)는 패킷(140)의 여분의 샘플 블록들(148)을 수용함으로써 위의 오버런으로부터 복구될 수 있다. 오버런/언더런은 코덱(118)이 샘플 블록 길이의 정수배가 아닌 실제 패킷 길이(146)를 갖는 패킷(140)을 보낼 경우에도 발생할 수 있다. 일 실시예에서, 오디오 컨트롤러(108)는 임의의 불완전한 샘플 블록(148)을 버리거나 또는 폐기함으로써 오버런/언더런 상태에서 복구될 수 있다. 또한, 오디오 컨트롤러(108)가 수용하도록 구성된 예상 패킷 길이보다 작은 실제 패킷 길이(146)를 갖는 패킷(140)을 코덱(118)이 보낸다면 언더런이 발생할 수 있다. 일 실시예에서, 보내진 샘플 블록들(148)이 패킷(140)의 유일한 유효 샘플 블록들이기 때문에 오디오 컨트롤러(108)는 패킷(140)의 보내진 샘플 블록들(148)을 단지 수용함으로써 위의 언더런 상태에서 복구될 수 있다.
도 3에, 오디오 컨트롤러(108)가 스트림 오버런들 및/또는 언더런들에서 회복되는 방법의 일 실시예가 도시된다. 박스(200)에서, 프로세서(100)는 오디오 컨트롤러(108)를 프로그램할 수 있고 및/또는 오디오 컨트롤러(108)가 코덱(118)의 오디오 스트림을 처리하도록 다르게 구성될 수 있다. 일 실시예에서, 링크 컨트롤러(122) 및/또는 DMA 컨트롤러(124)에 스트림에 대한 스트림 ID(144)를 제공함으로써 프로세서(100)는 오디오 컨트롤러(108)의 DMA 컨트롤러(124)에 스트림을 할당할 수 있다. 게다가, 프로세서(100)는 링크 컨트롤러 및/또는 DMA 컨트롤러(124)에 스트림의 예상 패킷 길이, 샘플 블록 길이, 및 샘플 길이를 제공할 수 있다.
박스(202)에서, 오디오 컨트롤러(108)는 코덱(118)으로부터 스트림 ID(144)를 갖는 스트림 태그(138) 및 스트림 태그(138)와 연관된 패킷(140)의 바이트 수를 나타내는 실제 패킷 길이(146)를 수신할 수 있다. 박스(204)에서 링크 컨트롤러(122)는 수신된 실제 패킷 길이(146)에 기초하여 TBR(To Be Received) 값을 갱신할 수 있다. 일 실시예에서, 링크 컨트롤러(122)는, TBR 값을 수신된 실제 패킷 길이(146)와 같도록 설정함으로써 TBR 값을 갱신하여 아직 수신되어야 할 패킷(140)의 바이트 수를 나타낼 수 있다.
박스(206)에서, 링크 컨트롤러(122)는 패킷(140)의 끝이 도달되었는지를 판정할 수 있다. 일 실시예에서, 링크 컨트롤러(122)는 패킷(140)에 대한 TBR 값에 기초하여 패킷(140)의 끝이 도달되었는지를 판정할 수 있다. 특히, 링크 컨트롤러(122)는 TBR 값이 패킷 끝 값(예를 들면, 0)과 소정의 관계(예를 들면, 보다 작거나 같은) 를 갖는 것에 응답하여 패킷(140)의 끝이 도달되었는지를 판정할 수 있다. 링크 컨트롤러(122)는 또 다른 프레임(128)의 시작을 신호하는 프레임 싱크(134) 및/또는 프레임(128)의 또 다른 패킷(140)의 시작을 신호하는 스트림 태그(138)를 검출하는 것에 응답하여 패킷(140)의 끝이 도달되었는지를 판정할 수도 있다.
패킷(140)의 끝을 검출함에 응답하여, 박스(208)에서 링크 컨트롤러(122)는 수신된 패킷(140)의 스트림에 할당된 DMA 컨트롤러(124)가 수신된 완전한 샘플 블록들(148)을 메모리(106)의 버퍼로 전송하게 할 수 있다. 도시된 바와 같이, DMA 컨트롤러(124)는 메모리(106)로 완전한 샘플 블록들(148)을 전송하기에 앞서 스트림이 끝날 때까지 대기할 수 있고 이것은 메모리(106)로의 전송 효율을 증가시킨다. 그러나, 다른 실시예들에서, 완전한 샘플 블록들(148)이 수신되는 때와 완전한 샘플 블록들(148)이 메모리(106)에서 이용가능할 때 사이의 대기 시간을 감소시키기 위해서 DMA 컨트롤러(124)는 보다 자주 완전한 샘플 블록들(148)을 메모리(106)로 전송할 수 있다.
그러나 만약 링크 컨트롤러(122)가 패킷(140)의 끝을 검출하지 못한다면, 패킷(140)의 하나 또는 그 이상의 부가적인 완전한 샘플 블록들(148)이 아직 수신될 수 있는지를 박스(210)에서 링크 컨트롤러(122)가 판정할 수 있다. 일 실시예에서, 링크 컨트롤러(122)는 부가적인 완전한 샘플 블록들(148)이 수신될 수 있다고 TBR 값에 기초하여 판정할 수 있다. 특히, TBR 값이 패킷(140)의 샘플 블록 길이와 소정의 관계(예를 들면, 보다 적거나 동등한)를 갖는다고 판정하는 것에 응답하여 패킷(140)의 부가적인 완전한 샘플 블록들(148)이 수신될 수 있다고 오디오 컨트롤러가 판정할 수 있다. 부가적인 완전한 샘플 블록들(148)이 수신될 수 없다고 판정되는 것에 응답하여, 박스(212)에서 링크 컨트롤러(122)는 패킷(140)의 끝이 검출될 때까지 임의의 수신된 패킷 데이터를 폐기함으로써 불완전한 샘플 블록을 폐기할 수 있다. 일 실시예에서, 다음 프레임(128)의 시작을 신호하는 프레임 싱크(134), 프레임(128)의 또 다른 패킷(140)의 시작을 신호하는 스트림 태그(138), 또는 현재 패킷(140)의 끝을 나타내는 TBR 값을 검출하는 것에 응답하여 패킷(140)의 끝이 도달되었다고 링크 컨트롤러(122)가 판정할 수 있다.
박스(214)에서 링크 컨트롤러(122)는 오디오 코덱(118)으로부터 수신된 데이터를 버퍼할 수 있고 예를 들면 프레임 싱크들과 같은 동기화 이벤트들에 대한 제어 신호(130)를 모니터링할 수 있다. 박스(216)에서, 링크 컨트롤러(122)는 완전한 샘플 블록(148)이 수신되었는지를 판정할 수 있다. 일 실시예에서, 링크 컨트롤러(122)는 정해진 바이트 수를 갖는 샘플 블록(148)을 완전한 샘플 블록(148)으로 분류하고 정해진 바이트 수보다 작은 바이트 수를 갖는 샘플 블록(148)을 불완전한 샘플 블록으로 분류할 수 있다. 완전한 샘플 블록(148)이 수신되었다는 것을 판정하는 것에 응답하여, 박스(218)에서 DMA 컨트롤러(124)는 완전한 샘플 블록(148)을 수용할 수 있고 그에 따라 TBR 값을 갱신할 수 있다. 일 실시예에서, DMA 컨트롤러(124)는 TBR 값에서 샘플 블록 길이 또는 완전한 샘플 블록(148)의 바이트 수를 감산함으로써 TBR 값을 갱신할 수 있다. DMA 컨트롤러(124)는 그 후 패킷(140)의 끝이 도달했는지를 판정하기 위해서 박스(206)로 복귀할 수 있다. 지금까지 오직 불완전한 샘플 블록(148)만이 수신되었다고 판정하는 것에 응답하여, DMA 컨트롤러(124)는 샘플 블록(148)의 잔여분을 수신하기 위해 박스(214)로 복귀할 수 있다.
본 발명의 소정의 특징들이 예시적인 실시예들과 관련하여 설명되었다. 그러나, 그 설명은 한정하는 의미로 해석되도록 의도되지 않았다. 본 발명의 다른 실시예들과 마찬가지로, 예시적인 실시예들의 다양한 수정들이, 본 발명이 속하는 기술분야의 당업자들에게 명백하고, 본 발명의 사상 및 범위 내에 있는 것으로 생각된다.

Claims (26)

  1. 스트림의 하나 또는 그 이상의 샘플 블록들을 포함하는 패킷을 수신하는 단계, 및
    상기 패킷의 끝을 검출한 후 남아있는 상기 패킷의 임의의 불완전한 샘플 블록을 폐기하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 패킷에 대한 실제 패킷 길이를 수신하는 단계, 및
    상기 실제 패킷 길이에 기초하여 상기 패킷의 상기 끝을 검출하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 스트림의 싱크(sync) 신호를 수신하는 것에 응답하여 상기 패킷의 상기 끝을 검출하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 스트림의 또 다른 패킷을 검출하는 것에 응답하여 상기 패킷의 상기 끝을 검출하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이를 수신하는 단계,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 실제 패킷 길이를 수신하는 단계, 및
    상기 예상 패킷 길이가 상기 실제 패킷 길이보다 적은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 실제 패킷 길이가 나타내는 완전한 샘플 블록들의 개수를 수용하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이를 수신하는 단계,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 실제 패킷 길이를 수신하는 단계, 및
    상기 예상 패킷 길이가 상기 실제 패킷 길이보다 많은 완전한 샘플 블록을 나타냄에도 불구하고 상기 실제 패킷 길이가 나타내는 상기 패킷의 완전한 샘플 블록들의 개수만을 수용하는 단계
    를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 패킷의 완전한 샘플 블록들만을 메모리의 버퍼로 전송하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    정해진 바이트 수 미만을 갖는 임의의 샘플 블록을 불완전한 샘플 블록으로 분류하는 단계를 더 포함하는 방법.
  9. 메모리에 액세스하기 위한 메모리 인터페이스,
    복수의 샘플 블록을 포함하는 패킷을 수신하고, 상기 패킷의 불완전한 샘플 블록을 폐기하는 링크 컨트롤러,
    상기 링크 컨트롤러로부터 완전한 샘플 블록들을 수신하고 상기 메모리 인터페이스를 경유하여 상기 메모리로 상기 완전한 샘플 블록들을 전송하기 위한 DMA(direct memory access) 컨트롤러
    를 포함하는 장치.
  10. 제9항에 있어서,
    상기 링크 컨트롤러는 정해진 바이트 수 미만을 갖는 임의의 샘플 블록을 불완전한 샘플 블록으로 더 분류하는 장치.
  11. 제9항에 있어서,
    상기 링크 컨트롤러는,
    상기 패킷에 대한 스트림 식별자를 수신하고,
    DMA 컨트롤러가 상기 스트림 식별자와 연관된 스트림들을 처리하도록 구성되었다고 판정하는 것에 응답하여 상기 완전한 샘플 블록들을 상기 DMA 컨트롤러로 전송하는 장치.
  12. 제9항에 있어서,
    상기 링크 컨트롤러는,
    상기 스트림의 각각의 패킷에 대해 예상되는 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이로 구성되고,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 실제 패킷 길이를 수신하고,
    상기 예상되는 패킷 길이가 상기 실제 패킷 길이보다 적은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 실제 패킷 길이가 나타내는 완전한 샘플 블록들의 개수를 수용하는 장치.
  13. 제9항에 있어서,
    상기 링크 컨트롤러는,
    상기 스트림의 각각의 패킷에 대해 예상되는 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이로 구성되고,
    상기 패킷에 대한 완전한 샘플 블록들의 개수를 나타내는 실제 패킷 길이를 수신하고,
    상기 예상 패킷 길이가 상기 실제 패킷 길이보다 많은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 실제 패킷 길이가 나타내는 완전한 샘플 블록들의 개수만을 수용하는 장치.
  14. 제9항에 있어서,
    상기 패킷의 각각의 샘플 블록은 제1 오디오 채널에 대한 제1 샘플 및 제2 오디오 채널에 대한 제2 샘플을 적어도 포함하는 장치.
  15. 제14항에 있어서,
    상기 링크 컨트롤러는 정해진 바이트 수 이하를 갖는 각각의 샘플 블록을 불완전한 샘플 블록으로 분류하는 장치.
  16. 프로세서, 메모리, 오디오 컨트롤러, 및 오디오 코덱(codec)을 포함하는 시스템으로서,
    상기 프로세서는, 상기 오디오 컨트롤러에 스트림에 대한 스트림 식별자 및 상기 스트림의 샘플 블록 길이를 제공함으로써 상기 오디오 코덱의 스트림을 처리 하기 위한 상기 오디오 컨트롤러를 구성하고, 및
    상기 오디오 컨트롤러는, 연관된 스트림 식별자를 갖는 패킷을 수신하는 것에 응답하여, 상기 스트림의 상기 샘플 블록 길이에 기초하여 상기 패킷의 샘플 블록들을 분류하고, 완전한 샘플 블록으로 분류된 샘플 블록을 상기 메모리로 전송하고, 불완전한 샘플 블록으로 분류된 샘플 블록을 폐기하는 시스템.
  17. 제16항에 있어서,
    상기 오디오 컨트롤러는 상기 샘플 블록 길이에 의해 정해진 바이트 수 미만을 갖는 샘플 블록을 불완전한 샘플 블록으로 분류하는 시스템.
  18. 제16항에 있어서,
    상기 프로세서는 상기 메모리의 상기 스트림에 대한 버퍼를 할당하고, 상기 메모리의 또 다른 스트림에 대한 또 다른 버퍼를 할당하고, 상기 또 다른 스트림을 처리하도록 상기 오디오 컨트롤러를 구성하고,
    상기 오디오 컨트롤러는 상기 스트림에 대한 상기 버퍼로 상기 스트림의 완전한 샘플 블록을 전송하고, 상기 또 다른 스트림에 대한 상기 또 다른 버퍼로 상기 또 다른 스트림의 완전한 샘플 블록을 전송하는 시스템.
  19. 제18항에 있어서,
    상기 오디오 컨트롤러는 상기 스트림 및 상기 또 다른 스트림을 상기 오디오 코덱으로부터 수신하는 시스템.
  20. 제18항에 있어서,
    상기 오디오 컨트롤러는 상기 오디오 코덱으로부터 상기 스트림을 수신하고 또 다른 오디오 코덱으로부터 상기 또 다른 스트림을 수신하는 시스템.
  21. 제16항에 있어서,
    상기 프로세서는, 상기 스트림의 각각의 패킷에 대하여 예상되는 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이를 상기 오디오 컨트롤러에 더 제공함으로써 상기 스트림에 대해 상기 오디오 컨트롤러를 구성하고,
    상기 오디오 컨트롤러는 상기 예상 패킷 길이가 실제 패킷 길이보다 적은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 오디오 코덱에 의해 제공되는 상기 실제 패킷 길이가 나타내는 완전한 샘플 블록들의 개수를 상기 메모리로 전송하는 시스템.
  22. 제16항에 있어서,
    상기 프로세서는, 상기 스트림의 각각의 패킷에 대해 예상되는 완전한 샘플 블록들의 개수를 나타내는 예상 패킷 길이를 상기 오디오 컨트롤러에 더 공급함으로써 상기 스트림에 대해 상기 오디오 컨트롤러를 구성하고,
    상기 오디오 컨트롤러는 상기 예상 패킷 길이가 실제 패킷 길이보다 많은 완 전한 샘플 블록들을 나타냄에도 불구하고 상기 오디오 코덱에 의해 제공되는 상기 실제 패킷 길이가 나타내는 완전한 샘플 블록들의 수만을 상기 메모리로 전송하는 시스템.
  23. 복수의 명령어를 포함하는 머신 판독가능(machine-readable) 매체로서, 상기 명령어는 실행될 때, 디바이스가
    스트림의 복수의 샘플 블록을, 하나 또는 그 이상의 완전한 샘플 블록 및 하나 또는 그 이상의 불완전한 샘플 블록으로 분류하고,
    패킷의 상기 하나 또는 그 이상의 완전한 샘플 블록만을 메모리로 전송하게 하는 머신 판독가능 매체.
  24. 제23항에 있어서,
    상기 복수의 명령어는 실행될 때 상기 디바이스가 상기 패킷의 상기 하나 또는 그 이상의 불완전한 샘플 블록을 버리게 하는 머신 판독가능 매체.
  25. 제24항에 있어서,
    상기 복수의 명령어는 실행될 때 상기 디바이스가, 상기 스트림에 대한 예상 패킷 길이가 실제 패킷 길이보다 적은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 스트림의 패킷에 대한 상기 실제 패킷 길이에 의해 정해진 완전한 샘플 블록들의 개수를 전송하게 하는 머신 판독가능 매체.
  26. 제23항에 있어서,
    상기 복수의 명령어는 실행될 때 상기 디바이스가, 상기 스트림에 대한 예상 패킷 길이가 실제 패킷 길이보다 많은 완전한 샘플 블록들을 나타냄에도 불구하고 상기 스트림의 패킷에 대한 상기 실제 패킷 길이에 의해 정해진 완전한 샘플 블록들의 개수만을 전송하게 하는 머신 판독가능 매체.
KR1020067010237A 2003-11-25 2004-11-10 스트림 언더런/오버런 복구 KR100874286B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/723,135 US7370125B2 (en) 2003-11-25 2003-11-25 Stream under-run/over-run recovery
US10/723,135 2003-11-25
PCT/US2004/037460 WO2005055048A2 (en) 2003-11-25 2004-11-10 Stream under-run/over-run recovery

Publications (2)

Publication Number Publication Date
KR20060087612A true KR20060087612A (ko) 2006-08-02
KR100874286B1 KR100874286B1 (ko) 2008-12-18

Family

ID=34592177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067010237A KR100874286B1 (ko) 2003-11-25 2004-11-10 스트림 언더런/오버런 복구

Country Status (7)

Country Link
US (2) US7370125B2 (ko)
KR (1) KR100874286B1 (ko)
CN (1) CN100382007C (ko)
DE (1) DE112004002178B4 (ko)
GB (1) GB2423845B (ko)
TW (1) TWI287710B (ko)
WO (1) WO2005055048A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568057B2 (en) * 2006-12-19 2009-07-28 Intel Corporation Method and apparatus for maintaining synchronization of audio in a computing system
US7774520B2 (en) * 2006-12-19 2010-08-10 Intel Corporation Method and apparatus for maintaining synchronization of audio in a computing system
TW201005537A (en) * 2008-07-29 2010-02-01 Ralink Technology Corp Controller, method, system and program for direct memory access
EP2507729A4 (en) * 2009-12-04 2017-03-29 TiVo Solutions Inc. Multifunction multimedia device
US8719457B2 (en) * 2011-04-17 2014-05-06 Apple Inc. Efficient connection management in a SAS target
US8869162B2 (en) 2011-04-26 2014-10-21 Microsoft Corporation Stream processing on heterogeneous hardware devices
SG11202003199VA (en) 2017-11-01 2020-05-28 Razer Asia Pacific Pte Ltd Method and apparatus for resampling audio signal

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530941A (en) 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
US5452432A (en) 1990-08-14 1995-09-19 Chips And Technologies, Inc. Partially resettable, segmented DMA counter
US5303302A (en) * 1992-06-18 1994-04-12 Digital Equipment Corporation Network packet receiver with buffer logic for reassembling interleaved data packets
US5794070A (en) 1993-06-30 1998-08-11 Intel Corporation Method and apparatus for fast DMA transfer on an industry standard architecture (ISA) bus
GB2283152A (en) 1993-10-19 1995-04-26 Ibm Audio transmission over a computer network
US5708849A (en) 1994-01-26 1998-01-13 Intel Corporation Implementing scatter/gather operations in a direct memory access device on a personal computer
US5729762A (en) 1995-04-21 1998-03-17 Intel Corporation Input output controller having interface logic coupled to DMA controller and plurality of address lines for carrying control information to DMA agent
US5664197A (en) 1995-04-21 1997-09-02 Intel Corporation Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller
US5805842A (en) 1995-09-26 1998-09-08 Intel Corporation Apparatus, system and method for supporting DMA transfers on a multiplexed bus
US5678009A (en) 1996-02-12 1997-10-14 Intel Corporation Method and apparatus providing fast access to a shared resource on a computer bus
US5838678A (en) * 1996-07-24 1998-11-17 Davis; Joseph W. Method and device for preprocessing streams of encoded data to facilitate decoding streams back-to back
US6131127A (en) 1997-09-24 2000-10-10 Intel Corporation I/O transactions on a low pin count bus
US6157970A (en) 1997-09-24 2000-12-05 Intel Corporation Direct memory access system using time-multiplexing for transferring address, data, and control and a separate control line for serially transmitting encoded DMA channel number
US6119189A (en) 1997-09-24 2000-09-12 Intel Corporation Bus master transactions on a low pin count bus
US6567853B2 (en) * 1997-12-08 2003-05-20 International Business Machines Corporation Scalable I/O system for the efficient transfer of storage device data by a non-server reconnection
US6151654A (en) 1997-12-24 2000-11-21 Intel Corporation Method and apparatus for encoded DMA acknowledges
US6456719B1 (en) * 1998-01-16 2002-09-24 Winbond Electronics Corp. Compressed audio error concealment apparatus and method
US5996038A (en) 1998-01-26 1999-11-30 Intel Corporation Individually resettable bus expander bridge mechanism
US6108743A (en) 1998-02-10 2000-08-22 Intel Corporation Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority
US6275242B1 (en) 1998-12-31 2001-08-14 Intel Corporation Method and apparatus for terminating direct memory access transfers from system memory to a video device
US6363428B1 (en) 1999-02-01 2002-03-26 Sony Corporation Apparatus for and method of separating header information from data in an IEEE 1394-1995 serial bus network
US6401144B1 (en) 1999-02-26 2002-06-04 Intel Corporation Method and apparatus for managing data transfers between peripheral devices by encoding a start code in a line of data to initiate the data transfers
US6283152B1 (en) * 1999-03-01 2001-09-04 Cor-Val, Inc. Multiple sleeve valve assembly
US6385671B1 (en) 1999-03-29 2002-05-07 Intel Corporation Method/apparatus for flushing DMA transmit packet in FIFO when self-ID code generated by counter after bus reset is different than FIFO message self-ID field
US6438686B1 (en) 1999-04-20 2002-08-20 Intel Corporation Method and apparatus for eliminating contention with dual bus masters
GB9915327D0 (en) * 1999-06-30 1999-09-01 Nortel Networks Corp Packet interface and method of packetizing information
US6560657B1 (en) 1999-12-23 2003-05-06 Intel Corporation System and method for controlling peripheral devices
US6567953B1 (en) 2000-03-29 2003-05-20 Intel Corporation Method and apparatus for host-based validating of data transferred between a device and a host
US20020018474A1 (en) * 2000-06-01 2002-02-14 Seabridge Ltd. Efficient packet transmission over ATM
US7042948B2 (en) * 2001-03-05 2006-05-09 Intervideo, Inc. Systems and methods for management of data in a ring buffer for error resilient decoding of a video bitstream
US20040260829A1 (en) * 2001-04-13 2004-12-23 Husak David J. Manipulating data streams in data stream processors
GB0129614D0 (en) 2001-12-11 2002-01-30 Nokia Corp Asynchronous serial data interface
US20040190631A1 (en) * 2003-03-31 2004-09-30 Girish Hulmani PES data processing

Also Published As

Publication number Publication date
DE112004002178B4 (de) 2011-03-17
KR100874286B1 (ko) 2008-12-18
GB2423845B (en) 2007-07-11
US7694044B2 (en) 2010-04-06
CN1882910A (zh) 2006-12-20
TW200528997A (en) 2005-09-01
CN100382007C (zh) 2008-04-16
US20050114564A1 (en) 2005-05-26
TWI287710B (en) 2007-10-01
WO2005055048A2 (en) 2005-06-16
GB0608260D0 (en) 2006-06-07
GB2423845A (en) 2006-09-06
DE112004002178T5 (de) 2008-03-06
WO2005055048A3 (en) 2006-01-12
US7370125B2 (en) 2008-05-06
US20080250183A1 (en) 2008-10-09

Similar Documents

Publication Publication Date Title
US7694044B2 (en) Stream under-run/over-run recovery
US5748613A (en) Communication pacing method
US5958027A (en) Method and system for optimizing the flow of isochronous data and clock rate information
JP3340738B2 (ja) 並行パケットバスに関する方法及び装置
US7403525B2 (en) Efficient routing of packet data in a scalable processing resource
US7346716B2 (en) Tracking progress of data streamer
US6023478A (en) Method and apparatus for communicating data byte streams
US9178692B1 (en) Serial link training method and apparatus with deterministic latency
US6185224B1 (en) System and method for communicating data in a cable network
US7822040B2 (en) Method for increasing network transmission efficiency by increasing a data updating rate of a memory
US8862783B2 (en) Methods and system to offload data processing tasks
CN1227869C (zh) 通信系统、外围设备及控制数据在设备之间流动的方法
KR20110134465A (ko) 데이터 전송 시스템 및 그 데이터 판독 방법
US20050143843A1 (en) Command pacing
US20030163521A1 (en) Program, storage medium, information transmission apparatus, and information transmission method
US7886090B2 (en) Method for managing under-runs and a device having under-run management capabilities
US20230198802A1 (en) Vehicle Control Device and Data Transfer Control Method
JPH03191649A (ja) 高速データ転送の方法とその装置
US20090129355A1 (en) Apparatus of transmitting packets of wireless local network and method for using the same
WO2015105250A1 (en) Method for processing data in storage device and storage device
CN111836024A (zh) 一种基于视频传输的混合网络系统设计
US8643655B2 (en) Method and system for communicating with external device through processing unit in graphics system
US20040019712A1 (en) Semiconductor device and method for controlling data transfer
JP3379377B2 (ja) データ処理システム
US7126983B1 (en) Methods and apparatus for communicating commands and data using logical channels

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20121119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131202

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee