Revision 59775b3c

View differences:

libavfilter/vsrc_buffer.c
63 63
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
64 64
{
65 65
    BufferSourceContext *c = ctx->priv;
66
    char pix_fmt_str[128];
66 67
    int n = 0;
67 68

  
68
    if (!args || (n = sscanf(args, "%d:%d:%d", &c->w, &c->h, &c->pix_fmt)) != 3) {
69
    if (!args || (n = sscanf(args, "%d:%d:%127s", &c->w, &c->h, pix_fmt_str)) != 3) {
69 70
        av_log(ctx, AV_LOG_ERROR, "Expected 3 arguments, but only %d found in '%s'\n", n, args ? args : "");
70 71
        return AVERROR(EINVAL);
71 72
    }
73
    if ((c->pix_fmt = av_get_pix_fmt(pix_fmt_str)) == PIX_FMT_NONE) {
74
        char *tail;
75
        c->pix_fmt = strtol(pix_fmt_str, &tail, 10);
76
        if (*tail || c->pix_fmt < 0 || c->pix_fmt >= PIX_FMT_NB) {
77
            av_log(ctx, AV_LOG_ERROR, "Invalid pixel format string '%s'\n", pix_fmt_str);
78
            return AVERROR(EINVAL);
79
        }
80
    }
72 81

  
73 82
    av_log(ctx, AV_LOG_INFO, "w:%d h:%d pixfmt:%s\n", c->w, c->h, av_pix_fmt_descriptors[c->pix_fmt].name);
74 83
    return 0;

Also available in: Unified diff