static av_cold int init(AVFilterContext *ctx, const char *args) { FormatContext *format = ctx->priv; const char *cur, *sep; char pix_fmt_name[PIX_FMT_NAME_MAXSIZE]; int pix_fmt_name_len, ret; enum PixelFormat pix_fmt; /* parse the list of formats */ for (cur = args; cur; cur = sep ? sep+1 : NULL) { if (!(sep = strchr(cur, ':'))) pix_fmt_name_len = strlen(cur); else pix_fmt_name_len = sep - cur; if (pix_fmt_name_len >= PIX_FMT_NAME_MAXSIZE) { av_log(ctx, AV_LOG_ERROR, "Format name too long\n"); return -1; } memcpy(pix_fmt_name, cur, pix_fmt_name_len); pix_fmt_name[pix_fmt_name_len] = 0; if ((ret = ff_parse_pixel_format(&pix_fmt, pix_fmt_name, ctx)) < 0) return ret; format->listed_pix_fmt_flags[pix_fmt] = 1; } return 0; }
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque) { BufferSourceContext *c = ctx->priv; char pix_fmt_str[128]; int ret, n = 0; *c->sws_param = 0; if (!args || (n = sscanf(args, "%d:%d:%127[^:]:%d:%d:%d:%d:%255c", &c->w, &c->h, pix_fmt_str, &c->time_base.num, &c->time_base.den, &c->sample_aspect_ratio.num, &c->sample_aspect_ratio.den, c->sws_param)) < 7) { av_log(ctx, AV_LOG_ERROR, "Expected at least 7 arguments, but only %d found in '%s'\n", n, args); return AVERROR(EINVAL); } if ((ret = ff_parse_pixel_format(&c->pix_fmt, pix_fmt_str, ctx)) < 0) return ret; if (!(c->fifo = av_fifo_alloc(sizeof(AVFilterBufferRef*)))) return AVERROR(ENOMEM); av_log(ctx, AV_LOG_INFO, "w:%d h:%d pixfmt:%s tb:%d/%d sar:%d/%d sws_param:%s\n", c->w, c->h, av_pix_fmt_descriptors[c->pix_fmt].name, c->time_base.num, c->time_base.den, c->sample_aspect_ratio.num, c->sample_aspect_ratio.den, c->sws_param); return 0; }