From patchwork Wed Aug 8 14:51:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhong Li X-Patchwork-Id: 9935 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp978620jad; Wed, 8 Aug 2018 07:51:25 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyw3dBuOWl8cpTPHanElK6EShXEe5DoDIg54OTPo1XZfZBjvXMocg+SsxjJIovf6nf+IXRH X-Received: by 2002:a1c:b45:: with SMTP id 66-v6mr2082143wml.45.1533739885246; Wed, 08 Aug 2018 07:51:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533739885; cv=none; d=google.com; s=arc-20160816; b=etzCJUiZGTZddF1Gzkepza5GUgk9x0dGxqoo+vZcpnsROrYjRDfQmwzS7rBsg7bNj2 XPC9aJUwwcyquz3ooWseVkZh59NNdYSFse5Wei6bKurxBCk4kyi7ECo1akvIcxIbnSYE q7FfwYtXMPPdoITmuuI3FqInAISVLM+dzBtVr3bPd6elhYuXMvrpABzqpi7hSuG91it2 QzLkBnFCg0zp2JALi/iTKjUdqWUIm/gke1EYouM8PK5WvFOrgGJLL2NXFTXtfT5LBdCo 6tF5roI70sauA5/4KIn7QwSI8ZDcYsgvif3EJtfrzetwjN0qPpRfM2A97iM/o7TP7fCW WylQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=+9z4yi4jdzDWa6jIsmgpHUVM9sgRP5Ptqqj6ZytnhXo=; b=mfSC7UJR4PLXeCoFmaEeqxmW0B11QkvoYVJrLLnfDGAiR1WMU1AFogzLVo8U3Ch2cc 60M5Yy7NuSdwJ60aJ8fbKQHTaCHc3yCxqYvqGqmltp00wDDsNW/7xNc0jCH90myw+B/N RVLJYAGzagafpqUp3lU+i5XX63agnyiijWs0RrrfArxs3vrPcggmUXF8OztmhoO4Tc0i vVa459BPbcJL7Pde+czEzHz7h6UgzXKmOBGVCEmkmXytKlc1ljCJAz0ulE5WSxGIRMWu j+mb2LzaKLWk5GBmb4H5oopYcd3kLALyHFvkGNhHuAoD0nzZjFzHP4hKiGj2OoidiFDm mBbw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j186-v6si3384606wmj.4.2018.08.08.07.51.24; Wed, 08 Aug 2018 07:51:25 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 75D6C68A4C5; Wed, 8 Aug 2018 17:51:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 950CA68A1DE for ; Wed, 8 Aug 2018 17:50:54 +0300 (EEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Aug 2018 07:51:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,458,1531810800"; d="scan'208";a="71196483" Received: from media_ffmpeg_skl_e3.sh.intel.com ([10.239.156.42]) by FMSMGA003.fm.intel.com with ESMTP; 08 Aug 2018 07:51:04 -0700 From: Zhong Li To: ffmpeg-devel@ffmpeg.org Date: Wed, 8 Aug 2018 22:51:57 +0800 Message-Id: <1533739917-31030-1-git-send-email-zhong.li@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH] lavc/qsvenc: add quality status to side_data X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhong Li MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Add fix a memory leak issue as James's comments. Signed-off-by: Zhong Li --- libavcodec/qsvenc.c | 18 ++++++++++++++---- libavcodec/qsvenc_h264.c | 5 ----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 65dae31..2107c5b 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -1200,8 +1200,10 @@ static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, if (!sync) { av_freep(&bs); #if QSV_VERSION_ATLEAST(1, 26) - if (avctx->codec_id == AV_CODEC_ID_H264) + if (avctx->codec_id == AV_CODEC_ID_H264) { av_freep(&enc_info); + av_freep(&enc_buf); + } #endif av_packet_unref(&new_pkt); return AVERROR(ENOMEM); @@ -1220,8 +1222,10 @@ static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, av_packet_unref(&new_pkt); av_freep(&bs); #if QSV_VERSION_ATLEAST(1, 26) - if (avctx->codec_id == AV_CODEC_ID_H264) + if (avctx->codec_id == AV_CODEC_ID_H264) { av_freep(&enc_info); + av_freep(&enc_buf); + } #endif av_freep(&sync); return (ret == MFX_ERR_MORE_DATA) ? @@ -1240,8 +1244,10 @@ static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, av_packet_unref(&new_pkt); av_freep(&bs); #if QSV_VERSION_ATLEAST(1, 26) - if (avctx->codec_id == AV_CODEC_ID_H264) + if (avctx->codec_id == AV_CODEC_ID_H264) { av_freep(&enc_info); + av_freep(&enc_buf); + } #endif } @@ -1264,6 +1270,7 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, mfxSyncPoint *sync; #if QSV_VERSION_ATLEAST(1, 26) mfxExtAVCEncodedFrameInfo *enc_info; + mfxExtBuffer **enc_buf; #endif av_fifo_generic_read(q->async_fifo, &new_pkt, sizeof(new_pkt), NULL); @@ -1295,10 +1302,13 @@ FF_ENABLE_DEPRECATION_WARNINGS #if QSV_VERSION_ATLEAST(1, 26) if (avctx->codec_id == AV_CODEC_ID_H264) { + enc_buf = bs->ExtParam; enc_info = (mfxExtAVCEncodedFrameInfo *)(*bs->ExtParam); - av_log(avctx, AV_LOG_DEBUG, "QP is %d\n", enc_info->QP); + ff_side_data_set_encoder_stats(&new_pkt, + enc_info->QP * FF_QP2LAMBDA, NULL, 0, avctx->coded_frame->pict_type); q->sum_frame_qp += enc_info->QP; av_freep(&enc_info); + av_freep(&enc_buf); } #endif av_freep(&bs); diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c index b87bef6..5c262e5 100644 --- a/libavcodec/qsvenc_h264.c +++ b/libavcodec/qsvenc_h264.c @@ -95,11 +95,6 @@ static av_cold int qsv_enc_close(AVCodecContext *avctx) { QSVH264EncContext *q = avctx->priv_data; -#if QSV_VERSION_ATLEAST(1, 26) - av_log(avctx, AV_LOG_VERBOSE, "encoded %d frames, avarge qp is %.2f\n", - avctx->frame_number,(double)q->qsv.sum_frame_qp / avctx->frame_number); -#endif - return ff_qsv_enc_close(avctx, &q->qsv); }