static GF_Err gf_sm_live_encode_bifs_au(GF_BifsEngine *codec, u32 currentAUCount, GF_Err (*AUCallback)(void *, char *, u32 , u64) ) { GF_Err e; u32 j, size, count; char *data; GF_AUContext *au; if (!AUCallback) return GF_BAD_PARAM; e = GF_OK; count = gf_list_count(codec->sc->AUs); for (j=currentAUCount; j<count; j++) { au = (GF_AUContext *)gf_list_get(codec->sc->AUs, j); /*in case using XMT*/ if (au->timing_sec) au->timing = (u64) (au->timing_sec * codec->stream_ts_res); e = gf_bifs_encode_au(codec->bifsenc, codec->sc->ESID, au->commands, &data, &size); AUCallback(codec->calling_object, data, size, au->timing); free(data); data = NULL; if (e) break; } return e; }
void SCProcess::run(const AudioBufferList* in, AudioBufferList* out, UInt32 inFramesToProcess, AudioTimeStamp inTimeStamp, Float64 sampleRate, int64 oscTime){ if (world->mRunning){ SC_AUAudioDriver* driver = (SC_AUAudioDriver*)this->world->hw->mAudioDriver; AUCallback(driver,(AudioBufferList*)in, out, &inTimeStamp, inFramesToProcess, sampleRate, oscTime ); // driver->Callback(in, out, &inTimeStamp, inFramesToProcess, sampleRate, oscTime ); } }