From patchwork Fri Jul 8 07:14:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Wenbin" X-Patchwork-Id: 36707 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp147522pzh; Fri, 8 Jul 2022 00:21:15 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v0SmbjhYnSdlCCmF2+4BsRW+qpRxJtsuFyH4UnJzcuKJk/xVHUCfZcJ5NscUue0Rj5G9KN X-Received: by 2002:a17:906:149:b0:712:c8:fa53 with SMTP id 9-20020a170906014900b0071200c8fa53mr2038638ejh.563.1657264875608; Fri, 08 Jul 2022 00:21:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657264875; cv=none; d=google.com; s=arc-20160816; b=a6X5oxIjBW/fePHUfP2RpE7AHSy4y2sri+8Nd+dn4zcs60c8R3BJIbwF7f3U7P7+S0 mvmMhNe+BLouWcKjYsI3JeLnh4LOAKFDEIwtmcT5NGYoZgA/9IzkG02Z6Tsbx3ztapcj BPfLzwseKYnpdEmHudTOeOpoWF/cV7YhXimF+XyXIFFKpVTSCN6TWAFyTY6q9ile7J4a REzlez7Qs/OxaB4xQdYhaOtpIL5XJDt53ooXOenQf19n7NZdvhDAixZOLyVQ2gbtCmrq vX/EYcQEazaR7tT5KvfPmWqHMAyID/ttpJUOAEVGuu8be5UXOBRw1h6qpcevx53NKgNR ZEhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=CYfLr/AaXEjNczx+4smACf9PhewyARx721sK33yras8=; b=kdTe14Kc3Uok00gADNuVuUlbped0zhMuYrCK+ET0+EQJ+oUh0s7me+nvyaoApaybXJ mAbA7VLgSI3zOekCBpSROKmnB5Iaxo8ceMrD0u7ohAMUzGiePOZGXnozINB3/FQqoxHD 5zcEgP41yMORDes/kNjOIdYqB5dbI46AZhlWe+2OR455JffhRTLq7h5kN1wD/rm4xh6s s1vUWM+ErJN0NNU4ZeG0a4bnd8PawN+RJInOcMthZ9+WWhfVMhxhKnzYa/rtYvpDY/dX Us9ZQaVi+z8+GSP19ecg9KwY9YY7k+YRXF8lAZYerwhLiWppFl9otlKPMsw2W4QaQXg3 SRqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=T7lu8YKY; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fi23-20020a056402551700b0043a65b00adbsi14091781edb.413.2022.07.08.00.21.14; Fri, 08 Jul 2022 00:21:15 -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; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=T7lu8YKY; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 77A8A68B95E; Fri, 8 Jul 2022 10:21:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4568868B852 for ; Fri, 8 Jul 2022 10:21:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657264868; x=1688800868; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=LTIj5KZ7Khg9B/xr1Mg+eolujJe5IETHn5Q7u9T9zWw=; b=T7lu8YKYB37iMzf9aXqQW8DsZyYQxYPEehHm+R7EBvNxZUTGCVq2WdWm ppAEGuBXsjtpDgcbCaGd3j+f3N79a6YmTxDH1inv0th4TIIjmISyvoOWW A3LepE0QvgkKTsVt68RybB9TBbjpdYM83/2J2CRvOgNk7MOleCGeUW9ol 9/DvYwMvZCZJLCCncUps6HFzjX/mz4K03sCbBBV+5pBuHQ/g0BebHWTQd dW3dtjkVG0dKORgoDTVRyjZz5nRvCF1f4p/lZ2HRsd0CfusRFsMQHGBLP U+g+X6WLRqaEiai30TrV+SIxbcO4Anb8wxeufhwoTCYRD3qUNHEX543Nu Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10401"; a="285343076" X-IronPort-AV: E=Sophos;i="5.92,254,1650956400"; d="scan'208";a="285343076" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2022 00:20:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,254,1650956400"; d="scan'208";a="544108898" Received: from wenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.4]) by orsmga003.jf.intel.com with ESMTP; 08 Jul 2022 00:20:12 -0700 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Fri, 8 Jul 2022 15:14:51 +0800 Message-Id: <20220708071451.133523-1-wenbin.chen@intel.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: Change the parameter log to be thread safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +9szAxIwUNP4 Dividing one line log into several av_log() call is not thread safe. Now merge these strings into one av_log() call. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 87 ++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 2382c2f5f7..5729292f94 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -182,6 +182,7 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q, mfxExtCodingOption2 *co2 = NULL; mfxExtCodingOption3 *co3 = NULL; mfxExtHEVCTiles *exthevctiles = NULL; + const char *tmp_str = NULL; if (q->co2_idx > 0) co2 = (mfxExtCodingOption2*)coding_opts[q->co2_idx]; @@ -195,13 +196,12 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q, av_log(avctx, AV_LOG_VERBOSE, "profile: %s; level: %"PRIu16"\n", print_profile(avctx->codec_id, info->CodecProfile), info->CodecLevel); - av_log(avctx, AV_LOG_VERBOSE, "GopPicSize: %"PRIu16"; GopRefDist: %"PRIu16"; GopOptFlag: ", - info->GopPicSize, info->GopRefDist); - if (info->GopOptFlag & MFX_GOP_CLOSED) - av_log(avctx, AV_LOG_VERBOSE, "closed "); - if (info->GopOptFlag & MFX_GOP_STRICT) - av_log(avctx, AV_LOG_VERBOSE, "strict "); - av_log(avctx, AV_LOG_VERBOSE, "; IdrInterval: %"PRIu16"\n", info->IdrInterval); + av_log(avctx, AV_LOG_VERBOSE, + "GopPicSize: %"PRIu16"; GopRefDist: %"PRIu16"; GopOptFlag:%s%s; IdrInterval: %"PRIu16"\n", + info->GopPicSize, info->GopRefDist, + info->GopOptFlag & MFX_GOP_CLOSED ? " closed" : "", + info->GopOptFlag & MFX_GOP_STRICT ? " strict" : "", + info->IdrInterval); av_log(avctx, AV_LOG_VERBOSE, "TargetUsage: %"PRIu16"; RateControlMethod: %s\n", info->TargetUsage, print_ratecontrol(info->RateControlMethod)); @@ -269,45 +269,46 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q, av_log(avctx, AV_LOG_VERBOSE, "IntRefType: %"PRIu16"; IntRefCycleSize: %"PRIu16"; IntRefQPDelta: %"PRId16"\n", co2->IntRefType, co2->IntRefCycleSize, co2->IntRefQPDelta); - av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d; ", co2->MaxFrameSize); - av_log(avctx, AV_LOG_VERBOSE, "MaxSliceSize: %d; ", co2->MaxSliceSize); - av_log(avctx, AV_LOG_VERBOSE, "\n"); + av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d; MaxSliceSize: %d\n", + co2->MaxFrameSize, co2->MaxSliceSize); av_log(avctx, AV_LOG_VERBOSE, "BitrateLimit: %s; MBBRC: %s; ExtBRC: %s\n", print_threestate(co2->BitrateLimit), print_threestate(co2->MBBRC), print_threestate(co2->ExtBRC)); - av_log(avctx, AV_LOG_VERBOSE, "Trellis: "); if (co2->Trellis & MFX_TRELLIS_OFF) { - av_log(avctx, AV_LOG_VERBOSE, "off"); + av_log(avctx, AV_LOG_VERBOSE, "Trellis: off\n"); } else if (!co2->Trellis) { - av_log(avctx, AV_LOG_VERBOSE, "auto"); + av_log(avctx, AV_LOG_VERBOSE, "Trellis: auto\n"); } else { - if (co2->Trellis & MFX_TRELLIS_I) av_log(avctx, AV_LOG_VERBOSE, "I"); - if (co2->Trellis & MFX_TRELLIS_P) av_log(avctx, AV_LOG_VERBOSE, "P"); - if (co2->Trellis & MFX_TRELLIS_B) av_log(avctx, AV_LOG_VERBOSE, "B"); + char trellis_type[4]; + int i = 0; + if (co2->Trellis & MFX_TRELLIS_I) trellis_type[i++] = 'I'; + if (co2->Trellis & MFX_TRELLIS_P) trellis_type[i++] = 'P'; + if (co2->Trellis & MFX_TRELLIS_B) trellis_type[i++] = 'B'; + trellis_type[i] = 0; + av_log(avctx, AV_LOG_VERBOSE, "Trellis: %s\n", trellis_type); } - av_log(avctx, AV_LOG_VERBOSE, "\n"); - av_log(avctx, AV_LOG_VERBOSE, - "RepeatPPS: %s; NumMbPerSlice: %"PRIu16"; LookAheadDS: ", - print_threestate(co2->RepeatPPS), co2->NumMbPerSlice); switch (co2->LookAheadDS) { - case MFX_LOOKAHEAD_DS_OFF: av_log(avctx, AV_LOG_VERBOSE, "off"); break; - case MFX_LOOKAHEAD_DS_2x: av_log(avctx, AV_LOG_VERBOSE, "2x"); break; - case MFX_LOOKAHEAD_DS_4x: av_log(avctx, AV_LOG_VERBOSE, "4x"); break; - default: av_log(avctx, AV_LOG_VERBOSE, "unknown"); break; + case MFX_LOOKAHEAD_DS_OFF: tmp_str = "off"; break; + case MFX_LOOKAHEAD_DS_2x: tmp_str = "2x"; break; + case MFX_LOOKAHEAD_DS_4x: tmp_str = "4x"; break; + default: tmp_str = "unknown"; break; } - av_log(avctx, AV_LOG_VERBOSE, "\n"); + av_log(avctx, AV_LOG_VERBOSE, + "RepeatPPS: %s; NumMbPerSlice: %"PRIu16"; LookAheadDS: %s\n", + print_threestate(co2->RepeatPPS), co2->NumMbPerSlice, tmp_str); - av_log(avctx, AV_LOG_VERBOSE, "AdaptiveI: %s; AdaptiveB: %s; BRefType: ", - print_threestate(co2->AdaptiveI), print_threestate(co2->AdaptiveB)); switch (co2->BRefType) { - case MFX_B_REF_OFF: av_log(avctx, AV_LOG_VERBOSE, "off"); break; - case MFX_B_REF_PYRAMID: av_log(avctx, AV_LOG_VERBOSE, "pyramid"); break; - default: av_log(avctx, AV_LOG_VERBOSE, "auto"); break; + case MFX_B_REF_OFF: tmp_str = "off"; break; + case MFX_B_REF_PYRAMID: tmp_str = "pyramid"; break; + default: tmp_str = "auto"; break; } + av_log(avctx, AV_LOG_VERBOSE, + "AdaptiveI: %s; AdaptiveB: %s; BRefType:%s\n", + print_threestate(co2->AdaptiveI), print_threestate(co2->AdaptiveB), tmp_str); av_log(avctx, AV_LOG_VERBOSE, "MinQPI: %"PRIu8"; MaxQPI: %"PRIu8"; MinQPP: %"PRIu8"; MaxQPP: %"PRIu8"; MinQPB: %"PRIu8"; MaxQPB: %"PRIu8"\n", @@ -319,14 +320,12 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q, if (info->RateControlMethod == MFX_RATECONTROL_QVBR) av_log(avctx, AV_LOG_VERBOSE, "QVBRQuality: %"PRIu16"\n", co3->QVBRQuality); - av_log(avctx, AV_LOG_VERBOSE, "PRefType: "); switch (co3->PRefType) { - case MFX_P_REF_DEFAULT: av_log(avctx, AV_LOG_VERBOSE, "default"); break; - case MFX_P_REF_SIMPLE: av_log(avctx, AV_LOG_VERBOSE, "simple"); break; - case MFX_P_REF_PYRAMID: av_log(avctx, AV_LOG_VERBOSE, "pyramid"); break; - default: av_log(avctx, AV_LOG_VERBOSE, "unknown"); break; + case MFX_P_REF_DEFAULT: av_log(avctx, AV_LOG_VERBOSE, "PRefType: default\n"); break; + case MFX_P_REF_SIMPLE: av_log(avctx, AV_LOG_VERBOSE, "PRefType: simple\n"); break; + case MFX_P_REF_PYRAMID: av_log(avctx, AV_LOG_VERBOSE, "PRefType: pyramid\n"); break; + default: av_log(avctx, AV_LOG_VERBOSE, "PRefType: unknown\n"); break; } - av_log(avctx, AV_LOG_VERBOSE, "\n"); if (avctx->codec_id == AV_CODEC_ID_HEVC) av_log(avctx, AV_LOG_VERBOSE,"GPB: %s\n", print_threestate(co3->GPB)); @@ -360,13 +359,12 @@ static void dump_video_vp9_param(AVCodecContext *avctx, QSVEncContext *q, av_log(avctx, AV_LOG_VERBOSE, "profile: %s \n", print_profile(avctx->codec_id, info->CodecProfile)); - av_log(avctx, AV_LOG_VERBOSE, "GopPicSize: %"PRIu16"; GopRefDist: %"PRIu16"; GopOptFlag: ", - info->GopPicSize, info->GopRefDist); - if (info->GopOptFlag & MFX_GOP_CLOSED) - av_log(avctx, AV_LOG_VERBOSE, "closed "); - if (info->GopOptFlag & MFX_GOP_STRICT) - av_log(avctx, AV_LOG_VERBOSE, "strict "); - av_log(avctx, AV_LOG_VERBOSE, "; IdrInterval: %"PRIu16"\n", info->IdrInterval); + av_log(avctx, AV_LOG_VERBOSE, + "GopPicSize: %"PRIu16"; GopRefDist: %"PRIu16"; GopOptFlag:%s%s; IdrInterval: %"PRIu16"\n", + info->GopPicSize, info->GopRefDist, + info->GopOptFlag & MFX_GOP_CLOSED ? " closed" : "", + info->GopOptFlag & MFX_GOP_STRICT ? " strict" : "", + info->IdrInterval); av_log(avctx, AV_LOG_VERBOSE, "TargetUsage: %"PRIu16"; RateControlMethod: %s\n", info->TargetUsage, print_ratecontrol(info->RateControlMethod)); @@ -396,8 +394,7 @@ static void dump_video_vp9_param(AVCodecContext *avctx, QSVEncContext *q, "IntRefType: %"PRIu16"; IntRefCycleSize: %"PRIu16"; IntRefQPDelta: %"PRId16"\n", co2->IntRefType, co2->IntRefCycleSize, co2->IntRefQPDelta); - av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d; ", co2->MaxFrameSize); - av_log(avctx, AV_LOG_VERBOSE, "\n"); + av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d\n", co2->MaxFrameSize); av_log(avctx, AV_LOG_VERBOSE, "BitrateLimit: %s; MBBRC: %s; ExtBRC: %s\n",