Extend buffer source syntax.
Make the buffer source accept a string for specifying the input pixel format. Originally committed as revision 24387 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -63,12 +63,21 @@ int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame,
|
|||||||
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
||||||
{
|
{
|
||||||
BufferSourceContext *c = ctx->priv;
|
BufferSourceContext *c = ctx->priv;
|
||||||
|
char pix_fmt_str[128];
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
if (!args || (n = sscanf(args, "%d:%d:%d", &c->w, &c->h, &c->pix_fmt)) != 3) {
|
if (!args || (n = sscanf(args, "%d:%d:%127s", &c->w, &c->h, pix_fmt_str)) != 3) {
|
||||||
av_log(ctx, AV_LOG_ERROR, "Expected 3 arguments, but only %d found in '%s'\n", n, args ? args : "");
|
av_log(ctx, AV_LOG_ERROR, "Expected 3 arguments, but only %d found in '%s'\n", n, args ? args : "");
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
if ((c->pix_fmt = av_get_pix_fmt(pix_fmt_str)) == PIX_FMT_NONE) {
|
||||||
|
char *tail;
|
||||||
|
c->pix_fmt = strtol(pix_fmt_str, &tail, 10);
|
||||||
|
if (*tail || c->pix_fmt < 0 || c->pix_fmt >= PIX_FMT_NB) {
|
||||||
|
av_log(ctx, AV_LOG_ERROR, "Invalid pixel format string '%s'\n", pix_fmt_str);
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
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);
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user