diff --git a/libavfilter/vf_pp.c b/libavfilter/vf_pp.c index b6cdbe6865..b7f35d3628 100644 --- a/libavfilter/vf_pp.c +++ b/libavfilter/vf_pp.c @@ -108,6 +108,8 @@ static int pp_filter_frame(AVFilterLink *inlink, AVFrame *inbuf) const int aligned_w = FFALIGN(outlink->w, 8); const int aligned_h = FFALIGN(outlink->h, 8); AVFrame *outbuf; + int qstride, qp_type; + int8_t *qp_table ; outbuf = ff_get_video_buffer(outlink, aligned_w, aligned_h); if (!outbuf) { @@ -115,15 +117,16 @@ static int pp_filter_frame(AVFilterLink *inlink, AVFrame *inbuf) return AVERROR(ENOMEM); } av_frame_copy_props(outbuf, inbuf); + qp_table = av_frame_get_qp_table(inbuf, &qstride, &qp_type); pp_postprocess((const uint8_t **)inbuf->data, inbuf->linesize, outbuf->data, outbuf->linesize, aligned_w, outlink->h, - outbuf->qscale_table, - outbuf->qstride, + qp_table, + qstride, pp->modes[pp->mode_id], pp->pp_ctx, - outbuf->pict_type); + outbuf->pict_type | (qp_type ? PP_PICT_TYPE_QP2 : 0)); av_frame_free(&inbuf); return ff_filter_frame(outlink, outbuf);