vf_mp: do not add duplicated pixel formats.
This avoid a crash with in avfilter_merge_formats() in case one of the
filter formats list has multiple time the same entry.
Thanks to Mina Nagy Zaki for helping figuring out the issue.
(cherry picked from commit 680e473643)
This commit is contained in:
parent
e845455225
commit
07f5da6128
1 changed files with 6 additions and 1 deletions
|
|
@ -41,6 +41,7 @@
|
|||
|
||||
|
||||
//FIXME maybe link the orig in
|
||||
//XXX: identical pix_fmt must be following with each others
|
||||
static const struct {
|
||||
int fmt;
|
||||
enum PixelFormat pix_fmt;
|
||||
|
|
@ -785,13 +786,17 @@ static int query_formats(AVFilterContext *ctx)
|
|||
{
|
||||
AVFilterFormats *avfmts=NULL;
|
||||
MPContext *m = ctx->priv;
|
||||
enum PixelFormat lastpixfmt = PIX_FMT_NONE;
|
||||
int i;
|
||||
|
||||
for(i=0; conversion_map[i].fmt; i++){
|
||||
av_log(ctx, AV_LOG_DEBUG, "query: %X\n", conversion_map[i].fmt);
|
||||
if(m->vf.query_format(&m->vf, conversion_map[i].fmt)){
|
||||
av_log(ctx, AV_LOG_DEBUG, "supported,adding\n");
|
||||
avfilter_add_format(&avfmts, conversion_map[i].pix_fmt);
|
||||
if (conversion_map[i].pix_fmt != lastpixfmt) {
|
||||
avfilter_add_format(&avfmts, conversion_map[i].pix_fmt);
|
||||
lastpixfmt = conversion_map[i].pix_fmt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue