3주차_Core Audio_ key

Similar documents
(JBE Vol. 21, No. 3, May 2016) HE-AAC v2. DAB+ 120ms..,. DRM+(Digital Radio Mondiale plus) [3] xhe-aac (extended HE-AAC). DRM+ DAB HE-AAC v2 xhe-aac..

AVN2100Kor_Ç¥Áö110818F

슬라이드 제목 없음

목차 본 취급설명서의 사용법 본 사용설명서에서는 제품상에 표시된 채널명 및 버튼명, 소프트웨어의 메뉴명 등이 대괄호 ([ ]) 안에 표시됩니 (예: [MASTER] 채널, [ON/ OFF], [File] 메뉴) 시작하시기 전에 특징...3 부속품...4 시작하시기 전에

thesis

10주차.key

airDACManualOnline_Kor.key

K&R2 Reference Manual 번역본

chap10.PDF

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

The Self-Managing Database : Automatic Health Monitoring and Alerting

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc

김기남_ATDC2016_160620_[키노트].key

요약문 1 요 약 문 1. 과 제 명 : 소음노출 저감을 위한 작업환경관리 및 측정방안 연구 2. 연구기간 : ~ 연 구 자 : 연구책임자 장 재 길 (연구위원) 공동연구자 정 광 재 (연구원) 4. 연구목적 및 필요성

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

<3132BFF93136C0CFC0DA2E687770>

강의10

03장.스택.key

2 사용하기 전에 안전을 위한 주의사항 1 사용하기 전에 주의사항은 경고 와 주의 의 두 가지로 구분되어 있으며, 의미는 다음과 같습니다. >: 이 그림 기호는 위험을 끼칠 우려가 있는 사항과 조작에 대하여 주의를 환기시키기 위한 기호입니다. 이 기호가 있는 부분은 위

MPEG-4 Visual & 응용 장의선 삼성종합기술원멀티미디어랩

PCServerMgmt7

No Slide Title

歯이시홍).PDF


KT AI MAKERS KIT 사용설명서 (Node JS 편).indd

사용 설명서 이용 안내 사용 설명서의 내용은 제품의 펌웨어 버전에 따라 사용자에게 통보 없이 일부 변경될 수 있습니다. 제품의 특장점 기능을 살펴보려면 '특장점' 6쪽을 참조하세요. 제품 사용 중 문제가 발생하면 'A/S를 신청하기 전에' 53쪽을 참조하세요. 제품에

Microsoft Word - HD-35 메뉴얼_0429_.doc

CD-RW_Advanced.PDF

6주차.key

T100MD+

PowerPoint 프레젠테이션

JMF2_심빈구.PDF

XJ-A142_XJ-A147_XJ-A242_XJ-A247_XJ-A252_XJ-A257_XJ-M141_XJ-M146_XJ-M151_XJ-M156_XJ-M241_XJ-M246_XJ-M251_XJ-M256

2ndWeek_Introduction to iPhone OS.key

목차 본 취급설명서의 사용법 본 사용설명서에서는 컴퓨터 화면 상에 나타나는 화면 및 메뉴명, 또한 제품 상의 버튼 및 터미널명 등이 대괄호 안에 표시됩니 예: [CUE] 버튼을 누릅니 [UTILITY] 화면이 표시됩니 윈도우즈 [시작] 메뉴 버튼을 클릭하신 후, [모든

상기 DVD 플레이어는 거의 거치형(톱니형)으로 개발되어 텔레비젼, AC3 앰프 및 6개의 스피커 또는 단순 히 스테레오 시스템 등에 연결되어 영화 재생용으로만 특징지워지고, 반면에 상기 DVD-롬 드라이브는 컴 퓨터에 장착되어 소정의 인터페이스 방식을 통해 컴퓨터 테


chap7.key


정답-1-판매용

Dialog Box 실행파일을 Web에 포함시키는 방법

C# Programming Guide - Types

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

1217 WebTrafMon II

iOS4_13

APOGEE Insight_KR_Base_3P11

iAUDIO5_K .indd

Ⅱ. Embedded GPU 모바일 프로세서의 발전방향은 저전력 고성능 컴퓨팅이다. 이 러한 목표를 달성하기 위해서 모바일 프로세서 기술은 멀티코 어 형태로 발전해 가고 있다. 예를 들어 NVIDIA의 최신 응용프 로세서인 Tegra3의 경우 쿼드코어 ARM Corte

목차 후면 패널 연결... 3 전면 패널 컨트롤... 3 리모트 컨트롤... 4 연결하기... 5 네트워크 연결... 5 문자 입력... 5 조작 설명... 6 입력... 6 설정... 6 중요! CXN은 주로 소프트웨어 기반의 제품으로 새로운 기능과 업데이트는 수시로


untitled

User Guide

2 3

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

H3050(aap)

슬라이드 1

(JBE Vol. 22, No. 6, November 2017) (Special Paper) 22 6, (JBE Vol. 22, No. 6, November 2017) ISSN 2

07 자바의 다양한 클래스.key

PowerPoint 프레젠테이션

Modern Javascript


DE1-SoC Board

PowerPoint Presentation

°í¼®ÁÖ Ãâ·Â

유니티 변수-함수.key

Week13

No Slide Title

1

고객 카드 현대모비스 제품을 구입해 주셔서 대단히 감사합니다. A/S 마크란? 공업 진흥청이 애프터 서비스가 우수한 업체를 선정, 지정하는 마크로 애프터 서비스 센터 운영관리 등 8개 분야 45개 항목의 까다로운 심사로 결정됩니다. 주의 : 본 제품의 디자인 및 규격은

초보자를 위한 C# 21일 완성

슬라이드 제목 없음

PowerPoint 프레젠테이션

DocsPin_Korean.pages

Microsoft PowerPoint - IP11.pptx

<C7D1B1B9C0FAC0DBB1C7C0A7BFF8C8B828C0FAC0DBB1C720B1E2BCFAC6F2B0A1B8A620C0A7C7D120B9FDC1A6B5B520B0B3BCB1B9E6BEC8BFACB1B8292E687770>

13주-14주proc.PDF

DRB1598A

SRC PLUS 제어기 MANUAL

MAX+plus II Getting Started - 무작정따라하기

LXR 설치 및 사용법.doc

Microsoft Word - eClipse_사용자가이드_


¨ìÃÊÁ¡2

2002년 2학기 자료구조

Slide 1

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

Microsoft PowerPoint - PL_03-04.pptx

ICT03_UX Guide DIP 1605

목 차 3. EDIUS 시작 5. EDIUS NLE에서 K2-CAMP로 미디어 전송 5. 단계 1: EDIUS 타임라인에서 HQ 코덱으로 프로젝 트를 트랜스코딩 6. 단계 2-A: FTP를 통해 K2-CAMP에 파일 전송 9. 단계 2-B (다른방법): 외장 드라이브(

bn2019_2

, N-. N- DLNA(Digital Living Network Alliance).,. DLNA DLNA. DLNA,, UPnP, IPv4, HTTP DLNA. DLNA, DLNA [1]. DLNA DLNA DLNA., [2]. DLNA UPnP. DLNA DLNA.

歯9장.PDF

SchoolNet튜토리얼.PDF

Something that can be seen, touched or otherwise sensed

Index Process Specification Data Dictionary

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

3ÆÄÆ®-11

Orcad Capture 9.x

Transcription:

iphone OS Sound Programming 5 Core Audio For iphone OS 2010-2 Dept. of Multimedia Science, Sookmyung Women's University JongWoo Lee 1

Index 1. Introduction 2. What is Core Audio? 3. Core Audio Essentials 1) API Architectural Layers 2) Frameworks 3) Proxy Objects 4) Properties, Scopes, and Elements 5) Callback Functions: Interacting with Core Audio 6) Audio Data Formats 7) Data Format Conversion 8) Sound Files 9) Sound Streams 10) Audio Sessions: Cooperating with Core Audio 2

1. Introduction ios Mac OS X, ios Core Audio,,, (positioning),, (equalizer) (mixer) /, APIs ios Objective-C Cocoa Touch Core Audio Core Audio DRM ios,,, MIDI 3

2. What Is Core Audio? Core Audio ios Mac OS X (infrastructure) (high performance), (low latency) ios Mac OS X Core Audio in ios Mac OS X Audio Session Services; ipod 1-1 ios Core Audio architecture 4

2. What Is Core Audio? Digital Audio and Linear PCM Core Audio Linear PCM(pulse-code-modulated) PCM (sampling rate) CD (resolution bit depth) 16bit 44kHz sampling rate Sample Frame Packet (time-coincident). ) ( / ). 5

2. What Is Core Audio? Digital Audio and Linear PCM ios ios (unit converter) Audio Converter Services 6

2. What Is Core Audio? Audio Units (Audio unit) ios, (low-latency) ios, IOS 7

2. What Is Core Audio? The Hardware Abstraction Layer HAL(hardware abstraction layer), IOS AURemoteIO, HAL Mac OS X AUHAL 1-2 Hardware input through the HAL and the AUHAL unit 8

Core Audio (layerd) (cooperative) (task-focused),,, Core Audio 9

API Architectural Layers Core Audio 3 2-1 The three API layers of Core Audio 10

API Architectural Layers Core Audio Layer APIs Description High-Level Services Mid-Level Services Low-Level Services Audio Queue Services AVAudioPlayer class Extended Audio File Services OpenAL Audio Converter Services Audio File Services Audio Unit Services Audio Processing Graph Services Audio File Stream Services Core Audio Clock Services Audio Format Services I/O Kit Audio HAL(hardware abstraction layer) Core MIDI Host Time Services,,,,. ios Objective-C Audio File Services Audio Converter services positional audio OpenAL Core Audio implementation. ( ), DSP(digital signal processing), ( API, ) MIDI 11

Frameworks ios Core Audio framework Audio Toolbox framework (AudioToolbox.framework) Audio Unit framework (AudioUnit.framwork) AV Foundation framework (AVFoundation.framework) Core Audio,. ios ipod Audio Session Services, Objective-C AVAudioPlayer (ios ) Core Audio framework (CoreAudio.framework) Core Audio OpenAL framework (OpenAL.framework) positional audio OpenAL 12

Proxy Objects Core Audio,, (Proxy Object) AudioFileCreateWithURL (instantiate),, Core Audio 13

Properties, Scopes and Element (1/2) s Core Audio (property) (key-value) (property key) (property value), (accessor) Core Audio ( ) 14

Properties, Scopes and Element (2/2) s ) kaudioqueueproperty_enablelevelmetering true Core Audio,, (audio unit) / ( ) kaudiounitproperty_audiochannellayout AudioUnitGetProperty ( / ) (0,1,2, ) 15

Callback Functions: Interacting with Core Audio dd d Core Audio (Callback Functions) Core Audio. ) ) 16

Callback Functions: Interacting with Core Audio dd d. ( ), ) Audio Queue Services, (, AudioQueue.h ) typedef void (*AudioQueuePropertyListenerProc) ( void * inuserdata, AudioQueueRef inaq, AudioQueuePropertyID inid ); Code 2-1 A template for a callback function 17

Callback Functions: Interacting with Core Audio dd d 1. Objective-C, body ( inuserdata) statement Code 2-2 static void propertylistenercallback ( void *inuserdata, AudioQueueRef queueobject, AudioQueuePropertyID propertyid ) { AudioPlayer *player = (AudioPlayer *) inuserdata; // [player.notificationdelegate updateuserinterfaceonaudioqueuestatechange: player]; // notificationdelegate UI } Code 2-2 A property listener callback implementation 18

Callback Functions: Interacting with Core Audio dd d 2. (dedicated) Code 2-3 AudioQueueAddPropertyListener ( self.queueobject, // the object that will invoke your callback kaudioqueueproperty_isrunning, // the ID of the property you want to listen for propertylistenercallback, // a reference to your callback function self ); Code 2-3 Registering a property listener callback 19

Audio Data Formats Core Audio Audio Data Format (Sample rate), (bit depth), (packetization ) Audio File Format,, (, MP3), (, Apple CAF) 20

Audio Data Formats Universal Data Types in Core Audio (1/2) Core Audio AudioStreamBasicDescription AudioStreamPacketDescription CoreAudioTypes.h AudioStreamBasicDescription struct AudioStreamBasicDescription { Float64 msamplerate; UInt32 mformatid; UInt32 mformatflags; UInt32 mbytesperpacket; UInt32 mframesperpacket; UInt32 mbytesperframe; UInt32 mchannelsperframe; UInt32 mbitsperchannel; UInt32 mreserved; // }; 0 typedef struct AudioStreamBasicDescription Code 2-4 The AudioStreamBasicDescription data type Stream, Core Audio ( ).. Stream (, ). audio stream basic description ASBD. 21

Audio Data Formats Universal Data Types in Core Audio (2/2) AudioStreamPacketDescription struct AudioStreamPacketDescription { SInt64 mstartoffset; UInt32 mvariableframesinpacket; // 0. }; UInt32 mdatabytesize; typedef struct AudioStreamPacketDescription AudioStreamPacketDescription; Code 2-5 The AudioStreamPacketDescription data type Audio Data Format, AudioStreamPacketDescription (bit-rate) mvariableframesinpacket 0 22

Audio Data Formats Obtaining a Sound File s Data Format ASBD, 0 Core Audio. - (void) openplaybackfile: (CFURLRef) soundfile { AudioFileOpenURL ( (CFURLRef) self.audiofileurl, 0x01, // kaudiofilecaftype, &audiofileid ); UInt32 sizeofplaybackformatasbdstruct = sizeof ([self audioformat]); } AudioFileGetProperty ( [self audiofileid], kaudiofilepropertydataformat, &sizeofplaybackformatasbdstruct, &audioformat // ASBD ); Code 2-6 Obtaining an audio stream basic description for playing a sound file 23

Core Audio (canonical) Core Audio,,, ASBD Core Audio Audio Data Formats Canonical Audio Data Formats (1/2) Format Sample ios / ios Mac OS x / Mac OS X 16bit Linear PCM 8.24bit Noninterleaved Linear PCM 32bit Linear PCM 32bit Noninterleaved Linear PCM 24

Audio Data Formats Canonical Audio Data Formats (2/2) ASBD ), 44.1kHz sample rate iphone struct AudioStreamBasicDescription { msamplerate = 44100.0; mformatid = kaudioformatlinearpcm; mformatflags = kaudioformatflagsaudiounitcanonical; mbytesperpacket = 1 * sizeof (AudioUnitSampleType); // 8 mframesperpacket = 1; mbytesperframe = 1 * sizeof (AudioUnitSampleType); // 8 mchannelsperframe = 2; mbitsperchannel = 8 * sizeof (AudioUnitSampleType); // 32 mreserved = 0; };, CoreAudioTypes.h AudioUnitSampleType ios Mac OS X ASBD (agnostic) 25

Magic Cookies (1/2) Audio Data Formats Core Audio (Magic Cookie) (decoder) Black box Core Audio 26

Magic Cookies (2/2) Audio Data Formats ) - (void) copymagiccookietoqueue: (AudioQueueRef)queue fromfile: (AudioFileID)file { } UInt32 propertysize = sizeof (UInt32); OSStatus result = AudioFileGetPropertyInfo ( file, kaudiofilepropertymagiccookiedata, &propertysize, NULL ); if (!result && propertysize) { } char *cookie = (char *) malloc (propertysize); AudioFileGetProperty ( ); file, kaudiofilepropertymagiccookiedata, &propertysize, cookie AudioQueueSetProperty ( ); queue, kaudioqueueproperty_magiccookie, // cookie, propertysize free (cookie); // // ID, ID, byte, (1=, 0= ) // // ID, ID,, ID Audio Queue Services, //, ID,, Audio File Services, AudioToolbox/AudioToolbox.h, AudioFile.h AudioToolbox/AudioToolbox.h, AudioQueue.h Code 2-7 Using a magic cookie when playing a sound file 27

Audio Data Packets (Packet) Audio Data Formats Core Audio (Synchronization) (counting) (, Code 2-8, ). ASBD mbytesperpacket mframesperpacket 28

Audio Data Packets Audio Data Formats - (void) calculatesizesfor: (Float64) seconds { UInt32 maxpacketsize; UInt32 propertysize = sizeof (maxpacketsize); AudioFileGetProperty ( audiofileid, kaudiofilepropertypacketsizeupperbound, &propertysize, &maxpacketsize ); static const int maxbuffersize = 0x10000; static const int minbuffersize = 0x4000; // 64K // 16K if (audioformat.mframesperpacket) { Float64 numpacketsfortime = audioformat.msamplerate / audioformat.mframesperpacket * seconds; [self setbufferbytesize: numpacketsfortime * maxpacketsize]; } else { // 0, [self setbufferbytesize: maxbuffersize > maxpacketsize? maxbuffersize : maxpacketsize]; } // if (bufferbytesize > maxbuffersize && bufferbytesize > maxpacketsize) { [self setbufferbytesize: maxbuffersize]; } else { if (bufferbytesize < minbuffersize) {[self setbufferbytesize: minbuffersize]; } } } [self setnumpacketstoread: self.bufferbytesize / maxpacketsize]; Listing 2-8 Calculating playback buffer size based on packetization 29

Audio Data Packets Packet CBR (Constant bit rate, ) VBR (Variable bit rate, ) VFR (Variable frame rate, ) Audio Data Formats Core Audio VBR VFR AudioStreamPacketDescription (code 2-5) VBR VFR / CBR VBR ( ) Linear PCM, IMA/ADPCM. AAC, Apple Lossles, MP3.. 30

Data Format Conversion, (Converter) Sample rate interleaving/deinterleaving / Linear PCM ) AAC, Advanced Audio Coding Linear PCM Linear PCM ) 16bit (signed integer) Linear PCM 8.24 (fixed point) Linear PCM Audio Queue Services 31

Sound Files Core Audio Audio File Services. Audio File Services,,,, SMPTE ( ID,, ) AudioFileGetGlobalInfoSize : AudioFileGetGlobalInfo : AudioFile.h, 32

Sound Files Creating a New Sound File CFURL NSURL ) CAF kaudiofilecaftype ASBD Audio File Services AudioFileCreateWithURL ( AudioFileID ) AudioFileCreateWithURL ( audiofileurl, kaudiofilecaftype, &audioformat, kaudiofileflags_erasefile, &audiofileid // the function provides the new file object here ); Code 2-9 Creating a sound file, 33

Sound Files Opening a Sound File AudioFileOpenURL URL,, ID ( Audio File Services ) kaudiofilepropertyfileformat kaudiofilepropertydataformat kaudiofilepropertymagiccookiedata kaudiofilepropertychannellayout VBR (podcast) kaudiofilepropertypacketsizeupperbound kaudiofilepropertyestimatedduration 34

Sound Files Reading From and Writing To a Sound File Audio File Services. (block), ( ) / VBR Audio File Stream Services( Sound Stream ) 35

Sound Files Extended Audio File Services Linear PCM ( ) Audio File Services Audio Converter Services iphone Audio File Format ios Format name AIFF CAF MPEG-1, layer 3 MPEG-2 or MPEG-4 ADTS MPEG-4 WAV Format filename extensions.aif,.aiff.caf.mp3.aac.m4a, mp4.wav 36

Sound Files CAF Files ios, Mac OS X Core Audio Format(CAF) ios 2.0. 37

Sound Streams, (dropouts),, Audio File Stream Service (parsing) Audio File Stream Service AudioFileStreamID 38

Sound Streams ( kaudiofilestreamproperty_readytoproducepackets.) 1. 2. Audio File Stream Services 3.. kaudiofilestreamproperty_readytoproducepackets true( 1) 4. Audio File Stream Services kaudiofilestreamproperty_readytoproducepackets ID 5. Audio File Stream Services 39

Audio Sessions: Cooperating with Core Audio ios, iphone iphone (Audio Session) ios iphone / ipod 40

Next Chapter 1. Audio Session 2. Using Audio in iphone 41