I am trying to render audio using AVSampleBufferAudioRenderer but there is no sound coming from my speakers and there is a repeated log message.
[AQ] 405: SSP::Render: CopySlice returned 1
I am creating a CMSampleBuffer from an AudioBufferList. This is the relevant code:
var sampleBuffer: CMSampleBuffer!
try runDarwin(CMSampleBufferCreate(allocator: kCFAllocatorDefault,
dataBuffer: nil,
dataReady: false,
makeDataReadyCallback: nil,
refcon: nil,
formatDescription: formatDescription,
sampleCount: sampleCount,
sampleTimingEntryCount: 1,
sampleTimingArray: &timingInfo,
sampleSizeEntryCount: sampleSizeEntryCount,
sampleSizeArray: sampleSizeArray,
sampleBufferOut: &sampleBuffer))
try runDarwin(CMSampleBufferSetDataBufferFromAudioBufferList(sampleBuffer,
blockBufferAllocator: kCFAllocatorDefault,
blockBufferMemoryAllocator: kCFAllocatorDefault,
flags: 0,
bufferList: audioBufferList.unsafePointer))
try runDarwin(CMSampleBufferSetDataReady(sampleBuffer))
I am pretty confident that my audio format description is correct because CMSampleBufferSetDataBufferFromAudioBufferList, which performs a laundry list of validations, returns no error.
I tried to reverse-engineer the CopySlice function, but I’m lost without the parameter names.
int ScheduledSlicePlayer::CopySlice(
long long,
ScheduledSlicePlayer::XScheduledAudioSlice*,
int,
AudioBufferList&,
int,
int,
bool
)
Does anyone have any ideas on what’s wrong? For the Apple engineers reading this, can you tell me the parameter names of the CopySlice function so that I can more easily reverse-engineer the function to see what the problem is?