KR102356702B1 - 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템 - Google Patents

호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR102356702B1
KR102356702B1 KR1020150164835A KR20150164835A KR102356702B1 KR 102356702 B1 KR102356702 B1 KR 102356702B1 KR 1020150164835 A KR1020150164835 A KR 1020150164835A KR 20150164835 A KR20150164835 A KR 20150164835A KR 102356702 B1 KR102356702 B1 KR 102356702B1
Authority
KR
South Korea
Prior art keywords
audio processing
processing engine
host cpu
audio
data
Prior art date
Application number
KR1020150164835A
Other languages
English (en)
Other versions
KR20170060409A (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 삼성전자주식회사
Priority to KR1020150164835A priority Critical patent/KR102356702B1/ko
Priority to US15/338,581 priority patent/US10133541B2/en
Priority to CN201611059413.2A priority patent/CN106775556B/zh
Publication of KR20170060409A publication Critical patent/KR20170060409A/ko
Application granted granted Critical
Publication of KR102356702B1 publication Critical patent/KR102356702B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • 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
    • G06F3/165Management of the audio stream, e.g. setting of volume, audio stream path
    • 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/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
    • 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
    • G06F3/162Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
    • 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/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10009Improvement or modification of read or write signals
    • G11B20/10018Improvement or modification of read or write signals analog processing for digital recording or reproduction
    • G11B20/10027Improvement or modification of read or write signals analog processing for digital recording or reproduction adjusting the signal strength during recording or reproduction, e.g. variable gain amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • 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/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/26Pre-filtering or post-filtering
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/10537Audio or video recording
    • G11B2020/10592Audio or video recording specifically adapted for recording or reproducing multichannel signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10805Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer overflow
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10814Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer underrun

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Soundproofing, Sound Blocking, And Sound Damping (AREA)

Abstract

오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템이 개시된다. 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단하고, 판단 결과에 기초하여 제1 프로세스를 수행행하거나 제1 프로세스의 수행을 호스트 CPU에 요청하는 오디오 프로세싱 엔진을 포함할 수 있다.

Description

호스트 CPU 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템{HOST CPU ASSISTED AUDIO PROCESSING METHOD AND COMPUTING SYSTEM PERFORMING THE SAME}
본 개시의 기술적 사상은 오디오 프로세싱 방법에 관한 것으로서, 호스트 CPU 지원형 오디오 프로세싱 방법 및 그 방법을 수행하는 컴퓨팅 시스템에 관한 것이다.
오디오 프로세싱은, 오디오 데이터를 프로세싱함으로써 사운드를 생성하는 오디오 재생(playback) 및 수신된 사운드를 프로세싱함으로써 오디오 데이터를 생성하는 사운드 레코딩(recording)을 포함할 수 있다. 오디오 데이터는 오디오 코덱에 기초하여 압축된 데이터일 수 있고, 오디오 재생은 압축된 소스 오디오 데이터를 오디오 코덱에 기초하여 디코딩하는 동작을 포함할 수 있으며, 사운드 레코딩은 사운드를 오디오 코덱에 기초하여 인코딩하는 동작을 포함할 수 있다. 또한, 오디오 재생은 소스 오디오 데이터가 디코딩됨으로써 생성된 오디오 스트림에 대한 다양한 프로세스들을 수행하는 포스트 프로세싱을 포함할 수 있고, 사운디 레코딩은 사운드로부터 생성된 오디오 스트림 또는 오디오 스트림을 인코딩한 오디오 데이터에 대한 다양한 프로세스들을 수행하는 프리 프로세싱을 포함할 수 있다.
오디오 프로세싱은 프로세서 또는 전용 로직 블록에 의해서 수행될 수 있다. 오디오 재생 또는 사운드 레코딩시, 높은 음질을 제공하기 위하여 오디오 데이터의 용량이 증가하거나 데이터의 압축률이 증가할 수 있다. 또한 다양한 사운드 효과를 위하여 오디오 프로세싱의 복잡도(complexity)가 상승할 수 있다. 따라서, 제한된 시간내에 오디오 데이터로부터 사운드를 출력하거나 사운드로부터 오디오 데이터를 생성하기 위하여, 높은 성능의 하드웨어가 요구될 수 있다. 그러나, 이러한 높은 성능의 하드웨어는 높은 비용뿐만 아니라 높은 전력 소비를 초래할 수 있고, 오디오를 재생 또는 사운드를 레코딩하는 전자 기기, 특히 모바일 전자 기기에서 비용 및 전력에 관한 이슈를 유발할 수 있다.
본 개시의 기술적 사상은 오디오 프로세싱 방법에 관한 것으로서, 컴퓨팅 시스템의 자원을 효율적으로 활용하는 오디오 프로세싱 방법 및 그 방법을 수행하는 컴퓨팅 시스템을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 오디오 프로세싱 방법은, 호스트 CPU 및 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에 의해서 수행될 수 있다. 상기 오디오 프로세싱 방법은, 상기 오디오 프로세싱 엔진에서, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계, 상기 오디오 프로세싱 엔진에서, 상기 판단 결과에 기초하여 상기 제1 프로세스를 수행하거나 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계, 및 상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 제1 프로세스를 수행함으로써 제2 오디오 데이터를 생성하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른, 오디오 프로세싱 방법은, 호스트 CPU 및 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에 의해 수행될 수 있고, 상기 오디오 프로세싱 방법은, 상기 호스트 CPU에서 오디오 데이터에 대한 복수의 프로세스들에 관한 정보를 오디오 프로세싱 엔진에 전달하는 단계, 상기 오디오 프로세싱 엔진에서 상기 복수의 프로세스들의 런타임에 기초하여 상기 복수의 프로세스들의 수행 가능 여부를 판단하는 단계, 상기 오디오 프로세싱 엔진에서 상기 판단 결과에 기초하여 상기 복수의 프로세스들 중 적어도 하나의 프로세스를 수행하거나 상기 적어도 하나의 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계, 및 상기 호스트 CPU에서 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 적어도 하나의 프로세스를 수행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른, 컴퓨터로 읽을 수 있는 하나 이상의 저장 장치들은, 호스트 CPU 및 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에 의해서 오디오 프로세싱 방법을 가능하게 하는 프로그램에 포함된 명령어들을 저장할 수 있고, 상기 오디오 프로세싱 방법은, 상기 오디오 프로세싱 엔진에서, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계, 상기 오디오 프로세싱 엔진에서, 상기 판단 결과에 기초하여 상기 제1 프로세스를 수행하거나 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계, 및 상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 제1 프로세스를 수행함으로써 제2 오디오 데이터를 생성하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른, 오디오 프로세싱이 가능한 컴퓨팅 시스템은, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 상기 제1 프로세스의 수행 가능 여부를 판단하고, 상기 판단 결과에 기초하여 상기 제1 프로세스를 수행하거나 상기 제1 프로세스의 수행을 호스트 CPU에 요청하는 오디오 프로세싱 엔진, 및 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 제1 프로세스를 수행함으로써 제2 오디오 데이터를 생성하는 상기 호스트 CPU를 포함할 수 있다.
본 개시의 기술적 사상에 따른 오디오 재생 방법은, 상대적으로 낮은 성능의 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에서도 높은 복잡도의 오디오 프로세싱을 가능하게 할 수 있다.
본 개시의 기술적 사상에 따른 컴퓨팅 시스템의 동작 방법은, 어플리케이션 프로그램의 추가 및/또는 변경으로써 신규한 오디오 프로세싱을 지원할 수 있으므로 오디오 프로세싱에 대한 컴퓨팅 시스템의 유연성을 증대시킬 수 있다.
본 개시의 기술적 사상에 따른 컴퓨팅 시스템은, 하드웨어 리소스들이 효율적으로 설계됨으로써 컴퓨팅 시스템을 구성하기 위한 비용이 절감될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템의 블록도를 나타낸다.
도 2a 및 도 2b는 오디오 프로세싱을 구성하는 복수의 프로세스들이 수행되는 동작의 예시들을 나타내는 도면이다.
도 3은 본 개시의 예시적 실시예에 따라 도 1의 오디오 프로세싱 엔진의 동작 방법을 나타내는 순서도이다.
도 4는 본 개시의 예시적 실시예에 따라 도 1의 오디오 서브시스템의 예시를 나타내는 블록도이다.
도 5a 및 도 5b는 소스 오디오 데이터에 대하여 복잡도가 높은 프로세스의 수행시 도 4의 스트림 버퍼의 동작들을 나타내는 도면들이다.
도 6은 본 개시의 예시적 실시예에 따라 도 3의 단계 S10의 예시를 나타내는 순서도이다.
도 7a 및 도 7b는 타겟 오디오 데이터를 생성하기 위하여 복잡도가 높은 프로세스의 수행시 도 4의 스트림 버퍼의 동작을 나타내는 도면들이다.
도 8은 본 개시의 예시적 실시예에 따라 도 3의 단계 S10의 예시를 나타내는 순서도이다.
도 9는 본 개시의 예시적 실시예에 따라 도 3의 단계 S30 및 단계 S40에서 호스트 CPU 및 오디오 프로세싱 엔진 사이에서 이동하는 데이터를 나타낸다.
도 10a 및 도 10b는 본 개시의 예시적 실시예에 따른 호스트 CPU 및 오디오 프로세싱 엔진의 동작들을 나타내는 도면들이다.
도 11은 본 개시의 예시적 실시예에 따른 호스트 CPU 및 오디오 프로세싱 엔진의 동작을 나타내는 도면이다.
도 12는 본 개시의 예시적 실시예에 따른 오디오 서브시스템의 블록도이다.
도 13은 본 개시의 예시적 실시예에 따른 도 12의 룩업 테이블의 예시를 나타내는 도면이다.
도 14는 본 개시의 예시적 실시예에 따라 호스트 CPU 및 오디오 프로세싱 엔진 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다.
도 15는 본 개시의 예시적 실시예에 따라 호스트 CPU 및 오디오 프로세싱 엔진 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다.
도 16은 본 개시의 예시적 실시예에 따라 호스트 CPU 및 오디오 프로세싱 엔진 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다.
도 17은 본 개시의 예시적 실시예에 따른 오프로드 오디오 프로세싱 시스템으로서 컴퓨팅 시스템의 블록도를 나타낸다.
도 18은 본 개시의 예시적 실시예에 따른 컴퓨터로 읽을 수 있는 저장 장치를 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(1000)의 블록도를 나타낸다. 도 1을 참조하면, 컴퓨팅 시스템(1000)은, 시스템 버스(500)에 서로 통신 가능하게 연결된 호스트 CPU(central processing unit)(100), 오디오 서브시스템(200), 주변기기들(300), 메모리 서브시스템(400)을 포함할 수 있고, PCM(pulse code modulation) 믹서(600), 스피커(speaker)(700) 및 마이크(microphone)(800)를 포함할 수 있다.
컴퓨팅 시스템(1000)은 비제한적인 예시로서, PC(personal computer), 태블릿 PC(tablet PC), 모바일 폰(mobile phone), 스마트 폰(smart phone), e-리더(e-reader), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camer), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대형 게임 콘솔(handheld game console) 등으로 구현될 수 있다.
컴퓨팅 시스템(1000)은 오디오 데이터(또는 소스 오디오 데이터)로부터 사운드를 출력하거나, 컴퓨팅 시스템(1000) 외부에서 발생하는 사운드를 수신하여 레코딩(recording)함으로써 오디오 데이터(또는 타겟 오디오 데이터)를 생성할 수 있다. 오디오 데이터는 컴퓨터로 읽을 수 있는 저장 장치, 예컨대 반도체 메모리 장치에 저장될 수 있는 디지털 데이터일 수 있고, 오디오 코덱(codec)에 의해서 압축된 데이터일 수 있다. 오디오 데이터는 비제한적인 예시로서, wma, mp3, mpga, rbs, mpeg3, wav, ra, rm, ram, m4a, m4b, mp4, m4r, mp4a, flac, aac, au, mp2, aif, aiff, aifc, amr, awb, ogg, oga,?.voc, wv, asf, mpc, ac3, mod, s3m, xm, it, 669, amf, ams, dbm, dmf, dsm, far, mdl, med, mtm, okt, ptm, stm, ult, umx, mt2, psm, spx, 3gp, 3gpp, 3ga, 3g2, ape, shn, vqf, tta, qcp, qcelp, dts, caf, gsm, mus, w64, act, opus, alaw, oma, adx 등의 확장자를 가지는 파일일 수 있다. 후술되는 바와 같이, 오디오 프로세싱 엔진(220)은 상기와 같은 오디오 데이터를 처리하기 위한 오디오 코덱을 포함할 수 있다.
호스트 CPU(100)는 컴퓨팅 시스템(1000)을 제어하는 구성요소로서, 메모리 서브시스템(400)에 포함된 메모리 장치에 저장된 프로그램을 실행하거나 데이터를 처리할 수 있다. 예를 들면, 호스트 CPU(100)는 운영체제(operating system; OS)를 실행할 수 있고, 운영체제 상에서 어플리케이션 프로그램을 실행할 수 있다. 호스트 CPU(100)는, 코어(core)로서 지칭될 수 있는 독립적이고 실질적인 프로세서를 2개 이상 포함하는 멀티-코어 프로세서(multi-core processor)로서 구현될 수도 있다. 프로그램은 복수의 명령어들(instructions)을 포함할 수 있고, 코어들 각각은 독립적으로 명령어들을 실행함으로써 프로그램을 실행할 수 있다.
오디오 서브시스템(200)은 소스 오디오 데이터를 처리함으로써 RX PCM 데이터(RX_PCM)를 생성하거나, PCM 믹서(600)로부터 수신되는 TX PCM 데이터(TX_PCM)를 처리함으로써 오디오 데이터를 생성할 수 있다. PCM 데이터(RX_PCM 또는 TX_PCM)는 샘플링된 아날로그 신호들을 디지털적으로(digitally) 나타낸 데이터로서, 오디오 서브시스템(200)은 PCM 데이터(RX_PCM 또는 TX_PCM)를 PCM 믹서(600)와 주고 받을 수 있다. 도 1에 도시된 바와 같이, 오디오 서브시스템(200)은 오디오 프로세싱 엔진(220)을 포함할 수 있다. 오디오 프로세싱 엔진(audio processing edgin; APE)(220)은 소스 오디오 데이터 또는 소스 오디오 데이터로부터 생성된 오디오 데이터를 처리하거나, TX PCM 데이터(TX_PCM) 또는 TX PCM 데이터(TX_PCM)로부터 생성된 오디오 데이터를 처리하기 위한 하드웨어 블록으로서, 예컨대 범용(general) 프로세서, 디지털 신호 프로세서(digital signal processor; DSP) 또는 전용 로직 블록 등일 수 있다.
컴퓨팅 시스템(1000)은, 오디오 서브시스템(200)과 같이 특정한 데이터의 처리를 위하여 전용 하드웨어 블록을 포함할 수 있다. 호스트 CPU(100)가 오디오 데이터를 처리하는 대신 오디오 서브시스템(200)이 오디오 프로세싱을 수행함으로써, 컴퓨팅 시스템(1000)의 효율은 증대될 수 있다. 예를 들면, 오디오가 재생되는 동안 RX PCM 데이터(RX_PCM)는 일정한 속도로 소비될 수 있고, 이를 위하여 소스 오디오 데이터로부터 RX PCM 데이터(RX_PCM)를 생성하는 동작은 일정 수준 이상의 처리량(throughput)을 요구할 수 있다. 만약 호스트 CPU(100)가 오디오 데이터를 직접 처리하는 경우, 호스트 CPU(100)는 주기적으로 오디오 데이터를 처리하기 위한 프로세스를 수행할 수 있고, 이에 따라 다른 프로세스의 수행 중단 및 수행 재개가 반복됨으로써 컴퓨팅 시스템(1000)의 효율이 저하될 수 있다. 이러한 오디오 프로세싱을 호스트 CPU(100) 대신 오디오 서브시스템(200)이 담당함으로써 호스트 CPU(100)는 다른 작업을 수행할 수 있고, 이에 따라 컴퓨팅 시스템(1000)의 효율은 증대될 수 있다. 이와 같이, 호스트 CPU(100)와 분리된, 독립적인 하드웨어 블록을 사용하는 오디오 프로세싱은, 오프로드 오디오 프로세싱(offload audio processing)으로서 지칭될 수 있다. 호스트 CPU(100) 상에서 실행되는 운영체제는 오프로드 오디오 프로세싱을 지원하기 위하여 오디오 서브시스템(200)(또는 오디오 프로세싱 엔진(220))과의 인터페이스를 가능하게 하는 다수의 기능들을 제공할 수 있다.
오디오 프로세싱의 복잡도(complexity)가 증가함에 따라 높은 성능의 오디오 프로세싱 엔진(220)이 요구되고 있다. 그러나, 호스트 CPU(100) 및 오디오 프로세싱 엔진(220)과 같은 디지털 데이터 프로세싱 블록은 데이터 처리 능력이 상승함에 따라 많은 비용 및 전력을 소모할 수 있다. 따라서, 오디오 프로세싱 엔진(220)은 오디오 프로세싱에 적합한 성능을 가지도록 설계될 필요가 있다. 즉, 과도하게 높은 성능을 가지도록 설계된 오디오 프로세싱 엔진(220)은 컴퓨팅 시스템(1000)의 비용 및 전력 소모를 상승시킬 수 있고, 다른 한편으로 현저하게 낮은 성능을 가지도록 설계된 오디오 프로세싱 엔진(220)은 높은 복잡도를 가지는 프로세스를 제한된 시간 내에 수행하지 못함으로써 사운드를 정상적으로 재생하지 못하거나 사운드를 정상적으로 레코딩하지 못하는 결과를 초래할 수 있다.
본 개시의 예시적 실시예에 따라, 오디오 프로세싱 엔진(220)은 오디오 프로세싱을 구성하는 프로세스의 복잡도에 기초하여 프로세스의 수행 가능 여부를 판단할 수 있고, 제한된 시간 내에 프로세스의 수행이 불가능한 것으로 판단한 경우 호스트 CPU(100)에 프로세스의 수행을 요청할 수 있다. 호스트 CPU(100)는 오디오 프로세싱 엔진(220)의 요청에 응답하여 프로세스를 수행할 수 있고, 그 다음에 오디오 프로세싱 엔진(220)은 호스트 CPU(100)의 프로세스 수행에 의해서, 소스 오디오 데이터로부터 생성된 RX PCM 데이터(RX_PCM)를 PCM 믹서(600)에 제공하거나 또는 TX_PCM 데이터(TX_PCM)로부터 생성된 타겟 오디오 데이터를 컴퓨팅 시스템(1000)의 다른 구성요소(예컨대, 메모리 서브시스템(400))에 제공할 수 있다. 오디오 프로세싱 엔진(220)보다 높은 성능을 가지는 호스트 CPU(100)가 높은 복잡도를 가지는 프로세스를 처리함으로써, 사운드가 중단되지 아니하고 정상적으로 출력거나 레코딩될 수 있다.
주변기기들(300)은 다양한 기능들을 각각 수행하는 복수의 로직 블록들을 포함할 수 있다. 예를 들면, 주변기기들(300)은 사용자의 입력을 처리하는 로직 블록을 포함할 수 있고, 컴퓨팅 시스템(1000) 외부의 장치와 통신하기 위한 통신 표준을 지원하는 로직 블록을 포함할 수도 있다.
메모리 서브 시스템(400)은 하나 이상의 메모리 장치들 및 메모리 컨트롤러를 포함할 수 있다. 일 실시예에서, 메모리 서브 시스템(400)은 휘발성 메모리 장치를 포함할 수 있고, 휘발성 메모리 장치는 호스트 CPU(100)의 캐쉬(cache) 메모리로서 기능할 수 있고, 데이터 버퍼로서 기능할 수도 있다. 예를 들면, 메모리 서브 시스템(400)은 휘발성 메모리 장치로서, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM, DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR (Low Power DDR) SDRAM, GDDR (Graphic DDR) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등을 포함할 수 있다.
일 실시예에서, 메모리 서브 시스템(400)는 비휘발성 메모리 장치를 포함할 수 있고, 비휘발성 메모리 장치는 호스트 CPU(100) 및/또는 오디오 프로세싱 엔진(220)에서 수행된 프로그램을 구성하는 복수의 명령어들을 저장할 수도 있고, 소스 오디오 데이터와 같은 데이터를 저장할 수 있다. 또한, 메모리 서브 시스템(400)은 비휘발성 메모리 장치로서, EEPROM (non-volatile memory such as a Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM (Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM (Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있다.
PCM 믹서(600)는 RX PCM 데이터(RX_PCM)로부터 아날로그 신호를 생성할 수 있고, 생성된 아날로그 신호는 스피커(700)를 통해서 사운드로서 출력될 수 있다. 또한, PCM 믹서(600)는 마이크(800)로부터 수신된 아날로그 신호로부터 TX PCM 데이터(TX_PCM)를 생성할 수 있고, 생성된 TX PCM 데이터(TX_PCM)는 컴퓨팅 시스템(1000)의 다른 구성요소에 제공될 수 있다. 전술된 바와 같이, PCM 믹서(600)는 사운드의 재생(또는 출력)을 위하여 일정한 속도로 RX PCM 데이터(RX_PCM)를 소비할 수 있다. 만약 RX PCM 데이터(RX_PCM)가 충분하게 공급되지 아니하는 경우, 사운드는 중단될 수 있고 또는 소스 오디오 데이터와 상이한 사운드가 출력될 수 있다. 마찬가지로, PCM 믹서(600)는 사운드의 레코딩을 위하여 일정한 속도로 TX PCM 데이터(TX_PCM)를 생성할 수 있다. 만약 일정한 속도로 생성된 TX PCM 데이터(TX_PCM)가 오디오 서브시스템(200)에 의해서 충분하게 처리되지 아니하는 경우, 생성된 타겟 오디오 데이터는 레코딩 당시의 사운드와 상이한 사운드에 대응할 수 있다.
도 1에서 PCM 믹서(600)는 오디오 서브시스템(200)과 PCM 데이터(RX_PCM 또는 TX_PCM)를 송수신하는 것으로 도시되었으나, PCM 믹서(600)는 컴퓨팅 시스템(1000)의 다른 구성요소와 PCM 데이터(RX_PCM 또는 TX_PCM))를 송수신할 수도 있다. 예를 들면, 일 실시예에서, PCM 믹서(600)는 I2S(integrated interchip sound)와 같은 시리얼 버스 인터페이스 표준을 지원할 수 있고, 주변기기들(300)에 포함된, 시리얼 버스 인터페이스 표준을 지원하는 블록과 통신함으로써 PCM 데이터(RX_PCM 또는 TX_PCM)를 송수신할 수도 있다.
도 2a 및 도 2b는 오디오 프로세싱을 구성하는 복수의 프로세스들이 수행되는 동작의 예시들을 나타내는 도면이다. 구체적으로, 도 2a는 소스 오디오 데이터(D_SRC)로부터 RX PCM 데이터(RX_PCM)를 생성하는 동작을 나타내고, 도 2b는 TX PCM 데이터(TX_PCM)로부터 타겟 오디오 데이터(D_TGT)를 생성하는 동작을 나타낸다. 도 2a 및 도 2b에 도시된 프로세스들은 오디오 프로세싱을 구성하는 프로세스의 예시들일 뿐이며, 도 2a 및 도 2b에 도시되지 아니한 다양한 프로세스들이 더 수행될 수 있다.
도 2a를 참조하면, 소스 오디오 데이터(D_SRC)에 대하여 디코딩 프로세스(11)가 수행될 수 있다. 디코딩 프로세스(11)는 소스 오디오 데이터(D_SRC)의 형식에 대응하는 오디오 코덱을 사용함으로써 소스 오디오 데이터(D_SRC)를 디코딩할 수 있다. 소스 오디오 데이터(D_SRC)를 디코딩함으로써 생성된 제1 오디오 데이터(D_M1a)는 시간의 흐름에 따라 나열된 샘플들을 포함하는 스트림 데이터일 수 있다.
제1 오디오 데이터(D_M1a)에 대하여 가변 배속 재생(variable speed playback; VSP) 프로세스(12)가 수행될 수 있고, 제2 오디오 데이터(D_M2a)가 생성될 수 있다. 예를 들면, 컴퓨팅 시스템(1000)의 사용자는 사운드의 재생 속도를 변경할 수 있고, 가변 배속 재생 프로세스(12)는 보간(interpolation) 또는 데시메이션(decimation)을 수행함으로써 오디오 재생 속도를 조절할 수 있다.
제2 오디오 데이터(D_M2a)에 대하여 샘플링 레이트 변환(sampling rate conversion; SRC) 프로세스(13)가 수행될 수 있고, 제3 오디오 데이터(D_M3a)가 생성될 수 있다. 예를 들면, 소스 오디오 데이터(D_SRC)는, 컴퓨팅 시스템(1000) (또는 PCM 믹서(600))이 지원하는 샘플링 레이트와 상이한 샘플링 레이트를 가질 수 있다. 이에 따라, 샘플링 레이트 변환 프로세스(13)는 보간(interpolation), 데시메이션(decimation), 다운샘플링(downsampling) 또는 업샘플링(upsampling)을 수행함으로써 컴퓨팅 시스템(1000)의 샘플링 레이트와 상이한 소스 오디오 데이터(D_SRC)의 샘플링 레이트를 보정할 수 있다.
제3 오디오 데이터(D_M3a)에 대하여 사운드 이펙트 프로세스(14)가 수행될 수 있고, RX PCM 데이터(RX_PCM)가 생성될 수 있다. 컴퓨팅 시스템(1000)은 사운드 이펙트 프로세스(14)를 통해서, 사용자에 의해서 설정되거나 디폴트로 설정된 사운드 이펙트가 적용된 사운드를 스피커(700)를 통해서 출력할 수 있다. 예를 들면, 사운드 이펙트는, 에코(echo), 코러스(chorus), 이퀄라이제이션(equalization), 로봇 목소리 효과(robotic voice effect), 3D 오디오 효과(3D audio 효과) 등을 포함할 수 있고, 적용되는 사운드 이펙트에 따라 사운드 이펙트 프로세스(14)의 복잡도가 결정될 수 있다.
도 2b를 참조하면, TX PCM 데이터(TX_PCM)에 대하여 필터링 프로세스(21)가 수행될 수 있다. 필터링 프로세스(21)는 특정 유형의 필터를 사운드에 적용하기 위한 프로세스일 수 있고, 유한한 개수의 샘플들을 가지는 디지털 필터를 TX PCM 데이터(TX_PCM)에 적용함으로써 제1 오디오 데이터(D_M1b)를 생성할 수 있다.
제1 오디오 데이터(D_M1b)에 대하여 샘플링 레이트 변환(SRC) 프로세스(22)가 수행될 수 있고, 제2 오디오 데이터(D_M2b)가 생성될 수 있다. 예를 들면, 타겟 오디오 데이터(D_TGT)는, 컴퓨팅 시스템(1000)(또는 PCM 믹서(600))이 지원하는 샘플링 레이트와 상이한 샘플링 레이트를 가질 수 있다. 이에 따라, 도 2a의 샘플링 레이트 변환(SRC) 프로세스(13)와 유사하게 컴퓨팅 시스템(1000)의 샘플링 레이트와 상이한 타겟 오디오 데이터(D_TGT)의 샘플링 레이트를 보정할 수 있다.
제2 오디오 데이터(D_M2b)에 대하여 음성 강화(voice enhancement) 프로세스(23)가 수행될 수 있고, 제3 오디오 데이터(D_M3b)가 생성될 수 있다. 예를 들면, 컴퓨팅 시스템(1000)의 사용자는 음성을 레코딩하기 위하여 컴퓨팅 시스템(1000)의 사운드 레코딩을 사용할 수 있고, 이에 따라 TX PCM 데이터(TX_PCM)으로부터 음성을 추출하고 추출된 음성을 처리하는 동작이 수행될 수 있다.
제3 오디오 데이터(D_M3b)에 대하여 인코딩 프로세스(24)가 수행될 수 있다. 인코딩 프로세스(24)는 타겟 오디오 데이터(D_TGT)의 형식에 대응하는 오디오 코덱을 사용함으로써 제3 오디오 데이터(D_M3b)를 인코딩할 수 있다.
일정 수준 이상의 처리량(throughput)을 만족하기 위하여, 소스 오디오 데이터(D_SRC)에 대한 일련의 프로세스들(11 내지 14) 및 TX PCM 데이터(TX_PCM)에 대한 일련의 프로세스들(21 내지 24)은 제한된 시간 내에 수행이 완료되어야 한다. 따라서, 오프로드 오디오 프로세싱 시스템에서, 높은 복잡도를 가지는 프로세스(예컨대, 사운드 이펙트 프로세스(14) 또는 음성 강화 프로세스(23))의 수행을 위해 높은 성능을 가지는 오디오 프로세싱 엔진을 탑재하는 것이 고려될 수 있다. 그러나, 높은 성능을 가지는 오디오 프로세싱 엔진은 높은 비용 및 높은 전력 소모를 초래할 뿐만 아니라, 높은 복잡도를 가지는 프로세스의 수행 빈도가 낮은 경우 오프로드 오디오 프로세싱 시스템의 효율을 떨어뜨릴 수 있다. 또한, 오프로드 오디오 프로세싱 시스템의 설계 당시 프로세스들의 수준에 적합한 성능을 가지는 오디오 프로세싱 엔진이 오디오 프로세싱 시스템에 탑재되더라도, 신규한 프로세스, 예컨대 신규한 사운드 이펙트에 대응하는 프로세스가 기존의 프로세스들보다 높은 복잡도를 가지는 경우 오디오 프로세싱 엔진이 그러한 프로세스를 수행하지 못하는 현상이 발생할 수 있다.
본 개시의 기술적 사상에 따른 오디오 프로세싱 방법은 높은 복잡도를 가지는 프로세스를 호스트 CPU(100)가 수행함으로써 오디오 프로세싱 엔진(220)이 최적으로 설계될 수 있고, 또한 호스트 CPU(100)에 의해서 기존의 프로세스들보다 높은 복잡도를 가지는 신규한 프로세스가 수행될 수 있다.
도 3은 본 개시의 예시적 실시예에 따라 도 1의 오디오 프로세싱 엔진(220)의 동작 방법을 나타내는 순서도이다. 구체적으로, 도 3은 제1 프로세스 착수부터 제1 프로세스의 종료까지, 오디오 프로세싱 엔진(220)의 동작 방법을 나타낸다. 도 3에 도시된 오디오 프로세싱 엔진(220)의 동작 방법은, 오디오 프로세싱 엔진(220)이 프로세서로 구현되는 경우 소프트웨어 프로그램에 포함된 복수의 명령어들을 실행함으로써 수행될 수도 있고, 또는 오디오 프로세싱 엔진(220)이 전용 로직 블록으로 구현되는 경우 스테이트 머신에 의해서 수행될 수도 있다. 도 3에 도시된 바와 같이, 오디오 프로세싱 엔진(220)의 동작 방법은 단계들(S10 내지 S40)을 포함할 수 있다.
단계 S10에서, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 제1 프로세스는 오디오 데이터 또는 PCM 데이터에 대한 복수의 프로세스들 중 하나일 수 있다. 제1 프로세스의 런타임은, 제1 프로세스가 오디오 프로세싱 엔진(220)에서 수행되는 경우 실행 시간을 지칭할 수 있고, 제1 프로세스가 높은 복잡도를 가지는 경우 제1 프로세스의 런타임은 길 수 있다. 이하에서 후술되는 바와 같이, 오디오 프로세싱 엔진(220)은 다양한 방식으로 제1 프로세스의 런타임 정보를 취득할 수 있고, 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여, 오디오 프로세싱 엔진(220)이 제1 프로세스 수행시 PCM 믹서(600)가 RX PCM 데이터(RX_PCM)를 소비하는 속도 이상으로 RX PCM 데이터(RX_PCM)를 생성할 수 있는지 여부를 판단할 수 있다. 다른 한편으로, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여, 오디오 프로세싱 엔진(220)이 제1 프로세스 수행시 PCM 믹서(600)가 TX PCM 데이터(TX_PCM)를 생성하는 속도 이상을 TX PCM 데이터(TX_PCM)를 처리할 수 있는지 여부를 판단할 수 있다.
제1 프로세스가 수행 가능한 것으로 판단된 경우, 단계 S20에서 오디오 프로세싱 엔진(220)은 제1 프로세스를 수행할 수 있다. 다른 한편으로, 제1 프로세스가 수행 불가능한 것으로 판단된 경우, 단계 S30에서 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행을 호스트 CPU(100)에 요청할 수 있다. 호스트 CPU(100)는 오디오 프로세싱 엔진(220)의 요청에 응답하여 제1 프로세스를 수행할 수 있다. 단계 S40에서, 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행 결과 정보를 호스트 CPU(100)로부터 수신할 수 있다. 이하에서, 도면들을 참조하여 도 3의 단계들이 상술될 것이다.
도 4는 본 개시의 예시적 실시예에 따라 도 1의 오디오 서브시스템(200)의 예시(200a)를 나타내는 블록도이다. 도 1을 참조하여 설명한 바와 같이, 오디오 서브시스템(200a)은 소스 오디오 데이터로부터 RX PCM 데이터(RX_PCM)를 생성하거나, TX PCM 데이터(TX_PCM)로부터 타겟 오디오 데이터를 생성할 수 있다.
도 4를 참조하면, 오디오 서브시스템(200a)은 오디오 프로세싱 엔진(220a) 및 스트림 버퍼(240a)를 포함할 수 있다. 오디오 프로세싱 엔진(220a) 및 스트림 버퍼(240a)는 시스템 버스(500)를 통해서 컴퓨팅 시스템의 다른 구성요소들과 통신할 수 있다. 스트림 버퍼(240a)는 소스 오디오 데이터에 대한 프로세스가 수행됨으로써 생성된 데이터 또는 TX PCM 데이터(TX_PCM)에 대한 프로세스가 수행됨으로써 생성된 데이터를 저장할 수 있다. 예를 들면, 스트림 버퍼(240a)는 도 2a의 제1 내지 제3 오디오 데이터(D_M1a 내지 D_M3a) 및/또는 도 2b의 제1 내지 제3 오디오 데이터(D_M1b 내지 D_M3b)를 저장할 수도 있고, PCM 데이터(RX_PCM 또는 TX_PCM) 를 저장할 수도 있다. PCM 믹서(600)는 스트림 버퍼(240a)에 저장된 RX PCM 데이터(RX_PCM)를 수신함으로써 아날로그 신호를 생성할 수 있고, TX PCM 데이터(TX_PCM)를 생성하여 스트림 버퍼(240a)에 저장할 수도 있다.
도 5a 및 도 5b는 소스 오디오 데이터에 대하여 복잡도가 높은 프로세스의 수행시 도 4의 스트림 버퍼(240a)의 동작들을 나타내는 도면들이다. 구체적으로, 도 5a는 도 4의 오디오 프로세싱 엔진(220a)에 의해서 복잡도가 높은 프로세스의 수행시 스트림 버퍼(240a)의 동작을 나타내고, 도 5b는 호스트 CPU(100a)에 의해서 복잡도가 높은 프로세스의 수행시 스트림 버퍼(240a)의 동작을 나타낸다.
도 5a 및 도 5b에서, 스트림 버퍼(240a)는 RX PCM 데이터(RX_PCM)를 저장할 수 있고, 복잡도가 높은 프로세스는 복수의 프로세스들 중 최종 프로세스로서 PCM 믹서(600)로 전달되는 RX PCM 데이터(RX_PCM)를 생성하는 프로세스인 것으로 가정한다. 도 5a 및 5b에 도시된 바와 같이, PCM 믹서(600)는 아날로그 신호를 생성하여 스피커(700)로 전송하기 위하여, 일정한 속도로 RX PCM 데이터(RX_PCM)를 소비할 수 있다.
PCM 믹서(600)가 아날로그 신호를 안정적으로 생성하기 위하여, 스트림 버퍼(240a)가 기준량(RX_REF) 이상의 RX PCM 데이터(RX_PCM)를 저장할 수 있도록, RX PCM 데이터(RX_PCM)가 공급될 수 있다. 예를 들면, 기준량(RX_REF)은 약 40ms 동안 사운드가 재생될 분량에 대응하는 RX PCM 데이터(RX_PCM)의 량일 수 있다. 사운드를 재생하는 동안, 스트림 버퍼(240a)가 기준량(RX_REF) 미만의 RX PCM 데이터(RX_PCM)를 저장하는 현상은 언더런(underrun)으로서 지칭될 수 있다. 스트림 버퍼(240)에서 언더런(underrun)이 발생하지 아니하도록, 스트림 버퍼(240a)에 RX PCM 데이터(RX_PCM)가 공급되어야 한다. 다른 한편으로, 스트림 버퍼(240a)에 저장된 RX PCM 데이터(RX_PCM)의 량이 기준량(RX_REF)를 과도하게 초과하지 아니하도록, RX PCM 데이터(RX_PCM)가 공급될 수 있다. 예를 들면, 스트림 버퍼(240a)가 과도하게 많은 량의 RX PCM 데이터(RX_PCM)를 저장하고 있는 상태에서 사운드의 재생 중에 사용자의 입력에 따라 사운드 이펙트가 추가, 변경 또는 삭제 되는 경우, 사용자의 입력이 반영된 사운드는 지연되어 출력될 수 있다.
도 5a를 참조하면, 호스트 CPU(100a)보다 낮은 성능을 가지는 오디오 프로세싱 엔진(220a)은, 복잡도가 높은 프로세스를 수행시 PCM 믹서(600)가 RX PCM 데이터(RX_PCM)를 소비하는 속도보다 낮은 속도로 RX PCM 데이터(RX_PCM)를 생성할 수 있다. 이에 따라, 스트림 버퍼(240a)에 저장된 RX PCM 데이터(RX_PCM)의 양은 점점 감소할 수 있고, 도 5a에 도시된 바와 같이 스트림 버퍼(240a)에 저장된 RX PCM 데이터(RX_PCM)의 양이 기준량(RX_REF)보다 적은 현상, 즉 언더런(underrun)이 발생할 수 있다.
도 5b를 참조하면, 오디오 프로세싱 엔진(220a)보다 높은 성능을 가지는 호스트 CPU(100a)는 복잡도가 높은 프로세스를 수행시 PCM 믹서(600)가 RX PCM 데이터(RX_PCM)를 소비하는 속도 이상의 속도로 RX PCM 데이터(RX_PCM)를 생성할 수 있다. 이에 따라, 도 5b에 도시된 바와 같이 스트림 버퍼(240a)에 저장된 RX PCM 데이터(RX_PCM)의 양이 기준량(RX_REF)보다 많을 수 있고, PCM 믹서(600)는 아날로그 신호를 안정적으로 생성할 수 있다.
도 6은 본 개시의 예시적 실시예에 따라 도 3의 단계 S10의 예시를 나타내는 순서도이다. 도 3을 참조하여 전술한 바와 같이, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 도 6의 예시에서, 도 3의 제1 프로세스는 소스 오디오 데이터에 대한 포스트 프로세스들 중 하나일 수 있다.
도 6을 참조하면, 단계 S11에서 오디오 프로세싱 엔진(220)은 제1 프로세스 수행시 RX PCM 데이터(RX_PCM)를 생성하는 속도를 계산할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)은 제1 프로세스 런타임에 기초하여 오디오 프로세싱 엔진(220)이 제1 프로세스를 수행하는 경우 RX PCM 데이터(RX_PCM)를 생성하는 속도를 계산할 수 있다.
단계 S12에서, 오디오 프로세싱 엔진(220)은 RX PCM 데이터(RX_PCM)의 생성 속도 및 RX PCM 데이터(RX_PCM)의 소비 속도를 비교할 수 있다. 즉, 오디오 프로세싱 엔진(220)은 단계 S11에서 계산된 RX PCM 데이터(RX_PCM)의 생성 속도 및 PCM 믹서(600)가 RX PCM 데이터(RX_PCM)를 소비하는 속도를 비교할 수 있다.
RX PCM 데이터(RX_PCM)의 생성 속도가 RX PCM 데이터(RX_PCM)의 소비 속도 이상인 경우, 단계 S13에서 오디오 프로세싱 엔진(220)은 오디오 프로세싱 엔진(220)에서 제1 프로세스의 수행이 가능한 것으로 판단할 수 있다. 다른 한편으로, RX PCM 데이터(RX_PCM)의 생성 속도가 RX PCM 데이터(RX_PCM)의 소비 속도보다 낮은 경우 도 5a에 도시된 바와 같이 언더런이 발생할 수 있기 때문에, 단계 S14에서 오디오 프로세싱 엔진(220)은 오디오 프로세싱 엔진(220)에서 제1 프로세스의 수행이 불가능한 것으로 판단할 수 있다.
도 7a 및 도 7b는 타겟 오디오 데이터를 생성하기 위하여 복잡도가 높은 프로세스의 수행시 도 4의 스트림 버퍼(240a)의 동작을 나타내는 도면들이다. 구체적으로, 도 7a는 도 4의 오디오 프로세싱 엔진(220a)에 의해서 복잡도가 높은 프로세스의 수행시 스트림 버퍼(240a)의 동작을 나타내고, 도 7b는 호스트 CPU(100a)에 의해서 복잡도가 높은 프로세스의 수행시 스트림 버퍼(240a)의 동작을 나타낸다.
도 7a 및 도 7b에서, 스트림 버퍼(240a)는 TX_PCM 데이터(TX_PCM)를 저장할 수 있고, 복잡도가 높은 프로세스는 복수의 프로세스들 중 최초 프로세스로서 PCM 멕서(600)로부터 수신되는 TX_PCM 데이터(TX_PCM)를 처리하는 프로세스인 것으로 가정한다. 도 7a 및 도 7b에 도시된 바와 같이, 마이크(800)로부터 PCM 믹서(600)는 아날로그 신호를 수신함으로써, 일정한 속도로 TX PCM 데이터(TX_PCM)를 생성할 수 있다.
PCM 믹서(600)가 수신하는 아날로그 신호를 누락시키지 아니하기 위하여, 즉 사운드를 누락 없이 레코딩하기 위하여, 스트림 버퍼(240a)에 기준량(TX_REF) 이하의 TX PCM 데이터(TX_PCM)가 저장될 수 있도록 TX PCM 데이터(TX_PCM)가 처리 또는 소비될 수 있다. 예를 들면, 기준량(TX_REF)는 약 40ms동안 수신된 사운드에 대응하는 TX PCM 데이터(TX_PCM)의 량일 수 있다. 사운드를 레코딩하는 동안, 스트림 버퍼(240a)가 기준량(TX_REF) 초과의 TX PCM 데이터(TX_PCM)를 저장하는 현상은 오버플로우(overflow)으로서 지칭될 수 있다. 스트림 버퍼(240)에서 오버플로우가 발생하지 아니하도록, 스트림 버퍼(240a)에 TX PCM 데이터(TX_PCM)가 처리 또는 소비되어야 한다.
도 7a를 참조하면, 호스트 CPU(100a)보다 낮은 성능을 가지는 오디오 프로세싱 엔진(220a)은, 복잡도가 높은 프로세스를 수행시 PCM 믹서(600)가 TX PCM 데이터(TX_PCM)를 공급하는 속도보다 낮은 속도로 TX PCM 데이터(TX_PCM)를 처리할 수 있다. 이에 따라, 스트림 버퍼(240a)에 저장된 TX PCM 데이터(TX_PCM)의 양은 점점 증가할 수 있고, 도 7a에 도시된 바와 같이 스트림 버퍼(240a)에 저장된 TX PCM 데이터(TX_PCM)의 양이 기준량(TX_REF)보다 큰 현상, 즉 오버플로우가 발생할 수 있다.
도 7b를 참조하면, 오디오 프로세싱 엔진(220a)보다 높은 성능을 가지는 호스트 CPU(100a)는 복잡도가 높은 프로세스를 수행시 PCM 믹서(600)가 TX PCM 데이터(TX_PCM)를 공급하는 속도 이상의 속도로 TX PCM 데이터(TX_PCM)를 처리할 수 있다. 이에 따라, 도 7b에 도시된 바와 같이 스트림 버퍼(240a)에 저장된 TX PCM 데이터(TX_PCM)의 양이 기준량(TX_REF)보다 많을 수 있고, PCM 믹서(600)로부터 공급되는 TX PCM 데이터(TX_PCM)는 누락없이 처리될 수 있다.
도 8은 본 개시의 예시적 실시예에 따라 도 3의 단계 S10의 예시를 나타내는 순서도이다. 도 3을 참조하여 전술한 바와 같이, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 도 8의 예시에서, 도 3의 제1 프로세스는 사운드로부터 타겟 오디오 데이터를 생성하기 위한 프리 프로세스들 중 하나일 수 있다.
도 8을 참조하면, 단계 S16에서 오디오 프로세싱 엔진(220)은 제1 프로세스 수행시 TX PCM 데이터(TX_PCM)를 처리하는 속도를 계산할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)은 제1 프로세스 런타임에 기초하여 오디오 프로세싱 엔진(220)이 제1 프로세스를 수행하는 경우 TX PCM 데이터(TX_PCM)를 처리하는 속도를 계산할 수 있다.
단계 S17에서, 오디오 프로세싱 엔진(220)은 TX PCM 데이터(TX_PCM)의 처리 속도 및 TX PCM 데이터(TX_PCM)의 생성 속도를 비교할 수 있다. 즉, 오디오 프로세싱 엔진(220)은 단계 S16에서 계산된 TX PCM 데이터(RX_PCM)의 처리 속도 및 PCM 믹서(600)가 TX PCM 데이터(TX_PCM)를 생성(또는 공급)하는 속도를 비교할 수 있다.
TX PCM 데이터(TX_PCM)의 처리 속도가 TX PCM 데이터(TX_PCM)의 생성 속도 이상인 경우, 단계 S18에서 오디오 프로세싱 엔진(220)은 오디오 프로세싱 엔진(220)에서 제1 프로세스의 수행이 가능한 것으로 판단할 수 있다. 다른 한편으로, TX PCM 데이터(TX_PCM)의 처리 속도가 TX PCM 데이터(TX_PCM)의 공급 속도보다 낮은 경우 도 7a에 도시된 바와 같이 오버플로우가 발생할 수 있기 때문에, 단계 S149에서 오디오 프로세싱 엔진(220)은 오디오 프로세싱 엔진(220)에서 제1 프로세스의 수행이 불가능한 것으로 판단할 수 있다.
도 9는 본 개시의 예시적 실시예에 따라 도 3의 단계 S30 및 단계 S40에서 호스트 CPU(100b) 및 오디오 프로세싱 엔진(220b) 사이에서 이동하는 데이터를 나타낸다. 도 3을 참조하여 전술한 바와 같이, 단계 S30에서 오디오 프로세싱 엔진(220b)은 제1 프로세스의 수행을 호스트 CPU(100b)에 요청할 수 있고, 단계 S40에서 오디오 프로세싱 엔진(220b)은 호스트 CPU(100b)로부터 제1 프로세스의 수행 결과 정보를 수신할 수 있다.
오디오 프로세싱 엔진(220b)이 제1 프로세스의 수행을 호스트 CPU(100b)에 요청시 제1 프로세스의 수행에 관한 정보들이 호스트 CPU(100b)에 전달될 수 있다. 호스트 CPU(100b)는 오디오 프로세싱 엔진(220b)으로부터 수신된 정보들에 기초하여 제1 프로세스를 수행할 수 있다. 예를 들면, 도 9에 도시된 바와 같이, 제1 프로세스의 식별자(ID_P1), 입력 데이터의 엑세스 정보(ACC_IN), 출력 데이터의 엑세스 정보(ACC_OUT), 복수의 파라미터들(PAR_1, PAR_2 등)이 제1 프로세스에 관한 정보로서 오디오 프로세싱 엔진(220b)으로부터 호스트 CPU(100b)로 전달될 수 있다.
제1 프로세스의 식별자(ID_P1)는 호스트 CPU(100b)에 수행을 요청하는 프로세스가 제1 프로세스임을 알려줄 수 있고, 호스트 CPU(100b)는 제1 프로세스의 식별자(ID_P1)에 기인하여 제1 프로세스임을 인식함으로써 제1 프로세스를 수행할 수 있다.
입력 데이터의 엑세스 정보(ACC_IN)는 제1 프로세스의 대상이 되는 데이터에 대한 엑세스 정보를 포함할 수 있다. 예를 들면, 제1 프로세스의 대상이 되는 데이터는 도 1의 메모리 서브시스템(400)에 포함된 메모리 장치, 예컨대 DRAM에 저장될 수 있다. 입력 데이터의 엑세스 정보(ACC_IN)는 DRAM에 저장된 데이터의 시작 어드레스를 포함할 수 있고, 호스트 CPU(100b)는 시작 어드레스에 기초하여 DRAM에 엑세스함으로써 제1 프로세스의 입력 데이터를 공급받을 수 있다.
출력 데이터의 엑세스 정보(ACC_OUT)는 제1 프로세스가 수행됨으로써 생성되는 데이터에 대한 엑세스 정보를 포함할 수 있다. 예를 들면, 호스트 CPU(100b)에 의해서 제1 프로세서가 수행됨으로써 생성되는 데이터는 도 1의 메모리 서브시스템(400)에 포함된 메모리 장치, 예컨대 DRAM에 저장될 수 있다. 오디오 프로세싱 엔진(200b)은 제1 프로세스가 수행됨으로써 생성된 데이터가 저장될 어드레스를 지정할 수 있고, 출력 데이터의 엑세스 정보(ACC_OUT)는 생성된 데이터가 저장될 어드레스를 포함할 수 있다. 호스트 CPU(100b)는 생성된 데이터가 저장될 어드레스에 기초하여 DRAM에 엑세스함으로써 제1 프로세스의 출력 데이터를 저장할 수 있다.
복수의 파라미터들(PAR_1, PAR_2 등)은 제1 프로세스의 파라미터들로서 제1 프로세스의 속성을 정의할 수 있다. 예를 들면, 제1 프로세스가 사운드 이펙트로서 에코 효과를 적용하는 동작에 대응하는 경우, 복수의 파라미터들(PAR_1, PAR_2 등) 중 하나는 에코 효과의 정도를 나타내는 값을 가질 수 있다. 또한, 제1 프로세스가 이퀄라이제이션을 적용하는 동작에 대응하는 경우, 복수의 파라미터들(PAR_1, PAR_2 등) 중 적어도 하나는 필터의 종류를 나타내거나 필터의 특성을 정의하는 값을 질 수 있다. 호스트 CPU(100b)는 복수의 파라미터들(PAR_1, PAR_2 등)에 기초하여 제1 프로세스를 수행할 수 있다.
호스트 CPU(100b)는, 제1 프로세스의 동작을 수행하고 제1 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다. 오디오 프로세싱 엔진(220b)은 수신된 제1 프로세스의 수행 결과 정보에 기초하여 제1 프로세스의 수행 완료 여부를 확인할 수 있고, 후속하는 프로세스의 수행시 제1 프로세스의 수행 결과 정보를 참조할 수 있다. 예를 들면, 도 9에 도시된 바와 같이, 에러 정보(ERR), 로그 정보(LOG) 등이 제1 프로세스의 수행 결과 정보로서 호스트 CPU(100b)로부터 오디오 프로세싱 엔진(220b)에 전달될 수 있다.
에러 정보(ERR)는 호스트 CPU(100b)가 제1 프로세스를 수행시 발생한 에러에 관한 정보를 포함할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220b)으로부터 수신된 제1 프로세스의 식별자(ID_P1)에 대응하는 제1 프로세스가 검색되지 아니하거나, 입력 데이터의 엑세스 정보(ACC_IN)에 따라 입력 데이터를 엑세스할 수 없는 경우 제1 프로세스는 정상적으로 수행되지 아니할 수 있고, 호스트 CPU(100b)는 제1 프로세스가 정상적으로 수행되지 아니한 원인을 포함하는 에러 정보(ERR)를 오디오 프로세싱 엔진(220b)으로 전달할 수 있다. 또한, 호스트 CPU(100b)가 제1 프로세스의 수행을 완료한 경우에도 제1 프로세스의 수행 동안 발생한 에러에 관한 정보를 포함하는 에러 정보(ERR)를 오디오 프로세싱 엔진(220b)에 전달할 수 있다. 예를 들면, 제1 파라미터(PAR_1)가 허용되는 최대값을 초과한 경우, 호스트 CPU(100b)는 허용되는 최대값을 사용하여 제1 프로세스의 수행을 완료할 수 있고, 제1 파라미터(PAR_1)가 허용되는 최대값을 초과한 내용을 포함하는 에러 정보(ERR)를 오디오 프로세싱 엔진(220b)으로 전달할 수 있다.
로그 정보(LOG)는 호스트 CPU(100)가 제1 프로세스를 수행함에 따라 발생한 이벤트들에 대한 정보를 포함할 수 있다. 예를 들면, 로그 정보(LOG)는 제1 프로세스를 수행하는데 소요된 시간, 출력 데이터의 크기, 호스트 CPU(100)에서 제1 프로세스의 점유율 등을 포함할 수 있다. 오디오 프로세싱 엔진(220)은 수신된 로그 정보(LOG)에 기초하여 후속하는 프로세스를 수행할 수 있고, 추후 제1 프로세스의 수행을 호스트 CPU(100)에 요청시 로그 정보(LOG)를 참조할 수 있다.
도 10a 및 도 10b는 본 개시의 예시적 실시예에 따른 호스트 CPU 및 오디오 프로세싱 엔진의 동작들을 나타내는 도면들이다. 구체적으로, 도 10a는 오디오 재생시 호스트 CPU(100c) 및 오디오 프로세싱 엔진(200c)의 동작을 나타내고, 도 10b는 사운드 레코딩시 호스트 CPU(100d) 및 오디오 프로세싱 엔진(200d)의 동작을 나타낸다. 도 10a의 예시에서, 소스 오디오 데이터(D_SRC)에 대하여 도 2a에 도시된 프로세스들이 수행되고, 사운드 이펙트 프로세스(14)는 높은 복잡도를 가지는 프로세스로서 호스트 CPU(100c)에 의해서 수행될 수 있다. 또한, 도 10b의 예시에서, TX PCM 데이터(TX_PCM)에 대하여 도 2b에 도시된 프로세스들이 수행되고, 음성 강화(voice enhancement) 프로세스(23)가 높은 복잡도를 가지는 프로세스로서 호스트 CPU(100ㅇ)에 의해서 수행될 수 있다. 도 10a 및 도 10b 에서 호스트 CPU들(100c, 100d) 또는 오디오 프로세싱 엔진들(220c, 100d)에 포함된 블록들 각각은 복수의 명령어들을 포함하는 소프트웨어 모듈일 수 있다.
본 개시의 예시적 실시예에 따라, 호스트 CPU(100c)는 운영체제를 실행할 수 있다. 도 10a 및 도 10b에 도시된 바와 같이, 운영체제는 커널 공간(kernel space)에서 실행되는 커널(40) 및 사용자 공간(user space)에서 실행되는 프레임워크(30)를 제공할 수 있다. 커널(40)은 사용자 공간으로부터의 입출력 요청을 해석하여 하드웨어에 제공할 수 있다. 프레임워크(30)는 어플리케이션 프로그램에 포괄적인 기능성(generic functionality)을 제공할 수 있고, 어플리케이션 프로그램은 프레임워크(30)에 기초하여 효율적으로 설계될 수 있다.
도 10a을 참조하면, 오디오 프로세싱 엔진(220c)은 소스 오디오 데이터(D_SRC)를 수신할 수 있다. 예를 들면, 호스트 CPU(100c)에서 실행되는 오디오 플레이어는 어플리케이션 프로그램으로서, 도 1의 주변기기들(300)로부터 수신된 사용자의 입력에 응답하여 메모리 서브시스템(400)에서 소스 오디오 데이터(D_SRC)가 저장된 위치 정보를 추출할 수 있다. 오디오 프로세싱 엔진(220c)은 호스트 CPU(100c)로부터 소스 오디오 데이터(D_SRC)의 위치 정보를 수신함으로써 소스 오디오 데이터(D_SRC)를 독출할 수 있고 소스 오디오 데이터(D_SRC)를 수신할 수 있다.
도 2a의 예시와 유사하게, 소스 오디오 데이터(D_SRC)에 대하여 디코딩 프로세스(11)가 수행됨으로써 제1 오디오 데이터(D_M1a)가 생성될 수 있고, 제1 오디오 데이터(D_M1a)에 대하여 가변 배속 재생 프로세스(12)가 수행됨으로서 제2 오디오 데이터(D_M2a)가 생성될 수 있으며, 제2 오디오 데이터(D_M2a)에 대하여 샘플링 레이트 변환 프로세스(13)가 수행됨으로서 제3 오디오 데이터(D_M3a)가 생성될 수 있다. 그 다음에, 제3 오디오 데이터(D_M3a)에 대하여 도 2a의 사운드 이펙트 프로세스(14)가 수행됨으로써 TX PCM 데이터(TX_PCM)가 생성될 수 있다. 본 개시의 예시적 실시예에 따라, 오디오 프로세싱 엔진(220c)은 도 2a의 사운드 이펙트 프로세스(14)의 런타임에 기초하여 호스트 CPU(100c)에 사운드 이펙트 프로세스(14)의 수행을 요청하는 동작(19)을 수행할 수 있다.
사운드 이펙트 프로세스(14)의 수행 요청은 다양한 방식으로 오디오 프로세싱 엔진(220c)로부터 호스트 CPU(100c)에 전달될 수 있다. 예를 들면, 도 10a에 도시된 바와 같이, 오디오 프로세싱 엔진(220c)은 호스트 CPU(100c)에 인터럽트를 발생시킬 수 있다. 또는, 호스트 CPU(100c)가 소스 오디오 데이터(D_SRC)로부터 사운드의 재생을 오디오 프로세싱 엔진(220c)에 지시한 이후, 호스트 CPU(100c)는 사운드 프로세싱 엔진(220c)로부터 프로세스의 수행 요청이 발생하는지 여부를 폴링(polling)을 통해서 체크할 수도 있다.
도 10a을 참조하면, 오디오 프로세싱 엔진(220c)이 발생시킨 인터럽트에 응답하여, 커널(40)의 오디오 프로세싱 엔진 드라이버(41)는 오디오 프로세싱 엔진(220c)으로부터 수신된 요청을 사용자 공간으로 전달할 수 있다. 예를 들면, 도 10a에 도시된 바와 같이, 오디오 프로세싱 엔진 드라이버(41)는, 하드웨어 장치에 관련하여 발생된 이벤트를 사용자 공간으로 전달하는 “uevent”를 사용하여 오디오 프로세싱 엔진(220c)으로부터 수신된 요청을 사용자 공간으로 전달할 수 있다.
오디오 프로세싱 엔진 드라이버(41)에 의해서 사용자 공간으로 전달된 오디오 프로세싱 엔진(220c)의 요청은, 오디오 HAL(hardware abstraction layer)(31)에 의해서 처리될 수 있다. 오디오 HAL(31)은 어플리케이션 프로그램(예컨대, 사운드 이펙트 프로그램(32))이 커널(40)의 하드웨어, 즉 오디오 프로세싱 엔진(220c)에 대한 호출 및 응답을 직접 처리하지 아니하도록 함으로써, 어플리케이션 프로그램이 하드웨어에 독립적으로 설계되도록 할 수 있고, 효율적으로 설계되도록 할 수 있다.
어플리케이션 프로그램으로서 사운드 이펙트 프로그램(32)은, 오디오 프로세싱 엔진(220c)이 호스트 CPU(100c)에 수행을 요청한 프로세스를 실현할 수 있다. 즉, 사운드 이펙트 프로그램(32)은 제2 오디오 데이터(D_M3a)에 대하여 사운드 이펙트 프로세스(14)를 실현함으로써 RX PCM 데이터(RX_PCM)를 생성할 수 있다. 이와 같이, 오디오 데이터에 대한 프로세스가 어플리케이션 프로그램에 의해서 수행됨으로써, 컴퓨팅 시스템은 어플리케이션 프로그램의 추가 및/또는 변경으로써 신규한 오디오 프로세싱을 지원할 수 있다. 이에 따라, 오디오 프로세싱에 대한 컴푸팅 시스템의 유연성이 증대될 수 있다.
사운드 이펙트 프로그램(32)에 의해서 사운드 이펙트 프로세스(14)가 완료되면, 사운드 이펙트 프로그램(32)은 사운드 이펙트 프로세스(14)의 수행 결과 정보를 오디오 HAL(31)를 통해서 커널 스페이스의 오디오 프로세싱 엔진 드라이버(41)에 전달할 수 있다. 예를 들면, 도 10a에 도시된 바와 같이, 오디오 HAL(31)은, 사용자 공간의 어플리케이션 프로그램이 하드웨어 장치나 커널(40)의 구성요소와 통신할 수 있게 하는 “ioctl”을 사용하여 사운드 이펙트 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진 드라이버(41)에 전달할 수 있다.
오디오 HAL(31)의 호출에 응답하여, 오디오 프로세싱 엔진 드라이버(41)는 사운드 이펙트 프로세스(14)의 수행 결과 정보를 오디오 프로세싱 엔진(220c)에 전달할 수 있다. 예를 들면, 도 10a에 도시된 바와 같이, 오디오 프로세싱 엔진 드라이버(41)는 큐잉된 메시지들(queued message) 및 인터럽트 구동된(interrupt driven) 신호들을 통해서 하드웨어 장치들 사이에 통신을 제어하는“Mail Box”를 사용하여 사운드 이펙트 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진(220c)에 전달할 수 있다.
도 10b를 참조하면, 오디오 프로세싱 엔진(220d)은 TX PCM 데이터(TX_PCM)를 수신할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220d)은 도 1의 PCM 믹서(600)가 생성한 TX PCM 데이터(TX_PCM)가 저장된 위치 정보에 기초하여, TX PCM 데이터(TX_PCM)를 독출할 수 있고, TX PCM 데이터(TX_PCM)를 수신할 수 있다.도 2b의 예시와 유사하게, 필터링 프로세스(21), 샘플링 레이트 변환 프로세스(22), 음성 강화 프로세스(23) 및 인코딩 프로세스(24)가 순차적으로 수행됨으로써, 제1 내지 네3 오디오 데이터(D_M1b, D_M2b, D_M3b) 및 타겟 오디오 데이터(D_TGT)가 생성될 수 있다. 본 개시의 예시적 실시예에 따라, 오디오 프로세싱 엔진(220d)은 도 2b의 음성 강화 프로세스(23)의 런타임에 기초하여 호스트 CPU(100d)에 음성 강화 프로세스(23)의 수행을 요청하는 동작(29)을 수행할 수 있다.
도 10a와 유사하게, 오디오 프로세싱 엔진(200d)의 요청은 오디오 프로세싱 엔진 드라이버(42) 및 오디오 HAL(33)를 경유하여 음성 강화 프로그램(34)에 전달될 수 있다. 어플리케이션 프로그램으로서 음성 강화 프로그램(34)은, 오디오 프로세싱 엔진(220d)이 요청한 음성 강화 프로세스(23)를 실현함으로써 제3 오디오 데이터(D_M3b)를 생성할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 호스트 CPU(100e) 및 오디오 프로세싱 엔진(220e)의 동작을 나타내는 도면이다. 구체적으로, 도 11은 RX PCM 데이터(RX_PCM) 및 TX PCM 데이터(TX_PCM)가 호스트 CPU(100e) 및 오디오 프로세싱 엔진(220e)에서 병렬적으로 처리되는 동작을 나타내는 도면이다. 예를 들면, 호스트 CPU(100e) 및 오디오 프로세싱 엔진(220e)를 포함하는 도 1의 컴퓨팅 시스템(1000)이 모바일 폰인 경우, PCM 믹서(600)에 의해서 사용자의 음성으로부터 생성된 TX PCM 데이터(TX_PCM)를 처리하는 동작 및 상대방의 단말기(예컨대, 모바일 폰)로부터 수신된 오디오 데이터로부터 RX PCM 데이터(RX_PCM)를 생성하는 동작이 호스트 CPU(100e) 및 오디오 프로세싱 엔진(220e)에 의해서 병렬적으로 수행될 수 있다. 이에 따라, 컴퓨팅 시스템(1000)은 높은 처리량을 제공할 수 있다.
RX PCM 데이터(RX_PCM) 및 TX PCM 데이터(TX_PCM)는 일정한 시간 간격으로 정렬된 복수의 샘플들(RX_SAM1, RX_SAM2, TX_SAM1, TX_SAM2)을 포함할 수 있다. 예를 들면, 도 11에 도시된 바와 같이, 인접한 2개의 샘플들(예컨대, RX_SAM1 및 RX_SAM2) 사이는 약 20 ms일 수 있다. 모바일 폰과 같이 PCM 데이터(RX_PCM, TX_PCM)가 음성에 대응하는 경우, 샘플들 사이의 간격은 음성 프레임(voice frame)으로서 지칭될 수 있다. RX PCM 데이터(RX_PCM) 및 TX_PCM 데이터(TX_PCM) 각각의 샘플은 음성 프레임 내에 처리되거나 생성되어야만 사운드가 정상적으로 출력되거나 레코딩될 수 있다. 본 개시의 예시적 실시예에 따라, 복잡한 프로세스가 호스트 CPU(100e)에 의해서 수행됨으로써, RX PCM 데이터(RX_PCM) 및 TX_PCM 데이터(TX_PCM) 각각의 샘플은 음성 프레임 내에 처리되거나 생성될 수 있다.
도 11을 참조하면, 오디오 프로세싱 엔진(220e)은 TX PCM 데이터(TX_PCM)의 샘플이 발생하는지 여부를 폴링(polling)을 통해서 체크할 수 있다. 이에 따라, 도 11에 도시된 바와 같이, T1에서 오디오 프로세싱 엔진(220e)은 TX PCM 데이터(TX_PCM)의 샘플(TX_SAM1)에 대한 프로세스로서 제1 음성 강화 프로세스(VE1)를 수행할 수 있다.
제1 음성 강화 프로세스(VE1)가 종료되는 T2에서, 오디오 프로세싱 엔진(220e)은 제1 음성 강화 프로세스(VE1)에 이어서 수행될 제2 음성 강화 프로세스(VE2)의 수행 여부를 판단할 수 있다. 즉, 오디오 프로세싱 엔진(220e)은 제2 음성 강화 프로세스(VE2)의 런타임에 기초하여 제2 음성 강화 프로세스(VE2)를 직접 수행하는 경우 TX PCM 데이터(TX_PCM)의 다음 샘플(TX_SAM2)이 발생하기 전에 제2 음성 강화 프로세스(VE2)의 수행 및 인코딩 프로세스가 완료될 수 있는지 여부를 판단할 수 있다. 또한, 전술한 바와 같이 20 ms 이내에 TX PCM 데이터(TX_PCM)의 샘플(TX_SAM1) 및 RX PCM 데이터(RX_PCM)의 샘플(RX_SAM1)이 모두 처리되거나 생성되어야 하므로, 오디오 프로세싱 엔진(220e)은 TX PCM 데이터(TX_PCM)에 대한 프로세스들뿐만 아니라, RX PCM 데이터(RX_PCM)에 대한 프로세스들의 런타임을 고려할 수 있다.
도 11에 도시된 바와 같이, 오디오 프로세싱 엔진(220e)은 제2 음성 강화 프로세스(VE2)의 수행을 호스트 CPU(100e)에 요청할 수 있고, 호스트 CPU(100e)는 제2 음성 강화 프로세스(VE2)를 수행할 수 있다. 호스트 CPU(100e)는 제2 음성 강화 프로세스(VE2)의 수행이 완료되면 오디오 프로세싱 엔진(220e)에 이를 알릴 수 있다.
오디오 프로세싱 엔진(220e)은 제2 음성 강화 프로세스(VE2)의 수행을 호스트 CPU(100e)에 요청한 이후, 인터럽트를 사용함으로써 스피커(700)를 통해서 사운드로 출력될 오디오 데이터가 상대방 단말기로부터 수신되는 것을 인식할 수 있다. 이에 따라, 도 11에 도시된 바와 같이, T3에서 오디오 프로세싱 엔진(220e)은 수신된 오디오 데이터를 디코딩하는 프로세스를 수행할 수 있다.
T4에서 오디오 프로세싱 엔진(220e)은 디코딩 프로세스의 수행을 완료할 수 있고, 제3 음성 강화 프로세스(VE3)의 수행 여부를 판단할 수 있다. 제3 음성 강화 프로세스(VE3)의 런타임에 기초하여, 도 11에 도시된 바와 같이 T5에서 오디오 프로세싱 엔진(220e)은 제3 음성 강화 프로세스(VE3)를 수행할 수 있다.
T6에서 오디오 프로세싱 엔진(220e)은 제3 음성 강화 프로세스(VE3)의 수행을 완료할 수 있고, 제4 음성 강화 프로세스(VE4)의 수행 여부를 판단할 수 있다. 제4 음성 강화 프로세스(VE4)의 런타임에 기초하여, 도 11에 도시된 바와 같이 오디오 프로세싱 엔진(220e)은 제4 음성 강화 프로세스(VE4)의 수행을 호스트 CPU(100e)에 요청할 수 있고, 호스트 CPU는 제4 음성 강화 프로세스(VE4)를 수행할 수 있다.
오디오 프로세싱 엔진(220e)은 제4 음성 강화 프로세스(VE4)의 수행을 호스트 CPU(100e)에 요청한 이후, TX PCM 데이터(PT_PCM)의 샘플(TX_SAM1)에 대한 제2 음성 강화 프로세스(VE2)가 호스트 CPU(100e)에 의해서 완료될 때까지 기다릴 수 있다. 도 11에 도시된 바와 같이, 제2 음성 강화 프로세스(VE2)는 T4 전에 호스트 CPU(100e)에 의해서 완료되었으므로, T7에서 오디오 프로세싱 엔진(220e)은 제2 음성 강화 프로세스(VE2)가 수행된 결과 데이터에 대하여, 인코딩 프로세스를 수행할 수 있다. T8에서 인코딩 프로세스는 완료될 수 있고, 인코딩된 오디오 데이터는 상대방 단말 장치에 전송될 수 있다. T9에서 오디오 프로세싱 엔진(220e)은, 호스트 CPU(100e)에 의해서 수행된 제4 음성 강화 프로세스(VE4)의 결과인 RX PCM 데이터(RX_PCM)의 샘플(RX_SAM2)을 PCM 믹서(600)로 전송할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 오디오 서브시스템(200f)의 블록도이다. 도 1을 참조하여 전술한 바와 같이, 오디오 서브 시스템(200f)은 소스 오디오 데이터를 처리함으로써 RX PCM 데이터(RX_PCM)를 생성하거나, TX PCM 데이터(TX_PCM)를 처리함으로써 타겟 오디오 데이터를 생성할 수 있다.
도 12에 도시된 바와 같이, 오디오 서브시스템(200f)은 오디오 프로세싱 엔진(220f), 스트림 버퍼(240f) 및 룩업 테이블(260f)을 포함할 수 있다. 도 12의 오디오 프로세싱 엔진(220f) 및 스트림 버퍼(240f)는 도 4의 오디오 프로세싱 엔진(220a) 및 스트림 버퍼(240a)와 유사할 수 있다.
룩업 테이블(260f)은 오디오 데이터에 대한 프로세스들의 런타임 정보를 저장할 수 있다. 예를 들면, 룩업 테이블(260f)은 일정 개수의 샘플들에 대하여 제1 프로세스를 수행하는데 걸리는 시간을 제1 프로세스의 런타임 정보로서 저장할 수 있다. 도 3을 참조하여 전술한 바와 같이 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단하기 위하여, 오디오 프로세싱 엔진(220f)은 룩업 테이블(260f)을 엑세스함으로써 제1 프로세스에 대한 런타임 정보를 취득할 수 있다. 룩업 테이블(260f)에 대한 상세한 내용은 도 13을 참조하여 후술될 것이다.
도 13은 본 개시의 예시적 실시예에 따른 도 12의 룩업 테이블(260f)의 예시(260f’)를 나타내는 도면이다. 도 12를 참조하여 전술한 바와 같이, 룩업 테이블(260f’)은 오디오 데이터에 대한 프로세스들의 런타임 정보를 저장할 수 있다. 도 13을 참조하면, 룩업 테이블(260f’)은 4개의 프로세스들(P1 내지 P4)에 대한 런타임 정보를 포함할 수 있다.
도 1의 컴퓨팅 시스템(1000)은 복수의 동작 모드들을 지원할 수 있다. 예를 들면, 컴퓨팅 시스템(1000)은 정상 모드, 절전 모드, 초절전 모드 등을 지원할 수 있고, 컴퓨팅 시스템(1000)의 구성요소들은 설정된 모드에 따라 동작할 수 있다. 예를 들면, 도 12의 오디오 프로세싱 엔진(220f)은 절전 모드 또는 초절전 모드시 동작 속도를 감소시킬 수 있다. 이에 따라, 룩업 테이블(260f’)은 복수의 모드들에 대응하는 프로세스들의 런타임 정보를 저장할 수 있다.
도 13을 참조하면, 오디오 프로세싱 엔진(220f)은 제1 내지 제3 모드들을 지원할 수 있고, 제1 내지 제3 모드들에 대응하는 제1 내지 제4 프로세스들(P1 내지 P4)의 런타임 정보를 저장할 수 있다. 예를 들면, 제2 프로세스(P2)는 제1 내지 제3 모드들에서 40 ms, 50 ms 및 60 ms의 런타임을 각각 가질 수 있다.
본 개시의 예시적 실시예에 따라, 룩업 테이블(260f’)은 갱신될 수 있다. 예를 들면, 도 1의 호스트 CPU(100)는 주변기기들(300) 또는 메모리 서브시스템(400)으로부터 신규한 프로세스의 런타임 정보를 취득할 수 있다. 오디오 서브 시스템(200f)은 신규한 프로세스의 런타임 정보를 수신할 수 있고, 수신된 정보에 따라 룩업 테이블(260f’)이 갱신될 수 있다.
도 14는 본 개시의 예시적 실시예에 따라 호스트 CPU(100) 및 오디오 프로세싱 엔진(220) 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다. 구체적으로, 도 14는 오디오 재생시 호스트 CPU(100) 및 오디오 프로세싱 엔진(220) 사이의 동작을 시간의 흐름에 따라 나타낸다.
단계 S101에서, 호스트 CPU(100)는 오디오 프로세싱 엔진(220)에 오디오 재생을 요청할 수 있다. 예를 들면, 호스트 CPU(100)는 사용자 입력에 응답하여, 소스 오디오 데이터를 엑세스할 수 있는 정보 및 소스 오디오 데이터에 대하여 수행될 프로세스들의 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다.
단계 S102에서, 오디오 프로세싱 엔진(220)은 소스 오디오 데이터를 디코딩할 수 있다. 예를 들면, 소스 오디오 데이터는 오디오 코덱에 기초하여 압축된 데이터일 수 있고, 오디오 프로세싱 엔진(220)은 소스 오디오 데이터를 디코딩함으로써 스트림 데이터를 생성할 수 있다.
단계 S103에서, 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 도 14의 예시에서, 제1 프로세스는 오디오 데이터에 대하여 수행되는 복수의 포스트 프로세스들 중 하나일 수 있다. 예를 들면, 호스트 CPU(100)의 오디오 재생 요청시 전달된 프로세스들 정보는 제1 프로세스 정보를 포함할 수 있고, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스를 오디오 프로세싱 엔진(220)에서 수행할지 여부를 판단할 수 있다.
제1 프로세스의 수행이 가능한 것으로 판단되는 경우, 단계 S104에서 오디오 프로세싱 엔진(220)은 제1 프로세스를 수행할 수 있다. 다른 한편으로, 제1 프로세스의 수행이 불가능한 것으로 판단되는 경우, 단계 S105에서 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행을 호스트 CPU(100)에 요청할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)은 호스트 CPU(100)에 인터럽트를 발생시킬 수 있고, 제1 프로세스를 수행하기 위한 정보를 호스트 CPU(100)에 전달할 수 있다.
단계 S106에서, 호스트 CPU(100)는 제1 프로세스를 수행할 수 있다. 예를 들면, 호스트 CPU(100)는 커널 및 커널 상에서 실행되는 어플리케이션 프로그램을 실행할 수 있고, 호스트 CPU(100)는 어플리케이션 프로그램에 의해서 제1 프로세스를 수행할 수 있다.
단계 S107에서, 호스트 CPU(100)는 제1 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다. 예를 들면, 호스트 CPU(100)는 제1 프로세스의 수행의 완료를 나타내는 신호뿐만 아니라 제1 프로세스의 수행과 관련된 에러 정보 및 로그 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다.
도 15는 본 개시의 예시적 실시예에 따라 호스트 CPU(100) 및 오디오 프로세싱 엔진(22) 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다. 구체적으로, 도 15는 사운드 레코딩시 호스트 CPU(100) 및 오디오 프로세싱 엔진(220) 사이의 동작을 시간의 흐름에 따라 나타낸다.
단계 S201에서, 호스트 CPU(100)는 오디오 프로세싱 엔진(200)에 사운드 레코딩을 요청할 수 있다. 예를 들면, 호스트 CPU(100)는 통화 기능이 활성화되는 경우 사용자의 음성을 레코딩하기 위하여, TX PCM 데이터(TX_PCM)에 대하여 수행될 프로세스들의 정보 및 타겟 오디오 데이터가 저장될 어드레스 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다.
단계 S202에서, 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 도 15의 예시에서, 제1 프로세스는 TX PCM 데이터(TX_PCM)에 대아혀 수행되는 복수의 프리 프로세스들 중 하나일 수 있다. 예를 들면, 호스트 CPU(100)의 사운드 레코딩 요청시 전달된 프로세스들 정보는 제1 프로세스 정보를 포함할 수 있고, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스를 오디오 프로세싱 엔진(220)에서 수행할지 여부를 판단할 수 있다.
제1 프로세스의 수행이 가능한 것으로 판단되는 경우, 단계 S203에서 오디오 프로세싱 엔진(22)은 제1 프로세스를 수행할 수 있다. 다른 한편으로, 제1 프로세스의 수행이 불가능한 것으로 판단되는 경우, 단계 S204에서 오디오 프로세싱 엔진(22)은 제1 프로세스의 수행을 호스트 CPU(100)에 요청할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)은 호스트 CPU(100)에 인터럽트를 발생시킬 수 있고, 제1 프로세스를 수행하기 위한 정보를 호스트 CPU(100)에 전달할 수 있다.
단계 S205에서, 호스트 CPU(100)는 제1 프로세스를 수행할 수 있고, 단계 S206에서, 호스트 CPU(100)는 제1 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다. 오디오 프로세싱 엔진(220)은 제1 프로세스가 수행된 데이터에 대하여 추가적인 프리 프로세스를 직접 수행하거나 호스트 CPU(100)에 추가적인 프리 프로세스의 수행을 요청할 수 있다.
단계 S207에서, 오디오 프로세싱 엔진(220)은 타겟 오디오 데이터를 생성할 수 있다. 즉, 단계 S201에서 호스트 CPU(100)로부터 사운드 레코딩 요청시 전달된 프리 프로세스들의 수행이 완료된 이후, 오디오 프로세싱 엔진(220)은 데이터를 인코딩함으로써 타겟 오디오 데이터를 생성할 수 있다. 생성된 타겟 오디오 데이터는 컴퓨팅 시스템(1000)에 저장되거나, 컴퓨팅 시스템(1000)의 외부로 전송될 수 있다.
도 16은 본 개시의 예시적 실시예에 따라 호스트 CPU(100) 및 오디오 프로세싱 엔진(220) 사이의 동작을 시간의 흐름에 따라 나타내는 도면이다. 구체적으로, 도 16은 오디오를 재생하는 동안 사용자가 오디오 재생에 관한 입력을 제공하는 경우, 호스트 CPU(100) 및 오디오 프로세싱 엔진(220) 사이의 동작을 시간의 흐름에 따라 나타낸다.
단계 3201에서, 호스트 CPU(100)는 오디오 프로세싱 엔진(200)에 오디오 재생을 요청할 수 있다. 단계 S302에서, 오디오 프로세싱 엔진(220)은 소스 오디오 데이터를 디코딩할 수 있다. 오디오 프로세싱 엔진(200)은 소스 오디오 데이터를 디코딩함으로써 생성된 스트림 데이터에 대하여 적어도 하나의 프로세스를 더 수행할 수 있다.
오디오 재생 중, 단계 S303에서 호스트 CPU(100)는 제1 프로세스의 수행을 지시하는 사용자 입력을 수신할 수 있다. 예를 들면, 사용자는 사운드 이펙트 기능을 활성화할 수 있고, 호스트 CPU(100)는 사운드 이펙트 프로세스를 지시하는 것으로서 사용자의 입력을 해석할 수 있다.
단계 S304에서, 호스트 CPU(100)는 제1 프로세서의 수행을 오디오 프로세싱 엔진(220)에 요청할 수 있다. 예를 들면, 호스트 CPU(100)는 도 10a의 “Mail Box”를 사용하여 오디오 프로세싱 엔진(220)에 제1 프로세스의 수행을 요청할 수 있다. 일 실시예에서, 호스트 CPU(100)는 제1 프로세스의 수행 요청과 함께 제1 프로세스의 런타임 정보를 오디오 프로세싱 엔진(220)에 전달할 수도 있다. 즉, 오디오 프로세싱 엔진(220)은 도 13을 참조하여 전술한 바와 같은 룩업 테이블(260f)뿐만 아니라 호스트 CPU(100)로부터 수신된 제1 프로세스의 런타임 정보를 참조할 수 있다.
단계 S305에서, 오디오 프로세싱 엔진(220)은 제1 프로세스의 런타임에 기초하여 제1 프로세스의 수행 가능 여부를 판단할 수 있다. 제1 프로세스의 수행이 가능한 것으로 판단되는 경우, 단계 S306에서 오디오 프로세싱 엔진(220)은 제1 프로세스를 수행할 수 있다. 다른 한편으로, 제1 프로세스의 수행이 불가능한 것으로 판단되는 경우, 단계 S307에서 오디오 프로세싱 엔진(220)은 제1 프로세스의 수행을 호스트 CPU(100)에 요청할 수 있다. 단계 S308에서 호스트 CPU(100)는 오디오 프로세싱 엔진(220)의 요청에 응답하여 제1 프로세스를 수행할 수 있고, 단계 S309에서 호스트 CPU(100)는 제1 프로세스의 수행 결과 정보를 오디오 프로세싱 엔진(220)에 전달할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 오프로드 오디오 프로세싱 시스템으로서 컴퓨팅 시스템(2000)의 블록도를 나타낸다. 도 1의 컴퓨팅 시스템(1000)과 유사하게 컴퓨팅 시스템(2000)은 사운드를 재생하고, 사운드를 레코딩할 수 있는 시스템으로서, 비제한적인 예시로서 PC(personal computer), 태블릿 PC(tablet PC), 모바일 폰(mobile phone), 스마트 폰(smart phone), e-리더(e-reader), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camer), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대형 게임 콘솔(handheld game console) 등으로 구현될 수 있다.
도 17에 도시된 바와 같이, 컴퓨팅 시스템(2000)은 어플리케이션 프로세서(application processor; AP)(2100), PCM 믹서(2200), 스피커(2300), 마이크(2400), 모뎀(2500), 외부 메모리(2600) 및 메모리 카드(2700)를 포함할 수 있다.
어플리케이션 프로세서(2100)는, 컴퓨팅 시스템(2000)을 위한 운영체제 및 어플리케이션들을 기동시키는(activate) 시스템-온-칩(system-on-chip; SoC)으로서, 컴퓨팅 시스템(2000)의 다른 구성요소들을 제어할 수 있다. 도 17에 도시된 바와 같이, 어플리케이션 프로세서(2100)는 호스트 CPU(2110), 멀티미디어 가속 블록(2120), 주변기기들(2130), 내부 메모리(2140) 및 메모리 인터페이스(2150)를 포함할 수 있다. 어플리케이션 프로세서(2100)의 구성요소들은 시스템 버스(2150)에 통신가능하게 연결될 수 있고, 시스템 버스(2150)는 멀티 레이어 버스일 수 있다.
도 17에 도시된 바와 같이, 호스트 CPU(210)는 복수의 코어들(2111 내지 2114)을 포함할 수 있고, 코어들 각각은 독립적으로 명령어들을 실행할 수 있다. 도 17에 도시되지 아니하였으나 호스트 CPU(2110)는 계층화된 캐쉬 메모리를 포함할 수 있고, 도 17에 도시된 바와 달리 호스트 CPU(2110)는 4개 미만 또는 4개 초과의 코어들을 포함할 수도 있다. 본 개시의 예시적 실시예에 따라, 호스트 CPU(2110)는 오디오 프로세싱 엔진(예컨대, 오디오 프로세싱 모듈(2121)에 포함된 프로세서)의 요청에 응답하여 오디오 프로세스를 수행할 수 있다.
멀티미디어 가속 블록(2120)은 멀티미디어 데이터를 처리하는 복수의 로직 블록들을 포함할 수 있다. 멀티미디어 가속 블록(2120)에 포함된 복수의 로직 블록들 각각은 멀티미디어 데이터의 처리를 담당함으로써 어플리케이션 프로세서(2100) 및 컴퓨팅 시스템(2000)의 효율을 높일 수 있다. 예를 들면, 도 17에 도시된 바와 같이 멀티미디어 가속 블록(2120)은 오디오 프로세싱 모듈(2121), 비디오 프로세싱 모듈(2122), 디스플레이 구동 모듈(2123) 및 이미지 프로세싱 모듈(2124)을 포함할 수 있다. 오디오 프로세싱 모듈(2121)은 소스 오디오 데이터를 처리함으로써 사운드를 재생하기 위한 데이터, 즉 RX PCM 데이터(RX_PCM)를 생성할 수 있다. 또한, 오디오 프로세싱 모듈(2121)은 사운드로부터 생성된 TX PCM 데이터(TX_PCM)를 처리함으로써 타겟 오디오 데이터를 생성할 수도 있다. 비디오 프로세싱 모듈(2122)은 비디오 코덱에 따라 압축된 소스 비디오 데이터를 디코딩할 수 있다. 디스플레이 구동 모듈(2123)은 컴퓨팅 시스템(2000)의 디스플레이 장치(미도시)에 제공되는 신호에 대응하는 데이터를 생성할 수 있다. 이미지 프로세싱 모듈(2124)은 이미지 코덱에 따라 압축된 소스 이미지 데이터를 디코딩할 수 있다.
본 개시의 예시적 실시예에 따라, 오디오 프로세싱 모듈(2121)은 전술된 실시예들에 따른 오디오 프로세싱 엔진으로서 기능할 수 있고, 오디오 데이터에 대한 프로세스의 수행 가능 여부를 판단할 수 있다. 이에 따라, 오디오 프로세싱 모듈(2121) 은 과도하게 높은 성능을 가지지 아니함에도 불구하고, 높은 복잡도를 가지는 프로세스가 오디오 프로세싱 모듈(2121) 대신 호스트 CPU(2110)에 의해서 수행될 수 있다.
주변기기들(2130)은 다양한 기능들을 각각 수행하는 복수의 로직 블록들을 포함할 수 있다. 예를 들면, 도 17에 도시된 바와 같이, 주변기기들(2130)은 DMA(direct memory access) 컨트롤러(2131), 커넥티비티 모듈(2132) 및 아날로그 디지털 컨버터(2133)를 포함할 수 있다.
DMA 컨트롤러(2131)는 시스템 버스(2150)를 통해서 수행되는 DMA 동작을 제어할 수 있다. 예를 들면, DMA 컨트롤러(2131)는 호스트 CPU(2110)가 관여하지 아니하면서 오디오 프로세싱 모듈(2121)이 내부 메모리(2140) 또는 메모리 인터페이스(215)를 통한 외부 메모리(2600)에 저장된 데이터에 엑세스하는 동작을 제어할 수 있다.
커넥티비티 모듈(2132)은 어플리케이션 프로세서(2100)와 컴퓨팅 시스템(2000)의 다른 구성요소들 또는 컴퓨팅 시스템(2000)의 외부 장치와 통신하기 위한 통신 표준을 지원하는 복수의 로직 블록들을 포함할 수 있다. 예를 들면, 도 17에 도시된 바와 같이, 커넥티비티 모듈(2132)은 I2S(integrated interchip sound)와 같은 시리얼 버스 인터페이스 표준을 지원하는 로직 블록을 포함할 수 있고, 오디오 프로세싱 모듈(2121)에 의해서 생성된 PCM 데이터(D_PCM)를 I2S를 통해서, PCM 데이터(D_PCM)로부터 아날로그 신호를 생성하는 PCM 믹서(2200)에 전송할 수 있다.
도 17을 참조하면, 커넥티비티 모듈(2132)은 모뎀(2500)과의 통신을 지원하는 로직 블록을 포함할 수 있다. 모뎀(2500)은 컴퓨팅 시스템(2000)이 컴퓨팅 시스템(2000) 외부의 다른 컴퓨팅 시스템과 통신하기 위한 인터페이스를 제공할 수 있다. 예를 들면, 모뎀(2500)은 무선 이동 통신을 위한 인터페이스를 제공할 수 있고, 안테나를 통해서 다른 컴퓨팅 시스템으로부터 소스 오디오 데이터를 수신할 수도 있고 타겟 오디오 데이터를 전송할 수도 있다.
또한, 커넥티비티 모듈(2132)은 카드 인터페이스, 예컨대 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick)의 인터페이스들을 지원하는 로직 블록을 포함할 수 있다. 커넥티비티 모듈(2132)은 메모리 카드(2700)로부터 메모리 카드(2700)에 저장된 소스 오디오 데이터를 독출할 수 있고, 독출된 소스 오디오 데이터를 오디오 프로세싱 모듈(2121), 내부 메모리(2140) 또는 외부 메모리(2600)에 전달할 수 있다.아날로그 디지털 컨버터(2133)는 아날로그 신호를 수신함으로써 디지털 데이터를 출력할 수 있다. 예를 들면, 아날로그 디지털 컨버터(2133)는 컴퓨팅 시스템(2000)에 포함된 터치 스크린(미도시)을 통해서 수신된 사용자의 입력을 변환하는데 사용될 수 있다. 호스트 CPU(2110)는 주변기기들(213)의 아날로그 디지털 컨버터(2133)의 출력 데이터를 참조함으로써 사용자의 입력을 해석할 수 있다.
내부 메모리(2140)는 어플리케이션 프로세서(2100)에 포함된 메모리 서브시스템으로서, 시스템 버스(2150)에 통신가능하게 연결될 수 있다. 도 17에 도시된 바와 같이, 내부 메모리(2140)는 SRAM(2141) 및 ROM(2142)을 포함할 수 있고, 어플리케이션 프로세서(2100)의 구성요소들은 시스템 버스(2150)를 통해서 SRAM(2141) 및 ROM(2142)에 엑세스할 수 있다.
메모리 인터페이스(2150)는 외부 메모리(2600)에 대한 어플리케이션 프로세서(2100)의 인터페이스를 제공할 수 있다. 예를 들면, 외부 메모리(2600)는 DRAM(2610) 및 플래시(2620)를 포함할 수 있고, 메모리 인터페이스(2150)는 DRMA 컨트롤러 및 플래시 컨트롤러를 포함할 수 있다. 오디오 프로세싱 모듈(2121)이 오디오 프로세싱을 수행하는 동안 생성되는 오디오 데이터 및/또는 오디오 프로세싱 모듈(2121)의 오디오 프로세싱 엔진의 요청에 의해서 호스트 CPU(2110)가 프로세스를 수행하는 동안 생성되는 오디오 데이터는, 외부 메모리(2600)의 DRAM(2610) 또는 내부 메모리(2140)의 SRAM(2141)에 저장될 수 있다.
도 18은 본 개시의 예시적 실시예에 따른 컴퓨터로 읽을 수 있는 저장 장치를 나타내는 도면이다. 컴퓨터로 읽을 수 있는 저장 장치(3000)는 컴퓨터에 명령어들 및/또는 데이터를 제공하는데 사용되는 동안 컴퓨터에 의해 읽혀질 수 있는 임의의 저장 장치를 포함할 수 있다. 예를 들면, 컴퓨터로 읽을 수 있는 저장 장치(3000)는 디스크, 테이프, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW 등과 같은 자기 또는 광학 매체, RAM, ROM, 플래시 메모리 등과 같은 휘발성 또는 비휘발성 메모리, USB 인터페이스를 통해서 엑세스 가능한 비휘발성 메모리, 그리고 MEMS (microelectromechanical systems) 등을 포함할 수 있다. 컴퓨터로 읽을 수 있는 저장 장치는 컴퓨터에 삽입 가능하거나, 컴퓨터 내에 집적되거나, 네트워크 및/또는 무선 링크와 같은 통신 매개체를 통해서 컴퓨터와 결합될 수 있다. 도 18을 참조하면, 컴퓨터로 읽을 수 있는 저장 장치(3000)는 호스트 CPU(100)가 엑세스 가능한 영역(3100) 및 오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)을 포함할 수 있다.
호스트 CPU(100)가 엑세스 가능한 영역(3100)은, 본 개시의 예시적 실시예에 따른 오디오 프로세싱 방법을 수행하기 위하여 호스트 CPU(100)가 실행하는 복수의 명령어들을 포함하는 프로그램을 포함할 수 있고, 호스트 CPU(100)는 영역(3100)을 엑세스함으로써 명령어들을 실행할 수 있다. 예를 들면, 호스트 CPU(100)가 엑세스 가능한 영역(3100)은 도 10a에 도시된 오디오 프로세싱 엔진 드라이버(41), 오디오 HAL(31) 및 사운드 이펙트 프로그램(32) 중 적어도 하나에 대응하는 명령어들을 포함할 수 있다.
오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)은 본 개시의 예시적 실시예에 따른 오디오 프로세싱 방법을 수행하기 위하여 오디오 프로세싱 엔진(220)이 실행하는 복수의 명령어들을 포함하는 프로그램을 포함할 수 있고, 오디오 프로세싱 엔진(220)은 영역(3220)을 엑세스함으로써 명령어들을 실행할 수 있다. 예를 들면, 오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)은 도 10a에 도시된 디코딩 프로세스(11), 배속 재생 프로세스(12), 샘플링 레이트 변환 프로세스(13) 중 적어도 하나에 대응하는 명령어들을 포함할 수 있고, 호스트 CPU(100)에 프로세스의 수행을 요청하는 동작(19)에 대응하는 명령어들을 포함할 수 있다. 또한, 오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)은 도 10b에 도시된 필터링 프로세스(21), 샘플링 레이트 변환 프로세스(22), 인코딩 프로세스(24) 중 적어도 하나에 대응하는 명령어들을 포함할 수 있고, 호스트 CPU(100)에 프로세스의 수행을 요청하는 동작(29)에 대응하는 명령어들을 포함할 수 있다.
도 18은, 호스트 CPU(100)가 엑세스 가능한 영역(3100) 및 오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)은 컴퓨터로 읽을 수 있는 하나의 저장 장치(3000)에 저장되는 예시를 도시하고 있으나, 본 개시의 기술적 사상이 이에 제한되지 아니한다. 예를 들면, 호스트 CPU(100)가 엑세스 가능한 영역(3100) 및 오디오 프로세싱 엔진(220)이 엑세스 가능한 영역(3200)은 상이한 2개 이상의 저장 장치들에 각각 저장될 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 호스트 CPU 및 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에 의한 오디오 프로세싱 방법으로서,
    상기 오디오 프로세싱 엔진에서, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 상기 오디오 프로세싱 엔진에 의한 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계;
    상기 오디오 프로세싱 엔진에서, 상기 판단 결과에 기초하여 상기 제1 프로세스를 수행하거나 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계; 및
    상기 오디오 프로세싱 엔진이 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 경우, 상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 제1 프로세스를 수행함으로써 제2 오디오 데이터를 생성하는 단계를 포함하는 오디오 프로세싱 방법.
  2. 제1항에 있어서,
    상기 컴퓨팅 시스템은 스트림 버퍼를 더 포함하고,
    상기 오디오 프로세싱 엔진에서 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계는,
    상기 제1 프로세스의 수행이 상기 스트림 버퍼에서 언더런(underrun) 또는 오버플로우(overflow)를 유발하는지 여부를 판단하는 단계; 및
    상기 언더런 또는 오버플로우가 유발되는 것으로 판단된 경우 상기 오디오 프로세싱 엔진에 의한 상기 제1 프로세스의 수행을 불가능으로 결정하고, 상기 언더런 또는 오버플로우가 유발되지 아니하는 것으로 판단된 경우 상기 오디오 프로세싱 엔진에 의한 상기 제1 프로세스의 수행을 가능으로 결정하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  3. 제1항에 있어서,
    상기 호스트 CPU에서 상기 제1 프로세스의 런타임은, 상기 오디오 프로세싱 엔진에서 상기 제1 프로세스의 런타임 보다 짧은 것을 특징으로 하는 오디오 프로세싱 방법.
  4. 제1항에 있어서,
    상기 오디오 프로세싱 엔진은, 상기 제1 프로세스의 런타임 정보를 저장하는 룩업 테이블을 포함하고,
    상기 오디오 프로세싱 엔진에서 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계는, 상기 룩업 테이블을 참조함으로써 상기 제1 프로세스의 런타임 정보을 취득하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  5. 제1항에 있어서,
    상기 호스트 CPU에서, 상기 컴퓨팅 시스템의 외부로부터 수신된 입력에 응답하여 상기 제1 프로세스의 수행을 상기 오디오 프로세싱 엔진에 요청하는 단계를 더 포함하고,
    상기 오디오 프로세싱 엔진에서 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계는, 상기 호스트 CPU의 요청에 응답하여 상기 오디오 프로세싱 엔진에 의해서 수행되는 것을 특징으로 하는 오디오 프로세싱 방법.
  6. 제5항에 있어서,
    상기 호스트 CPU에서 상기 제1 프로세스의 수행을 상기 오디오 프로세싱 엔진에 요청하는 단계는, 상기 오디오 프로세싱 엔진에서의 상기 제1 프로세스의 런타임 정보를 상기 오디오 프로세싱 엔진에 전달하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  7. 제1항에 있어서,
    상기 오디오 프로세싱 엔진에서 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계는,
    상기 호스트 CPU에 인터럽트를 발생시키는 단계; 및
    상기 제1 프로세스의 수행에 관한 정보를 전달하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  8. 제7항에 있어서,
    상기 제1 프로세스의 수행에 관한 정보는, 상기 제1 및 제2 오디오 데이터에 대한 엑세스 정보 및 상기 제1 프로세스의 파라미터들을 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  9. 제1항에 있어서,
    상기 제1 프로세스는, 소스 오디오 데이터를 디코딩함으로써 생성된 스트림 데이터에 수행되는 포스트 프로세싱에 포함된 복수의 프로세스들 중 하나인 것을 특징으로 하는 오디오 프로세싱 방법.
  10. 제1항에 있어서,
    상기 제1 프로세스는, 타겟 오디오 데이터로 인코딩되기 전 스트림 데이터에 수행되는 프리 프로세싱에 포함된 복수의 프로세스들 중 하나인 것을 특징으로 하는 오디오 프로세싱 방법.
  11. 제1항에 있어서,
    상기 호스트 CPU에서, 상기 제1 프로세스의 완료 정보를 상기 오디오 프로세싱 엔진으로 전달하는 단계; 및
    상기 오디오 프로세싱 엔진에서, 상기 제2 오디오 데이터에 대한 제2 프로세스를 수행함으로써 제3 오디오 데이터를 생성하는 단계를 더 포함하는 오디오 프로세싱 방법.
  12. 제1항에 있어서,
    상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진으로부터의 요청은 상기 호스트 CPU에서 실행되는 커널에 의해서 처리되고,
    상기 제1 프로세스는 상기 호스트 CPU에서 실행되는 어플리케이션 프로그램에 의해서 수행되는 것을 특징으로 하는 오디오 프로세싱 방법.
  13. 호스트 CPU 및 오디오 프로세싱 엔진을 포함하는 컴퓨팅 시스템에 의한 오디오 프로세싱 방법으로서,
    상기 호스트 CPU에서, 오디오 데이터에 대한 복수의 프로세스들에 관한 정보를 오디오 프로세싱 엔진에 전달하는 단계;
    상기 오디오 프로세싱 엔진에서, 상기 복수의 프로세스들의 런타임에 기초하여 상기 오디오 프로세싱 엔진에 의한 상기 복수의 프로세스들의 수행 가능 여부를 판단하는 단계;
    상기 오디오 프로세싱 엔진에서, 상기 판단 결과에 기초하여 상기 복수의 프로세스들 중 적어도 하나의 프로세스를 수행하거나 상기 적어도 하나의 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계; 및
    상기 오디오 프로세싱 엔진이 적어도 하나의 프로세스의 수행을 상기 호스트 CPU에 요청하는 경우, 상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 적어도 하나의 프로세스를 수행하는 단계를 포함하는 오디오 프로세싱 방법.
  14. 제13항에 있어서,
    상기 컴퓨팅 시스템은 스트림 버퍼를 더 포함하고,
    상기 오디오 프로세싱 엔진에서 상기 적어도 하나의 프로세스의 수행 가능 여부를 판단하는 단계는,
    상기 적어도 하나의 프로세스의 수행이 상기 스트림 버퍼에서 언더런(underrun) 또는 오버플로우(overflow)를 유발하는지 여부를 판단하는 단계; 및
    상기 언더런 또는 오버플로우가 유발되는 것으로 판단된 경우 상기 오디오 프로세싱 엔진에 의한 상기 적어도 하나의 프로세스의 수행을 불가능으로 결정하고, 상기 언더런 또는 오버플로우가 유발되지 아니하는 것으로 판단된 경우 상기 오디오 프로세싱 엔진에 의한 상기 적어도 하나의 프로세스의 수행을 가능으로 결정하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  15. 제13항에 있어서,
    상기 호스트 CPU에서 상기 적어도 하나의 프로세스의 런타임은, 상기 오디오 프로세싱 엔진에서 상기 적어도 하나의 프로세스의 런타임 보다 짧은 것을 특징으로 하는 오디오 프로세싱 방법.
  16. 제13항에 있어서,
    상기 오디오 프로세싱 엔진은, 상기 복수의 프로세스들의 런타임 정보를 저장하는 룩업 테이블을 포함하고,
    상기 오디오 프로세싱 엔진에서 상기 적어도 하나의 프로세스의 수행 가능 여부를 판단하는 단계는, 상기 룩업 테이블을 참조함으로써 상기 적어도 하나의 프로세스의 런타임 정보을 취득하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  17. 제13항에 있어서,
    상기 오디오 프로세싱 엔진에서 상기 적어도 하나의 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계는,
    상기 호스트 CPU에 인터럽트를 발생시키는 단계; 및
    상기 적어도 하나의 프로세스의 수행에 관한 정보를 전달하는 단계를 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  18. 제17항에 있어서,
    상기 적어도 하나의 프로세스의 수행에 관한 정보는, 상기 적어도 하나의 프로세스의 입력 데이터 및 출력 데이터에 대한 엑세스 정보 및 상기 적어도 하나의 프로세스의 파라미터들을 포함하는 것을 특징으로 하는 오디오 프로세싱 방법.
  19. 제13항에 있어서,
    상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청은 상기 호스트 CPU에서 실행되는 커널에 의해서 처리되고,
    상기 적어도 하나의 프로세스는 상기 호스트 CPU에서 실행되는 어플리케이션 프로그램에 의해서 수행되는 것을 특징으로 하는 오디오 프로세싱 방법.
  20. 컴퓨팅 시스템에 의해서 오디오 프로세싱 방법을 가능하게 하는 프로그램에 포함된 명령어들을 저장하는 컴퓨터로 읽을 수 있는 저장 장치로서,
    상기 컴퓨팅 시스템은, 호스트 CPU 및 오디오 프로세싱 엔진을 포함하고,
    상기 오디오 프로세싱 방법은,
    상기 오디오 프로세싱 엔진에서, 제1 오디오 데이터에 대한 제1 프로세스의 런타임에 기초하여 상기 오디오 프로세싱 엔진에 의한 상기 제1 프로세스의 수행 가능 여부를 판단하는 단계;
    상기 오디오 프로세싱 엔진에서, 상기 판단 결과에 기초하여 상기 제1 프로세스를 수행하거나 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 단계; 및
    상기 오디오 프로세싱 엔진이 상기 제1 프로세스의 수행을 상기 호스트 CPU에 요청하는 경우, 상기 호스트 CPU에서, 상기 오디오 프로세싱 엔진의 요청에 응답하여 상기 제1 프로세스를 수행함으로써 제2 오디오 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 저장 장치.
KR1020150164835A 2015-11-24 2015-11-24 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템 KR102356702B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150164835A KR102356702B1 (ko) 2015-11-24 2015-11-24 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템
US15/338,581 US10133541B2 (en) 2015-11-24 2016-10-31 Host CPU-assisted audio processing method and computing system performing the same
CN201611059413.2A CN106775556B (zh) 2015-11-24 2016-11-24 主机cpu辅助的音频处理方法及执行该方法的计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150164835A KR102356702B1 (ko) 2015-11-24 2015-11-24 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20170060409A KR20170060409A (ko) 2017-06-01
KR102356702B1 true KR102356702B1 (ko) 2022-01-27

Family

ID=58719604

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150164835A KR102356702B1 (ko) 2015-11-24 2015-11-24 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템

Country Status (3)

Country Link
US (1) US10133541B2 (ko)
KR (1) KR102356702B1 (ko)
CN (1) CN106775556B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10388273B2 (en) * 2016-08-10 2019-08-20 Roku, Inc. Distributed voice processing system
CN107959906B (zh) * 2017-11-20 2020-05-05 英业达科技有限公司 音效增强方法及音效增强系统
CN108182930B (zh) * 2017-12-18 2021-12-10 福建星网视易信息系统有限公司 音效处理方法、设备及音视频点播系统
US10861462B2 (en) * 2018-03-12 2020-12-08 Cypress Semiconductor Corporation Dual pipeline architecture for wakeup phrase detection with speech onset detection
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10846224B2 (en) * 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
CN110087170A (zh) * 2019-04-24 2019-08-02 维沃移动通信有限公司 一种音频处理方法和移动终端
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11477123B2 (en) 2019-09-26 2022-10-18 Apple Inc. Methods and apparatus for low latency operation in user space networking
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
KR20230004007A (ko) * 2021-06-30 2023-01-06 삼성전자주식회사 오디오 데이터에 오디오 효과의 중복 적용을 방지하는 방법 및 이를 지원하는 전자 장치
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
KR20230023306A (ko) * 2021-08-10 2023-02-17 삼성전자주식회사 컨텐츠 데이터를 기록하는 전자 장치 및 그 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100296676A1 (en) * 2008-01-21 2010-11-25 Takashi Fujita Sound reproducing device
US20120245718A1 (en) * 2011-03-21 2012-09-27 Microsoft Corporation Exposing off-host audio processing capabilities

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301603B1 (en) * 1998-02-17 2001-10-09 Euphonics Incorporated Scalable audio processing on a heterogeneous processor array
US7107110B2 (en) 2001-03-05 2006-09-12 Microsoft Corporation Audio buffers with audio effects
US7305273B2 (en) 2001-03-07 2007-12-04 Microsoft Corporation Audio generation system manager
US7363095B2 (en) 2003-10-08 2008-04-22 Nokia Corporation Audio processing system
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7778822B2 (en) 2006-05-19 2010-08-17 Sony Ericsson Mobile Communications Ab Allocating audio processing among a plurality of processing units with a global synchronization pulse
US7893343B2 (en) 2007-03-22 2011-02-22 Qualcomm Incorporated Musical instrument digital interface parameter storage
US8200479B2 (en) 2008-02-08 2012-06-12 Texas Instruments Incorporated Method and system for asymmetric independent audio rendering
EP2313827B1 (en) * 2008-06-11 2019-07-24 QUALCOMM Incorporated Method and system for measuring task load
US8041848B2 (en) * 2008-08-04 2011-10-18 Apple Inc. Media processing method and device
US8873771B2 (en) 2011-05-10 2014-10-28 International Business Machines Corporation Automatic volume adjustment
US20140032755A1 (en) 2012-07-26 2014-01-30 Tsung-Yu Huang Method for providing cloud computing service and a cloud computing service management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100296676A1 (en) * 2008-01-21 2010-11-25 Takashi Fujita Sound reproducing device
US20120245718A1 (en) * 2011-03-21 2012-09-27 Microsoft Corporation Exposing off-host audio processing capabilities

Also Published As

Publication number Publication date
CN106775556B (zh) 2021-08-10
US10133541B2 (en) 2018-11-20
KR20170060409A (ko) 2017-06-01
CN106775556A (zh) 2017-05-31
US20170147282A1 (en) 2017-05-25

Similar Documents

Publication Publication Date Title
KR102356702B1 (ko) 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템
KR101770932B1 (ko) 모바일 디바이스용 상시 연결형 오디오 제어
JP5911892B2 (ja) ハイバネイトからの多段レジューム
US9978384B2 (en) Audio decoding using modulator-demodulator
KR101503623B1 (ko) 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생
WO2017005010A1 (zh) 音频处理方法及设备、计算机存储介质
US20090234795A1 (en) Limiting deduplcation based on predetermined criteria
JP6200235B2 (ja) マルチメディアプロセッシングシステム及びそのマルチメディアプロセッシング方法
US20140189693A1 (en) Adaptive handling of priority inversions using transactions
JP6276470B2 (ja) ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法
US20140029764A1 (en) Virtual machine-based sound control for computerized devices in a networked computing environment
JP2013546087A (ja) プラットフォームのレジューム時間を改善する方法および装置
KR101372675B1 (ko) 분산된 오디오 처리
EP1770701A2 (en) Method of music data transcription
TWI276957B (en) Partition area architecture of an operation system common used disk and the method thereof
CN111949614A (zh) 银行系统文件转换方法及装置
CN103488502A (zh) 一种数据加载方法及装置
JP2009151763A (ja) メディア処理装置
TW201027338A (en) External storage device having a self-contained security function
CN107957687A (zh) 互联设备功能的控制方法及装置
WO2016095681A1 (zh) 应用的后台运行方法及装置
CN100588237C (zh) 数字讯号转换系统与方法
CN113934677A (zh) 数据处理方法、装置、电子设备和存储介质
WO2016040189A1 (en) System and method for sharing a solid-state non-volatile memory resource
WO2019196638A1 (zh) 基于xip方式的嵌入式系统及其资源优化方法

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