From 91141f2a13bcb36b849335d1d10c01b596d773bb Mon Sep 17 00:00:00 2001 From: Michael Niedermayer <michaelni@gmx.at> Date: Fri, 7 Sep 2012 13:00:47 +0200 Subject: [PATCH] lavfi: add qp_table_size This avoid recalculating it and in case w/h changed avoids crashes. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> --- libavfilter/avcodec.c | 1 + libavfilter/avfilter.h | 1 + libavfilter/buffer.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libavfilter/avcodec.c b/libavfilter/avcodec.c index 95e30b3d16c..51c15de40bf 100644 --- a/libavfilter/avcodec.c +++ b/libavfilter/avcodec.c @@ -50,6 +50,7 @@ int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src) if(!dst->video->qp_table) return AVERROR(ENOMEM); dst->video->qp_table_linesize = src->qstride; + dst->video->qp_table_size = qsize; memcpy(dst->video->qp_table, src->qscale_table, qsize); } break; diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 2e61ac5c02a..4750cfdec96 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -132,6 +132,7 @@ typedef struct AVFilterBufferRefVideoProps { enum AVPictureType pict_type; ///< picture type of the frame int key_frame; ///< 1 -> keyframe, 0-> not int qp_table_linesize; ///< qp_table stride + int qp_table_size; ///< qp_table size int8_t *qp_table; ///< array of Quantization Parameters } AVFilterBufferRefVideoProps; diff --git a/libavfilter/buffer.c b/libavfilter/buffer.c index 470c6f148c9..fc65b828259 100644 --- a/libavfilter/buffer.c +++ b/libavfilter/buffer.c @@ -42,7 +42,7 @@ void ff_avfilter_default_free_buffer(AVFilterBuffer *ptr) static void copy_video_props(AVFilterBufferRefVideoProps *dst, AVFilterBufferRefVideoProps *src) { *dst = *src; if (src->qp_table) { - int qsize = src->qp_table_linesize ? src->qp_table_linesize * ((src->h+15)/16) : (src->w+15)/16; + int qsize = src->qp_table_size; dst->qp_table = av_malloc(qsize); memcpy(dst->qp_table, src->qp_table, qsize); } -- GitLab