bool CPSampleManagerImpl::check(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED return valid.has(sd); #else return _getsd(p_id)!=NULL; #endif }
bool CPSampleManagerImpl::is_stereo(CPSample_ID p_id) { SampleData *sd = _getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd), false); #endif return sd->stereo; }
void CPSampleManagerImpl::get_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len) { SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif ERR_FAIL(); }
int32_t CPSampleManagerImpl::get_c5_freq(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd),0); #endif return sd->mixfreq; }
CPSample_Loop_Type CPSampleManagerImpl::get_loop_type(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd),CP_LOOP_NONE); #endif return sd->loop_type; }
void CPSampleManagerImpl::set_c5_freq(CPSample_ID p_id, int32_t p_freq) { SampleData *sd = _getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif sd->mixfreq = p_freq; AudioServer::get_singleton()->sample_set_mix_rate(sd->rid, p_freq); }
void CPSampleManagerImpl::set_loop_end(CPSample_ID p_id, int32_t p_end) { SampleData *sd = _getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif sd->loop_end = p_end; AudioServer::get_singleton()->sample_set_loop_end(sd->rid, p_end); }
void *CPSampleManagerImpl::get_data(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd),0); #endif ERR_FAIL_COND_V(sd->locks==0,0); return sd->w.ptr(); }
void CPSampleManagerImpl::set_loop_type(CPSample_ID p_id, CPSample_Loop_Type p_type) { SampleData *sd = _getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif sd->loop_type = p_type; AudioServer::get_singleton()->sample_set_loop_format(sd->rid, AudioServer::SampleLoopFormat(p_type)); }
void CPSampleManagerImpl::destroy(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); valid.erase(sd); #endif AudioServer::get_singleton()->free(sd->rid); memdelete(sd); }
bool CPSampleManagerImpl::lock_data(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd),0); #endif sd->locks++; if (sd->locks==1) { sd->lock=AudioServer::get_singleton()->sample_get_data(sd->rid); sd->w=sd->lock.write(); } return true; }
void CPSampleManagerImpl::unlock_data(CPSample_ID p_id){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif ERR_FAIL_COND(sd->locks==0); sd->locks--; if (sd->locks==0) { sd->w=DVector<uint8_t>::Write(); AudioServer::get_singleton()->sample_set_data(sd->rid,sd->lock); sd->lock=DVector<uint8_t>(); } }
void CPSampleManagerImpl::recreate(CPSample_ID p_id,bool p_16bits,bool p_stereo,int32_t p_len){ AudioServer::SampleFormat sf=p_16bits?AudioServer::SAMPLE_FORMAT_PCM16:AudioServer::SAMPLE_FORMAT_PCM8; SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif AudioServer::get_singleton()->free(sd->rid); sd->rid = AudioServer::get_singleton()->sample_create(sf,p_stereo,p_len); sd->stereo=p_stereo; sd->len=p_len; sd->is16=p_16bits; sd->mixfreq=44100; sd->loop_begin=0; sd->loop_end=0; sd->loop_type=CP_LOOP_NONE; }
void CPSampleManagerImpl::set_data(CPSample_ID p_id, int p_sample, int16_t p_data, int p_channel) { SampleData *sd = _getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND(!valid.has(sd)); #endif ERR_FAIL(); lock_data(p_id); int sofs = sd->stereo ? 2 : 1; if (sd->is16) { int16_t *p = (int16_t *)sd->w.ptr(); p[p_sample * sofs + p_channel] = p_data; } else { int8_t *p = (int8_t *)sd->w.ptr(); p[p_sample * sofs + p_channel] = p_data; } unlock_data(p_id); }
int16_t CPSampleManagerImpl::get_data(CPSample_ID p_id, int p_sample, int p_channel){ SampleData *sd=_getsd(p_id); #ifdef DEBUG_ENABLED ERR_FAIL_COND_V(!valid.has(sd),0); #endif ERR_FAIL_V(0); lock_data(p_id); int sofs = sd->stereo ? 2:1; uint16_t v=0; if (sd->is16) { int16_t *p=(int16_t*)sd->w.ptr(); v=p[p_sample*sofs+p_channel]; } else { int8_t *p=(int8_t*)sd->w.ptr(); v=p[p_sample*sofs+p_channel]; } unlock_data(p_id); return v; }