aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-09-07 13:00:47 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-09-07 13:00:47 +0200
commit91141f2a13bcb36b849335d1d10c01b596d773bb (patch)
tree4ac4c40f907ffa60664c89c19a9d774cb1ae9f66
parent5891e454a667e42ef71a06bfd9661540ea3f3ebd (diff)
downloadffmpeg-91141f2a13bcb36b849335d1d10c01b596d773bb.tar.gz
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>
-rw-r--r--libavfilter/avcodec.c1
-rw-r--r--libavfilter/avfilter.h1
-rw-r--r--libavfilter/buffer.c2
3 files changed, 3 insertions, 1 deletions
diff --git a/libavfilter/avcodec.c b/libavfilter/avcodec.c
index 95e30b3d16..51c15de40b 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 2e61ac5c02..4750cfdec9 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 470c6f148c..fc65b82825 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);
}