static int tdav_producer_audiounit_start(tmedia_producer_t* self) { tdav_producer_audiounit_t* producer = (tdav_producer_audiounit_t*)self; if(!producer){ TSK_DEBUG_ERROR("Invalid parameter"); return -1; } if(producer->paused){ producer->paused = tsk_false; return tsk_false; } int ret; if(producer->started){ TSK_DEBUG_WARN("Already started"); return 0; } else { ret = tdav_audiounit_handle_start(producer->audioUnitHandle); if(ret){ TSK_DEBUG_ERROR("tdav_audiounit_handle_start failed with error code=%d", ret); return ret; } } producer->started = tsk_true; // apply parameters (because could be lost when the producer is restarted -handle recreated-) ret = tdav_audiounit_handle_mute(producer->audioUnitHandle, producer->muted); TSK_DEBUG_INFO("AudioUnit producer started"); return 0; }
/* ============ Media Producer Interface ================= */ int tdav_producer_audiounit_set(tmedia_producer_t* self, const tmedia_param_t* param) { if(param->plugin_type == tmedia_ppt_producer){ if(param->value_type == tmedia_pvt_int32){ if(tsk_striequals(param->key, "mute")){ int32_t mute = TSK_TO_INT32((uint8_t*)param->value); return tdav_audiounit_handle_mute(((tdav_producer_audiounit_t*)self)->audioUnitHandle, mute ? tsk_true : tsk_false); } } } return tdav_producer_audio_set(TDAV_PRODUCER_AUDIO(self), param); }
/* ============ Media Producer Interface ================= */ int tdav_producer_audiounit_set(tmedia_producer_t* self, const tmedia_param_t* param) { tdav_producer_audiounit_t* producer = (tdav_producer_audiounit_t*)self; if(param->plugin_type == tmedia_ppt_producer){ if(param->value_type == tmedia_pvt_int32){ if (tsk_striequals(param->key, "mute")) { producer->muted = TSK_TO_INT32((uint8_t*)param->value); return tdav_audiounit_handle_mute(((tdav_producer_audiounit_t*)self)->audioUnitHandle, producer->muted); } else if (tsk_striequals(param->key, "interrupt")) { int32_t interrupt = *((uint8_t*)param->value) ? 1 : 0; return tdav_audiounit_handle_interrupt(producer->audioUnitHandle, interrupt); } } } return tdav_producer_audio_set(TDAV_PRODUCER_AUDIO(self), param); }