static void callback(y4m2_reason reason, const y4m2_parameters *parms, y4m2_frame *frame, void *ctx) { output_ctx *oc = (output_ctx *)ctx; switch (reason) { case Y4M2_START: if (!y4m2_equal_parms(oc->parms, parms)) { y4m2_free_parms(oc->parms); oc->parms = y4m2_clone_parms(parms); y4m2_emit_start(oc->out, parms); } break; case Y4M2_FRAME: y4m2_emit_frame(oc->out, parms, frame); break; case Y4M2_END: y4m2_emit_end(oc->out); break; } }
static void callback(y4m2_reason reason, const y4m2_parameters *parms, y4m2_frame *frame, void *ctx) { output_ctx *oc = (output_ctx *)ctx; y4m2_parameters *merged = NULL; switch (reason) { case Y4M2_START: merged = merge_parms(oc, parms); y4m2_emit_start(oc->out, merged); break; case Y4M2_FRAME: merged = merge_parms(oc, parms); y4m2_emit_frame(oc->out, merged, frame); break; case Y4M2_END: y4m2_emit_end(oc->out); break; } y4m2_free_parms(merged); }
static void filter__callback(y4m2_reason reason, const y4m2_parameters *parms, y4m2_frame *frame, void *ctx) { filter *filt = (filter *)ctx; switch (reason) { case Y4M2_START: if (filt->start) filt->start(filt, parms); else y4m2_emit_start(filt->out, parms); break; case Y4M2_FRAME: if (!filt->frame || model_get_int(&filt->config, 0, "$.disabled")) y4m2_emit_frame(filt->out, parms, frame); else filt->frame(filt, parms, frame); break; case Y4M2_END: if (filt->end) filt->end(filt); else y4m2_emit_end(filt->out); break; } }
static void merge__end(filter *filt) { y4m2_emit_end(filt->out); merge__free(filt->ctx); }
static void peak__end(filter *filt) { y4m2_emit_end(filt->out); peak__free(filt->ctx); }