2014-10-01 3 views
1

AUAudioFilePlayer의 다음 속성에 대해 혼란스러워합니다. 애플의 문서는 혼란 기껏 :AudioToolbox AUAudioFilePlayer 속성 설명

  1. kAudioUnitProperty_ScheduleStartTimeStamp

  2. kAudioUnitProperty_ScheduledFilePrime

  3. kAudioUnitProperty_ScheduledFileRegion

사람이 각각의 사용에 대한 몇 가지 설명을 제공시겠습니까? 사용법이 겹치는 것처럼 보입니까? 감사.

답변

2

예, 혼란 스럽습니다.

시작 시간은 정확히 생각할 것입니다. 시작 시간은 해당 오디오 장치에 대해 예약하고있는 모든 슬라이스/영역에 대한 재생 타임 라인의 시작 부분을 정의합니다.

재생하기 전에 오디오 데이터를 RAM으로 가져와야하기 때문에 "프라이밍"은 기본적으로 시스템에 오디오 파일 (지정된 프레임 수)을 메모리로 읽도록 지시합니다.

파일의 일부만 재생하거나 (파일의 일부 프레임을 시작하거나 파일의 끝에서 몇 개의 프레임을 끝내기) 선택할 수 있습니다. 이러한 영역을 "regions"라고하며, 오디오 파일의 일부분 (또는 영역)을 재생하려는 경우에 사용하는 속성입니다.

시작 시간

오디오 장치가 초기화를 다음의 어떤 ​​조각을 재생하거나 시작 시간이 설정 될 때까지 재설정되지 않습니다

는 AudioUnitProperties.h에서 보라. 시작 시간은 타임 라인의 시작을 설정합니다. 일정에있는 모든 슬라이스의 타임 스탬프는 시작 시간을 기준으로합니다.

kAudioUnitProperty_ScheduleStartTimeStamp 속성을 AudioTimeStamp 구조로 설정하여 시작 시간을 설정하십시오. 타임 스탬프에 유효한 샘플 시간 (timestamp.mFlags &kAudioTimeStampSampleTimeValid)이 포함 된 경우 AudioUnitRender 함수에 전달 된 타임 스탬프가 지정된 샘플 시간 인 에 도달하면 재생 이 시작됩니다. 지정된 샘플 시간이 -1이면 다음 재생주기 인 에서 재생이 시작됩니다.

시작 타임 스탬프 (timestamp.mFlags & kAudioTimeStampHostTimeValid는) 다음 지정된 호스트 시간이 샘플 시간에 변환되는 유효한 호스트 시간을 유효 샘플 시간을 포함하지 않는,하지만 포함 않으면되는 재생에 시작됩니다 . 0의 호스트 시간은 "다음 렌더링 사이클에서 시작"을 의미합니다.

재생이 시작된 시간을 으로 가져 오기 위해 kAudioUnitProperty_ScheduleStartTimeStamp 속성을 쿼리 할 수 ​​있습니다. 시작 시간에 아직 도달하지 않은 경우 반환되는 타임 스탬프는 호스트 응용 프로그램이 마지막으로 설정 한 값이됩니다.

당신은 재생할 수 초기 파일 영역을 예약 한 후 재생을 시작하기 전에 kAudioUnitProperty_ScheduledFilePrime을 설정해야 마중물

. 이 SetProperty 호출은 오디오 파일 읽기를 시작하고 속성 값으로 지정된 프레임 수를 읽을 때까지 반환하지 않습니다.

일정 지역

는 오디오 파일의 영역의 재생을 예약하고 kAudioUnitProperty_ScheduledFileRegion 속성을 설정합니다. 이것은 ScheduledAudioFileRegion 구조체입니다. mTimeStamp.mSampleTime은 유효해야하며 유닛의 시작 시간을 기준으로 해석됩니다. 시작 시간 의미 (kAudioUnitProperty_ScheduleStartTimeStamp 사용)는 AUScheduledSoundPlayer의 의미와 동일합니다. ScheduledAudioSlice 구조와 달리 Unit은 ScheduledAudioFileRegions의 복사본을 만듭니다. 따라서 ScheduledAudioFileRegions를 스택에 만들거나 스케줄링 한 후 즉시 재사용/폐기 할 수 있습니다.

+0

덕분에, 아직 모든 것을 설명하지 못했지만 가지고있는 편리한 정보이므로 조금 형식이 바뀌 었습니다 – believesInSanta

+0

어느 부분이 불분명합니까? – Nick

+0

필자는 Priming이 무엇을하고 있는지에 대해 아직 명확하지 않으며, Start Time과 Scheduling Regions의 AudioTimeStamp 사이의 차이점이 있습니다 ... – believesInSanta

관련 문제