Пример #1
0
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 );
    }
}