mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-11 17:55:21 +00:00
lavfi: check links properties after configuring them.
For now, check the image size. Inspired by a patch from Paul B Mahol. Invalid sizes would be detected later by allocation failures, detecting problems earlier is cleaner.
This commit is contained in:
parent
5ab41a25ba
commit
345e7072ab
@ -28,6 +28,7 @@
|
|||||||
#include "libavutil/avstring.h"
|
#include "libavutil/avstring.h"
|
||||||
#include "libavutil/bprint.h"
|
#include "libavutil/bprint.h"
|
||||||
#include "libavutil/channel_layout.h"
|
#include "libavutil/channel_layout.h"
|
||||||
|
#include "libavutil/imgutils.h"
|
||||||
#include "libavutil/internal.h"
|
#include "libavutil/internal.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
#include "libavutil/pixdesc.h"
|
#include "libavutil/pixdesc.h"
|
||||||
@ -263,6 +264,27 @@ static int graph_config_links(AVFilterGraph *graph, AVClass *log_ctx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int graph_check_links(AVFilterGraph *graph, AVClass *log_ctx)
|
||||||
|
{
|
||||||
|
AVFilterContext *f;
|
||||||
|
AVFilterLink *l;
|
||||||
|
unsigned i, j;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
for (i = 0; i < graph->nb_filters; i++) {
|
||||||
|
f = graph->filters[i];
|
||||||
|
for (j = 0; j < f->nb_outputs; j++) {
|
||||||
|
l = f->outputs[j];
|
||||||
|
if (l->type == AVMEDIA_TYPE_VIDEO) {
|
||||||
|
ret = av_image_check_size2(l->w, l->h, INT64_MAX, l->format, 0, f);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *name)
|
AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -1256,6 +1278,8 @@ int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
|
|||||||
return ret;
|
return ret;
|
||||||
if ((ret = graph_config_links(graphctx, log_ctx)))
|
if ((ret = graph_config_links(graphctx, log_ctx)))
|
||||||
return ret;
|
return ret;
|
||||||
|
if ((ret = graph_check_links(graphctx, log_ctx)))
|
||||||
|
return ret;
|
||||||
if ((ret = graph_config_pointers(graphctx, log_ctx)))
|
if ((ret = graph_config_pointers(graphctx, log_ctx)))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user