int ms_filter_link(MSFilter *f1, int pin1, MSFilter *f2, int pin2) { MSQueue *q; ms_message("ms_filter_link: %s:%p,%i-->%s:%p,%i",f1->desc->name,f1,pin1,f2->desc->name,f2,pin2); ms_return_val_if_fail(pin1<f1->desc->noutputs, -1); ms_return_val_if_fail(pin2<f2->desc->ninputs, -1); ms_return_val_if_fail(f1->outputs[pin1]==NULL,-1); ms_return_val_if_fail(f2->inputs[pin2]==NULL,-1); q=ms_queue_new(f1,pin1,f2,pin2); f1->outputs[pin1]=q; f2->inputs[pin2]=q; return 0; }
int ms_filter_unlink(MSFilter *f1, int pin1, MSFilter *f2, int pin2){ MSQueue *q; ms_message("ms_filter_unlink: %s:%p,%i-->%s:%p,%i",f1 ? f1->desc->name : "!NULL!",f1,pin1,f2 ? f2->desc->name : "!NULL!",f2,pin2); ms_return_val_if_fail(pin1<f1->desc->noutputs, -1); ms_return_val_if_fail(pin2<f2->desc->ninputs, -1); ms_return_val_if_fail(f1->outputs[pin1]!=NULL,-1); ms_return_val_if_fail(f2->inputs[pin2]!=NULL,-1); ms_return_val_if_fail(f1->outputs[pin1]==f2->inputs[pin2],-1); q=f1->outputs[pin1]; f1->outputs[pin1]=f2->inputs[pin2]=0; ms_queue_destroy(q); return 0; }