From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8935D4079C for ; Thu, 23 Dec 2021 01:45:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE1B168B0E9; Thu, 23 Dec 2021 03:45:37 +0200 (EET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49CE568ACF5 for ; Thu, 23 Dec 2021 03:45:30 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640223935; x=1671759935; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=5hQGdAeUfg/CbGZHypTSSgbSFUcVMu0Jseni8a/mXMM=; b=eMLQd3OY76ypv+za1igvQfvRPQpdUK5o6qWss8cAtKlV2NnW8xSStSzf BlPAU1hHzbBGvj27LJNYYM2+v0aIZHCn8PIq1V/blcIf8osjNm2cAxyY3 MtI63nJ0/zY2RPP6qXSIVA060/1CHgbKyjYDzn4mIp55FrUVhp+oOhL7G lzRqCkCBrXcNyqGJe+SsfO1QlMnR0EnXS45GNXyjzyDeb4791F0JsyrHg BZ1gXzk//YGiVR7g7mAv/sM8lNm1100dYOZNRIi7UzYHjIAUPQEHpWTb9 EVCMXIHruDpBgsNgTdshShADigu/ygkyHT3r8BAHFl4g1zEtXw4qEnv7G g==; X-IronPort-AV: E=McAfee;i="6200,9189,10206"; a="327044435" X-IronPort-AV: E=Sophos;i="5.88,228,1635231600"; d="scan'208";a="327044435" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2021 17:45:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,228,1635231600"; d="scan'208";a="484936072" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP; 22 Dec 2021 17:45:25 -0800 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 22 Dec 2021 17:45:24 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 22 Dec 2021 17:45:24 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Wed, 22 Dec 2021 17:45:24 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O6QRmsEb9eQNhxe2FF4E+DqYkzBKi5oVBEqkxm7kRc6lQkaYbK0PWkCwIL4zHn18ix3vrUIuJHtqU9WNut8V+IsSF3OytfaNHNlKdVj441+Ejoa8dKIjda4I9t8R3fpY0KAQ4bDdHWBCqdLirbDiunIofSwgn8O198H5ZT0dX03WoHJ+szLk21diHWs7MQNGRqTHzshQqGghPY9qzlfAIc8HyxvOE1EKvkkvwq7Fyn+q8vBEc6L03+J4Qh99PBLc0bgJHmDXH9OgxqxKpCWF89GIlDK946huuDjfQx3jWXyA2Ly4e06ev606tCGmjuOtNyOGGc9oM9AO5DBcgxxkCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5hQGdAeUfg/CbGZHypTSSgbSFUcVMu0Jseni8a/mXMM=; b=lIuJZRV09TDmjyd/DmW9NIztZfi/zXvzZIsvRE2LR75lBv3aIv0GPMWHLIbcBQMVpGvNbjVnMtLLkBIzkzcaf0KfEHYbe6KViIGi5j5d2OZzQ9qdu+0dWdPJnXblTwhIi1Vbi3tRGDynesnIjN50nssd0QHR6uXE7qFqpfkrx9fZMdDMO85NNtWQjDyTF5lprng4ZpikR0vI7BBcqRvVtt9sGNwSpkY5lxltjBJ6gSS6NpV49hDOKeGLsek4TMnLnCUX2cu9jfsPjM6flYAFRdoyEtduhtn25V3irt4tE9/5QFa1VeVYcGqDK2EjhXG18pq9mvI4ffQVWp/foDeB/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by BN9PR11MB5308.namprd11.prod.outlook.com (2603:10b6:408:119::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.15; Thu, 23 Dec 2021 01:45:18 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::bcfc:ceef:cd03:dd16]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::bcfc:ceef:cd03:dd16%3]) with mapi id 15.20.4801.023; Thu, 23 Dec 2021 01:45:18 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] libavutil/hwcontext_qsv: clean padding when upload qsv frames Thread-Index: AQHX51CSPwt5np0myk6IQyFXlUlgYKwp4feAgAdypQCAADqWgIAN36WA Date: Thu, 23 Dec 2021 01:45:18 +0000 Message-ID: <4893f0efb933915e0ee73e4f4341e505f5700753.camel@intel.com> References: <20211202074034.1163615-1-wenbin.chen@intel.com> <5dc226d69d07492ffa88e11d4f897241012e166e.camel@intel.com> In-Reply-To: Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b26ee7a4-8805-48ab-ee7b-08d9c5b5dfc3 x-ms-traffictypediagnostic: BN9PR11MB5308:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8EU+68r3UlM5Qr07TNWScdGsT9tu5MYad0iyo90OjGCcr6W6W3vgPbU+RHGTKUz//AgGCTTX1SeQvJRxqyfcWKgL5obMsPT9QX8g4/pPWM6reRvlohVE/+lkyN/cf2sZCgY19FrC3dlbsryFWnDABItxBWbEcnEzsG9WxgVTo7i0SCGZOuZDlqX61pWLEaZyvLF5b6gE3Ryr+Ck1Kbrq2tn47ogFFQkmQyqHAyKkzmSrc9mUOIquE+ha0EfHkX7wFlk+hMIAL9REvWYJ971+BNZES2strL8/+LREEOxEVDPtIe9ac+VKqHyd5ZWX5r2gm+fTvxIHBeUmAJ7I4y+NwWQSryV9hITeu9voE26bqAkTck7yIN6FQN5omv1BEMBo1Z13dBm9fyMl8Lf0dN49Q+BpysPxIRkHQYIKlVf4gzUSwIs/AoCdoKGqqI7upb2s/5vobDveh/ImF4/S7znIRIVhOB2L2tzV9naXqCs89fG/NMbdfrx0N6+uE4OWwNi300wjSuN9z0yUqogudz8lz3/VGKio+3xhqYKGvmtEDfwckregnR05XBVBJJeAN6rkJQykCXPI0L3VGvnTfAT9GmzWNaLT680VPtl3b+tGfUGNtsHqPPxV9kIb6OqHtmwDboIg64DYVDXsQWFSl78+Q7PCAsnq8/EMUrnECETLNNeye9XLzc9XEaxmtTZsD8myyCMeo5iBLqyWrjDZsFCMbn8gVru/6UNTo39xWXHc5+FnYJ1x9AvQLUz1TpoqdoZGhvmrJDLDmrJ9+uSbFSdW/IA3uuQrzoGgUwIgtR5hWVT2Qmfj/u2Z9TI1MjEmtlsUeLTW9k389u2xwyU5ab1N82AkOrvvPaOBu2SEJlKGbi8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(64756008)(66446008)(53546011)(66476007)(66946007)(4001150100001)(66556008)(36756003)(2616005)(2906002)(91956017)(316002)(26005)(76116006)(122000001)(186003)(6916009)(508600001)(6486002)(8936002)(8676002)(38100700002)(966005)(71200400001)(82960400001)(38070700005)(83380400001)(6506007)(6512007)(86362001)(5660300002)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WUs1Wnp2WGVwc1o0bVNuU3dMeWRyMnQ4NkZldDBQelN3Q2ExSVVaa3FPeXZm?= =?utf-8?B?bDdpZkd3Wk9TMmE2ajJ0dXlRNEV1NnY2c1UwQTNCaDd2VDlBVGxtV2t0dG16?= =?utf-8?B?eDFnNS9Ed25EV2M0NEJNT0tQOFo4VEJhNTIxdGR5SHFkMityTGxKc1RHRXBQ?= =?utf-8?B?amhlS0NLd25VcE1ON0k0OWNldWFBZWwrZ1pmanlOZWZVbW9ZeVdkQ0NHRkpa?= =?utf-8?B?ajVpS0tvV3FJbWZqNlVoQmpwckxqNXUrdkRxU20wcG51NUlpR2ExZE5yV0Q1?= =?utf-8?B?TlY2VnFCbHIwNms0NmlaYzEvSWF1N3dxUm1WWWI3RWZmSzQ1RjMvZFZYZStu?= =?utf-8?B?YXQwVHVDUHROdEZQd2hVN1oybEM1WDFyYmZrVnNnbHVQQktSeTdEbnBiNUM3?= =?utf-8?B?MHpIemtxd3RCOWUwL0pDYWlXVHEwTFVRcEhGazd4aGFWdDYzbHc5bkswcG5v?= =?utf-8?B?cFlqUk8zS21pc3UxTTdrZGp6MXZRcmk5VlUrS01uNFpvRG9XdnNRaSt1d0Ew?= =?utf-8?B?TDlVMHB0RjRldldLRUFmcUZhOVpxQnZMQWtJaEhoOTAyb3VjSndXWjE5cFho?= =?utf-8?B?QXZCRFhIR3BTYzF3Z2piQlpWZHVDYll1SENHKzVWSTRLT1VEcGVCWVNhWWFn?= =?utf-8?B?LzRTRGMxUGhQSDBNYnhzV3RGMWpTM2dmY3NCbDRETG5ORmFHRnpBK3JHMEp2?= =?utf-8?B?Y0RBdVhRb0JDekJhN1JldWVsT2MzTVJVSXNUZUtnalFRTkZFOW9hcWQxbGhH?= =?utf-8?B?VkM3ZEd5VU0rVjVxa0YwNW9jSEpvZEtjMUk3dW5Ob3pEcGxuNjQ3ZmlzV3Yy?= =?utf-8?B?UXlmRTQzdzBWZTBMNmptdXlMdXFEMVlNUWs5T3E4dHhtMy8xUnVsakUxVGlU?= =?utf-8?B?WkU1U0FjRUcvQTJxb0x3UjRYYVo4ZXUvVFhPZ3ZHN0t6NVFLSTNFL2t0dGt1?= =?utf-8?B?L29XTHZpUlk2YnArQ2hJbG5wN1ArWHpCWitZKzRSNGdWRVU2RFBxTnBUM3l0?= =?utf-8?B?MTZ0Q0xHdzlNbkVjTkVkNUhmYllxWlp3Lzg4Wm41b2E1eVVpOTlQN01adlcy?= =?utf-8?B?ZkNQRWQyQnRoeHA0bCtnZjdlSjlBNHdUdzdKTnp1K2YwNnovcEMrVmdIa0cx?= =?utf-8?B?ckx4QjJFTlo4RERUNmNkYUkxM1J2d3ZVclM1dnJHdzh0cEhTL3VKYko2Q2Ns?= =?utf-8?B?NHRsMy90VlRHV2p4OFhoSXk2dEoxVWJtcmUxdG9XSDhqNEZIeEZadWwyRjBU?= =?utf-8?B?M0JvRmNpS1VpODgwVWUxN1lFd0JyK2J3amtsaXo2czduT21PZGxXb1RURVo4?= =?utf-8?B?WUtmanZVa1ZFa0ZqeTdTRXBLUFRLcEkxT290N08wN0U3dFFFelMrcHBtTVdT?= =?utf-8?B?NVE1UHlsYkNsRm0yQW15S3p4R2hIMFJrNmxUcVc2NlNjdldOVzA1NkNWN0ZH?= =?utf-8?B?WjZ0SytLa05raERwSG9JWk1XMTlhc0pNeG5EY2tqeW1PcE9DNjRwNjRmOVJ0?= =?utf-8?B?WVpKL0RWWG1ldFEwUUlWV2loTjlWZXd1d0R3ZVoxdGF0YWZqeVF0VVFaWGF6?= =?utf-8?B?TDZNbGdqZThPSXlBaXZkMUF6djY2NWxPeHRFKzRqUHNKQjU0S2psSHZnNDlM?= =?utf-8?B?K0NpQnNnWHRRL2dCNlNVb2V1UkRWS042ajhHV3RVbmppMUxnRHBuMHpNMHBx?= =?utf-8?B?RHdSNWNLdHE5bmQxaHV4WmJVbmo0Z29ySk0rMFc1aFFvWjhRZWdsS2JpNmpN?= =?utf-8?B?NDFESWNIT0FQcVdIUDhuTXdvNkFiZEVvbWUvVmhscndSOE4wbzZmUWJvRE5V?= =?utf-8?B?R212MVFZQWlXSDhqODZJN1pCNy80dC9mcU5zN1NVYnVWdkVOS0U5SjJUUjFC?= =?utf-8?B?aWhkaXF1NnNQOG9DY2tOTDdHTnR1cThWYmxzQnBQMXZmQ0RyYWl2VUxYUk1O?= =?utf-8?B?cTY5TXRNU2o3YmprYWpFR0Rja2RqUnB3NXNVSkk0RTlXbzZXdVhRSXJmM1Jw?= =?utf-8?B?bUczM3lETU9HZUlUQXl5N3E1bWNudHVpVVk0U2NHUGd0cVA2dFRnOTY4ZEk0?= =?utf-8?B?L2pFOEZrT0pHMDhTYk93Z20rTGFFODMyZXBpK3lDcThDOE1pMHgwNzdEY1or?= =?utf-8?B?MkcxMnlxdGgrTFlpWFdkZzJObUtFSWhpaFVxQ2gxdm5aeDdNaGh5Y2FqYkxG?= =?utf-8?Q?vnQQndLl+r0gD2p6mMXO+AQ=3D?= Content-ID: <6F83296930089244A0DEF802643DE446@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b26ee7a4-8805-48ab-ee7b-08d9c5b5dfc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Dec 2021 01:45:18.3079 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kgp5q1/QqvXmuok8hZeOtZEPxOFPLJjVr6cQZTnigCyVb1d8HtSDYu9JhZGHlalMU0EaYEjLk4s40Pvgs0Uo2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5308 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] libavutil/hwcontext_qsv: clean padding when upload qsv frames 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On Tue, 2021-12-14 at 05:53 +0000, Eoff, Ullysses A wrote: > > -----Original Message----- > > From: ffmpeg-devel On Behalf Of Chen, > > Wenbin > > Sent: Monday, December 13, 2021 6:24 PM > > To: ffmpeg-devel@ffmpeg.org > > Subject: Re: [FFmpeg-devel] [PATCH] libavutil/hwcontext_qsv: clean padding > > when upload qsv frames > > > > > On Thu, 2021-12-02 at 15:40 +0800, Wenbin Chen wrote: > > > > When we upload a frame that is not padded as MSDK requires, we create a > > > > new AVFrame to copy data. The frame's padding data is uninitialized so > > > > it brings run to run problem. For example, If we run the following > > > > command serveral times we will get different outputs. > > > > > > > > ffmpeg -init_hw_device qsv=qsv:hw -qsv_device /dev/dri/renderD128 > > > > -filter_hw_device qsv -f rawvideo -s 192x200 -pix_fmt p010 > > > > -i 192x200_P010.yuv -vf "format=nv12,hwupload=extra_hw_frames=16" > > > > -c:v hevc_qsv output.265 > > > > > > > > According to > > > > https://github.com/Intel-Media- > > > > > > SDK/MediaSDK/blob/master/doc/mediasdk-man.md#encoding-procedures > > > > "Note: It is the application's responsibility to fill pixels outside > > > > of crop window when it is smaller than frame to be encoded. Especially > > > > in cases when crops are not aligned to minimum coding block size (16 > > > > for AVC, 8 for HEVC and VP9)" > > > > > > > > I add a function to fill padding area with border pixel to fix this > > > > run2run problem, and also move the new AVFrame to global structure > > > > to reduce redundant allocation operation to increase preformance. > > > > > > > > Signed-off-by: Wenbin Chen > > > > --- > > > > libavutil/hwcontext_qsv.c | 96 +++++++++++++++++++++++++++++++++----- > > > > > > - > > > > 1 file changed, 83 insertions(+), 13 deletions(-) > > > > > > > > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c > > > > index 268be9f8a1..983494666b 100644 > > > > --- a/libavutil/hwcontext_qsv.c > > > > +++ b/libavutil/hwcontext_qsv.c > > > > @@ -47,6 +47,7 @@ > > > > #include "pixfmt.h" > > > > #include "pixdesc.h" > > > > #include "time.h" > > > > +#include "imgutils.h" > > > > > > > > #define QSV_VERSION_ATLEAST(MAJOR, MINOR) \ > > > > (MFX_VERSION_MAJOR > (MAJOR) || \ > > > > @@ -90,6 +91,7 @@ typedef struct QSVFramesContext { > > > > > > > > mfxExtOpaqueSurfaceAlloc opaque_alloc; > > > > mfxExtBuffer *ext_buffers[1]; > > > > + AVFrame realigned_tmp_frame; > > > > } QSVFramesContext; > > > > > > > > static const struct { > > > > @@ -137,6 +139,54 @@ static uint32_t qsv_get_d3d11va_bind_flags(int > > > > > > mem_type) > > > > } > > > > #endif > > > > > > > > +static int qsv_fill_border(AVFrame *dst, const AVFrame *src) > > > > +{ > > > > + const AVPixFmtDescriptor *desc; > > > > + int i, planes_nb = 0; > > > > + if (dst->format != src->format) > > > > + return AVERROR(EINVAL); > > > > + > > > > + desc = av_pix_fmt_desc_get(dst->format); > > > > + > > > > + for (i = 0; i < desc->nb_components; i++) > > > > + planes_nb = FFMAX(planes_nb, desc->comp[i].plane + 1); > > > > + > > > > + for (i = 0; i < planes_nb; i++) { > > > > + int sheight, dheight, y; > > > > + ptrdiff_t swidth = av_image_get_linesize(src->format, > > > > + src->width, > > > > + i); > > > > + ptrdiff_t dwidth = av_image_get_linesize(dst->format, > > > > + dst->width, > > > > + i); > > > > + const AVComponentDescriptor comp = desc->comp[i]; > > > > + if (swidth < 0 || dwidth < 0) { > > > > + av_log(NULL, AV_LOG_ERROR, "av_image_get_linesize > > > > failed\n"); > > > > + return AVERROR(EINVAL); > > > > + } > > > > + sheight = src->height; > > > > + dheight = dst->height; > > > > + if (i) { > > > > + sheight = AV_CEIL_RSHIFT(src->height, desc->log2_chroma_h); > > > > + dheight = AV_CEIL_RSHIFT(dst->height, desc->log2_chroma_h); > > > > + } > > > > + //fill right padding > > > > + for (y = 0; y < sheight; y++) { > > > > + void *line_ptr = dst->data[i] + y*dst->linesize[i] + > > > > swidth; > > > > + av_memcpy_backptr(line_ptr, > > > > + comp.depth > 8 ? 2 : 1, > > > > + dwidth - swidth); > > > > + } > > > > + //fill bottom padding > > > > + for (y = sheight; y < dheight; y++) { > > > > + memcpy(dst->data[i]+y*dst->linesize[i], > > > > + dst->data[i]+(sheight-1)*dst->linesize[i], > > > > + dwidth); > > > > + } > > > > + } > > > > + return 0; > > > > +} > > > > + > > > > static int qsv_device_init(AVHWDeviceContext *ctx) > > > > { > > > > AVQSVDeviceContext *hwctx = ctx->hwctx; > > > > @@ -220,6 +270,7 @@ static void > > > > > > qsv_frames_uninit(AVHWFramesContext *ctx) > > > > av_freep(&s->surface_ptrs); > > > > av_freep(&s->surfaces_internal); > > > > av_freep(&s->handle_pairs_internal); > > > > + av_frame_unref(&s->realigned_tmp_frame); > > > > av_buffer_unref(&s->child_frames_ref); > > > > } > > > > > > > > @@ -1014,12 +1065,13 @@ static int > > > > > > qsv_transfer_data_to(AVHWFramesContext > > > > *ctx, AVFrame *dst, > > > > QSVFramesContext *s = ctx->internal->priv; > > > > mfxFrameSurface1 in = {{ 0 }}; > > > > mfxFrameSurface1 *out = (mfxFrameSurface1*)dst->data[3]; > > > > + mfxFrameInfo tmp_info; > > > > > > > > mfxSyncPoint sync = NULL; > > > > mfxStatus err; > > > > int ret = 0; > > > > /* make a copy if the input is not padded as libmfx requires */ > > > > - AVFrame tmp_frame; > > > > + AVFrame *tmp_frame = &s->realigned_tmp_frame; > > > > const AVFrame *src_frame; > > > > int realigned = 0; > > > > > > > > @@ -1048,24 +1100,40 @@ static int > > > > > > qsv_transfer_data_to(AVHWFramesContext > > > > *ctx, AVFrame *dst, > > > > if (ret < 0) > > > > return ret; > > > > > > > > + /* According to MSDK spec for mfxframeinfo, "Width must be a > > > > multiple > > > > > > of > > > > 16. > > > > + * Height must be a multiple of 16 for progressive frame sequence > > > > and a > > > > + * multiple of 32 otherwise.", so allign all frames to 16 before > > > > uploading. */ > > > > if (src->height & 15 || src->linesize[0] & 15) { > > > > realigned = 1; > > > > - memset(&tmp_frame, 0, sizeof(tmp_frame)); > > > > - tmp_frame.format = src->format; > > > > - tmp_frame.width = FFALIGN(src->width, 16); > > > > - tmp_frame.height = FFALIGN(src->height, 16); > > > > - ret = av_frame_get_buffer(&tmp_frame, 0); > > > > - if (ret < 0) > > > > + if (tmp_frame->format != src->format || > > > > + tmp_frame->width != FFALIGN(src->width, 16) || > > > > + tmp_frame->height != FFALIGN(src->height, 16)) { > > > > + av_frame_unref(tmp_frame); > > > > + > > > > + tmp_frame->format = src->format; > > > > + tmp_frame->width = FFALIGN(src->width, 16); > > > > + tmp_frame->height = FFALIGN(src->height, 16); > > > > + ret = av_frame_get_buffer(tmp_frame, 0); > > > > + if (ret < 0) > > > > + return ret; > > > > + } > > > > + ret = av_frame_copy(tmp_frame, src); > > > > + if (ret < 0) { > > > > + av_frame_unref(tmp_frame); > > > > return ret; > > > > - > > > > - ret = av_frame_copy(&tmp_frame, src); > > > > + } > > > > + ret = qsv_fill_border(tmp_frame, src); > > > > if (ret < 0) { > > > > - av_frame_unref(&tmp_frame); > > > > + av_frame_unref(tmp_frame); > > > > return ret; > > > > } > > > > + > > > > + tmp_info = out->Info; > > > > + out->Info.CropW = FFMIN(out->Info.Width, tmp_frame->width); > > > > + out->Info.CropH = FFMIN(out->Info.Height, tmp_frame->height); > > > > } > > > > > > > > - src_frame = realigned ? &tmp_frame : src; > > > > + src_frame = realigned ? tmp_frame : src; > > > > > > > > if (!s->session_upload) { > > > > if (s->child_frames_ref) > > > > @@ -1097,8 +1165,10 @@ static int > > > > > > qsv_transfer_data_to(AVHWFramesContext *ctx, > > > > AVFrame *dst, > > > > return AVERROR_UNKNOWN; > > > > } > > > > > > > > - if (realigned) > > > > - av_frame_unref(&tmp_frame); > > > > + if (realigned) { > > > > + out->Info.CropW = tmp_info.CropW; > > > > + out->Info.CropH = tmp_info.CropH; > > > > + } > > > > > > > > > > > > return 0; > > > > } > > > > > > Thanks for this old issue, LGTM > > > > > > -Haihao > > > > Ping. > > Anyone who can help to apply this patch? > > Thanks > > > > This should fix https://trac.ffmpeg.org/ticket/7830 > Can you add this to the commit message? Hi Wenbin, Could you please update the commit message if your patch fixes ticket #7830 ? Thanks Haihao _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".