[FFmpeg-devel] lavf/qsvvpp: avoid the double-free when working in sys memory mode

Submitted by Linjie Fu on April 15, 2019, 1:24 p.m.

Details

Message ID 20190415132406.20464-1-linjie.fu@intel.com
State New
Headers show

Commit Message

Linjie Fu April 15, 2019, 1:24 p.m.
Currently, picref will be freed by calling av_frame_free(&picref) in
submit_frame() in qsvvpp.c when working in system memory mode,and normally it 
is freed in filter_frame() in vf_vpp_qsv.c when working in other modes.

Double free happens when working in system memory mode, remove to
fix the memory issue.

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
---
Can be reproduced by applying the system memory patch and qsvdec+vpp:
    ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -c:v h264_qsv -i input.mp4 \
                                -vf "vpp_qsv=w=960:h=540,format=rgb32" -f null -
 libavfilter/qsvvpp.c | 1 -
 1 file changed, 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 06efdf5089..5cd1d5d345 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -316,7 +316,6 @@  static QSVFrame *submit_frame(QSVVPPContext *s, AVFilterLink *inlink, AVFrame *p
             }
 
             av_frame_copy_props(qsv_frame->frame, picref);
-            av_frame_free(&picref);
         } else
             qsv_frame->frame = av_frame_clone(picref);