mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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>
This commit is contained in:
parent
5891e454a6
commit
91141f2a13
@ -50,6 +50,7 @@ int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src)
|
|||||||
if(!dst->video->qp_table)
|
if(!dst->video->qp_table)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
dst->video->qp_table_linesize = src->qstride;
|
dst->video->qp_table_linesize = src->qstride;
|
||||||
|
dst->video->qp_table_size = qsize;
|
||||||
memcpy(dst->video->qp_table, src->qscale_table, qsize);
|
memcpy(dst->video->qp_table, src->qscale_table, qsize);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -132,6 +132,7 @@ typedef struct AVFilterBufferRefVideoProps {
|
|||||||
enum AVPictureType pict_type; ///< picture type of the frame
|
enum AVPictureType pict_type; ///< picture type of the frame
|
||||||
int key_frame; ///< 1 -> keyframe, 0-> not
|
int key_frame; ///< 1 -> keyframe, 0-> not
|
||||||
int qp_table_linesize; ///< qp_table stride
|
int qp_table_linesize; ///< qp_table stride
|
||||||
|
int qp_table_size; ///< qp_table size
|
||||||
int8_t *qp_table; ///< array of Quantization Parameters
|
int8_t *qp_table; ///< array of Quantization Parameters
|
||||||
} AVFilterBufferRefVideoProps;
|
} AVFilterBufferRefVideoProps;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ void ff_avfilter_default_free_buffer(AVFilterBuffer *ptr)
|
|||||||
static void copy_video_props(AVFilterBufferRefVideoProps *dst, AVFilterBufferRefVideoProps *src) {
|
static void copy_video_props(AVFilterBufferRefVideoProps *dst, AVFilterBufferRefVideoProps *src) {
|
||||||
*dst = *src;
|
*dst = *src;
|
||||||
if (src->qp_table) {
|
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);
|
dst->qp_table = av_malloc(qsize);
|
||||||
memcpy(dst->qp_table, src->qp_table, qsize);
|
memcpy(dst->qp_table, src->qp_table, qsize);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user