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 A418C42ACD for ; Wed, 13 Apr 2022 05:44:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D8CB968B2F5; Wed, 13 Apr 2022 08:44:42 +0300 (EEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 754F268AFB1 for ; Wed, 13 Apr 2022 08:44:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649828681; x=1681364681; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=wvi55lW7kwF1oAVS1PpNoiQUqX0FmkgLSD2TQq3ogU8=; b=kiu0yGKFBrhS5nOtlH4j3UZCGeYonisURPeJrocE+1Zjn1sqy+sa1ZmO g+PT3A5T7q5pEQk4EKYd50d6CM410z/+fEPVMYPJAZkek+rhhSRou3SIK lfoNkh7xiiEfbwLTFUsesFq2fj8vbU2qcg+Be0mn6nWSyIczQJTNQCGxZ H0L6r/SR7/E+2UvNcbBv5nTHDfEsFQdoped1A2u3xQhZwFgcNh39mU7C5 3ywlMvo2yUJ89JRF1i/if9VsJa6q8W0AC213Pb8+/bd8IjOQSQnPHm4lz z8IzUSZZhm+MpT75Y1HCPy9WV96cdPREmlakifpcA5fcVc+ZJpczIeuVR A==; X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="262331993" X-IronPort-AV: E=Sophos;i="5.90,255,1643702400"; d="scan'208";a="262331993" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2022 22:44:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,255,1643702400"; d="scan'208";a="655423332" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga002.fm.intel.com with ESMTP; 12 Apr 2022 22:44:34 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 12 Apr 2022 22:44:33 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 12 Apr 2022 22:44:33 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 12 Apr 2022 22:44:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gPYqscq91SO34nyj13cqXjk1UWgt5ntktxEu7mb0H8Vk8NJV720gaXOwPSy0ZlJcNOXjh+VvZ/JshT+0hoYF5DbLjXzalwyhKf+6mMIQmbQV4VXwF92eytHRIJCfK9uZnOBhPfieILwsY/eQyPLLDGZJSUlZW0rVey8hTzi2GARmfzCc1LuMudWd7bch26msWcXf7c32/rzcuDeT/OcyVTKyKdvUDSX2y114m3rfnVXTuLEY+TzK5M7QoxlyycuXwzpx0W3sLhESiEoZKDjHLXFY64LWnhFM2C/faVV1RK27fcAkD5Mp7W4PFFbKszjH/f8UOax4GcfuySCVjLvfBg== 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=wvi55lW7kwF1oAVS1PpNoiQUqX0FmkgLSD2TQq3ogU8=; b=WZD99braN5Jip6+qEBZoD2ABOce1+ffpDSmWDH/JcNaqCVQFX9dj6Hkv0hpYeYJRmJwYI9YI7cI4yYaKSPHjY/ihB34XkEVEnWLCS6rOQpM8jxDtFJ3J96ling7u60u6bNRjd1td/keFXjncaEKoYearYn+tOPv9ro/2HbUUqEFQfRBxX4a0Obx6BEaP4cFb6cOUG4WSPEsmTtBE9mWqTAEG+OcwUJMvzjgvU4paR+ceHYw4ad5wtOPjisG9/M80vusXVAnWobhohZ3DrLsDUfLNTu81e7CX4U7c2xF9F91RiddLMDhh6gb7SfXoKM0C3Fzxa7WeePF2/A+w09Vp6Q== 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 SJ0PR11MB5663.namprd11.prod.outlook.com (2603:10b6:a03:3bc::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.18; Wed, 13 Apr 2022 05:44:32 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::6534:444c:a75d:4bf2]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::6534:444c:a75d:4bf2%7]) with mapi id 15.20.5144.029; Wed, 13 Apr 2022 05:44:32 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3] libavutil/hwcontext_qsv: Align width and heigh when download qsv frame Thread-Index: AQHYSZ6cSjwRw1AD1USql168aP4PrKztX9kA Date: Wed, 13 Apr 2022 05:44:31 +0000 Message-ID: <46fbe2aee2ac911f70d08cf7f026d60c22c8ab59.camel@intel.com> References: <20220406101008.1128823-1-wenbin.chen@intel.com> In-Reply-To: <20220406101008.1128823-1-wenbin.chen@intel.com> 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: a6ba7896-de9e-4c56-0b2e-08da1d10af16 x-ms-traffictypediagnostic: SJ0PR11MB5663:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YeCPuF6jSJYqKPt3mf0WS88Z60/IwAKcI2C5p6MQxDgMOVuolG07f2mvSNAT3FKx6W4+ssZWWpYH8+fDHxUORQJo5hpQD12n4Vw1IvSKipB2gXPl+qhV1ZPcpYVbjyuPeNZcWu45UfpzMV8/SjlDGHnto9OYl+Z7iCyMS0VZ7Pym4DBwnNB34J2KucBobUp4oZmG3zc3sHrTdTXTc0800ttVn55iF0aNZFNb10+Po/vznbeU88ZQpwEVDN6WdA3XWVyqTgDPH61+vsJcE5AVQe7xxFmuiZvqh4O1wuu1HFwwOpy7LSss3qBCeKHpAleNUaA11h98p1oWaBRZYgXF8h7McYN1F9Wr+HQiE0KCoWfJoS+IngILFyEyjpFUIENp/fviOWnnlI8YIU26iDQYfShXQgf+UvO8GBlxjnOwISl0OZdw/b5tnWvurSTvc6YNKy72BSRMuYSSNNUKdR1rU1YIQ7obbslO4W0a0zjl2hyhXq3eNYLr72BBVA7BirWM3Pn4hiRa8MT/0eKwqHTIRkdVwHcQDgGDk0Qw7aBmLy+6xxtotTECu2/s2E2Scc3epolepU/9dWvv+YEjjJ7beYOaPbUjr1y5WOL4cYjJaCgBFbVE9SCby3dc7wnkvAeNq3CW0ULriy5CmR1q7XQO5fTIGBF0U1pGd+F3x7LAihac6ZHdA4EU9mkHVUJdsPt6K0JR2MIl2p0sllqoQ/NDaOyL3YoY07S/g59SK8EBj48= 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:(13230001)(366004)(71200400001)(186003)(6916009)(2616005)(26005)(86362001)(8676002)(6486002)(6506007)(6512007)(316002)(38100700002)(82960400001)(122000001)(83380400001)(508600001)(38070700005)(66556008)(66446008)(8936002)(64756008)(2906002)(91956017)(36756003)(76116006)(66476007)(5660300002)(66946007)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S0NZbDY0aW0vcCsydElXSTFRU2J3RmovUzJpQ1JQWU42UXFHZ1I5Y0ZQcnB2?= =?utf-8?B?SXR3UU1WeUdlaTYvSVBzQ3NzUktOZ1cwNld1a3AyRnR4dDUzeVR0Nm4wVnBM?= =?utf-8?B?cFV0TlFkYkNuS244aE9xY0w3TlM4WXo3czNudjFVV3pJUW4xczhpRjdVNDd4?= =?utf-8?B?SG16b3dZbjdLZG1wMC9NWUFjS2xUb3dPbVNZUUZnQStxMWhpdDZJK28yc2Ns?= =?utf-8?B?YXpEb09KNmlCaUgzb056NjVQQStXSmc3bTR2Z1l1eVhFY0x4UUkyUnlweVA4?= =?utf-8?B?NmdEZ29paWZLUWlFYm9xZzUxL0R1V0RSYk9kVDQ3QkRRbUtmQzhLRS9va1RX?= =?utf-8?B?bGN4UjZxcWtlWHB6RjBqTkVITmlLRTRoUzZQY2FWT1lCcFozL0NwSzdzQW5F?= =?utf-8?B?L0FjNURuVjZlcFV4SFhJNlh2SThTenljMnowZjJveUdxNFNYTDl2ZTMrQko5?= =?utf-8?B?UUN4Y2xxaFFjOFRPTjI1amdzSXJtYTdXRnNDeUxpdDdyS1FobmhuWE0wbnlP?= =?utf-8?B?WC9KL2tqdFVPNm9saE12ajF5Y01zc0k1ZjV3VkhmRG5idUlVcmVxbEQ2NFA4?= =?utf-8?B?Kys4SDFaWjZKaUxpK3V1NFEzQUMvbUdwVmV0Wi9RUXZ4NGptQU1uVzNRN3pm?= =?utf-8?B?dW1xendiR3JER3lXaWpPeFluUVFtVkMxNGlxNnFpVlBYbHdtYjk2SVRpa0Y5?= =?utf-8?B?M1dYdzJhQXdjQjdDOE9sV2RTMGZvRGRZZlUrK2thSVhPd1B2dUFJeEZ1OGto?= =?utf-8?B?endXNllpaU91TFZwdXVqZVcvQTBMRm55VUN2QktJb3Y5VzJObmtzZVJvYmN1?= =?utf-8?B?M2hQb3FORHhWWkE0aDNvbld5U3JMNFFWUWpYcTRKU3ovSEhJUFE2d3pqaEJk?= =?utf-8?B?TmNudzhEbVJ4cDZ5OXoyY3MxcGhEYXZ4cG13Q29sU0JPWmIvblJGTUkvS1hy?= =?utf-8?B?eE8yZHRDcHpzTGZsbTc0TDVVNytMbHJqSEVGeEh3UksyWGV1cUVmNEw3dFRJ?= =?utf-8?B?dXprUDBkclVRdm5aaWNaYVgzd0k2a05FUGFSTmhEMlpOM09Ub2QyeTZRK2dN?= =?utf-8?B?elBXR1hOMGlFRUUvYVpzY3ZNOExmMnF2VktIOFkySzREVGkybEdscG1haWdk?= =?utf-8?B?SW03VEJRSXNEVlplWGRiVUE0TTdCdDFRa3Vnc0EyMlp5UmZUVVFlV01CN2NM?= =?utf-8?B?WFFLcnhhM0JmWU5wYk1IdGJ5WlM2RGFaczZGNVNOZFFOK0pIQTRsck9OY1pM?= =?utf-8?B?Q2hmSFpGRTRrdFRFVlBOWHBVUFR4VmVUekpPOTUzNnFnMkJ4enprb2xlZmk5?= =?utf-8?B?bHh1YTFjWkNWaldmb2tnTzk0QURQSTA3YnZZV3VlRkc5R2NxWmxQaWdnMDNu?= =?utf-8?B?TE1aNGs0aDd3RWloMGF2eCtHcWtxSlNQbVQ3Y2h6OEZaRzUxNUM2WXFZZ0k3?= =?utf-8?B?eEZXUEhWQ2dPUm1kTWpqMy9SS3ZPQlVCNHRrUm9McWp0bzVsemUrTVYzNmtv?= =?utf-8?B?Zk5EVThXR29RRWxhWjJJcmdmMy9FUTRhOW5ab0xLNmRqeGpEVDlQcENsUXFZ?= =?utf-8?B?SVd6M1JuNWliWTV3Ymc0eTVSbFQyb0RXSmdBRzhlZFhrVnlnZzZIcElGWDJj?= =?utf-8?B?SU9rYW4rVHd6UndaRzloSkZzcTk3YmpFRXNNWGZXbGQ1YktvdUwvc09HMXkv?= =?utf-8?B?OE1aOWlQRHgvWFFaM1BvaWQyUjViZ0JkaXRjbGhzSWtFTFRPQ09KbTc2bkpQ?= =?utf-8?B?Y20zYnpiclcycElBZkp0OWpyekNsenlvUUxoMGtOeFdHL0RnSDhtdURKSjhS?= =?utf-8?B?MklicENET1BSeEh3WFRwNjk4c1pWdEdvMzlvNU03L0h4MGhjbzgxbnpLdUtF?= =?utf-8?B?bDhXY01rSCtWbk9MeVZQQ2JSY1ljTEtSM0NrU2VCdzRiYnpjMnA5UDBZMlZ4?= =?utf-8?B?elppZ2YvYTNFU2pka2dOelZWaHZlYWhUcGpyNlFHQ3o2QUhXQVljazFTS3Vo?= =?utf-8?B?cCtaNG9yT0dMZ3lXVVNpNGo3ZlQ5ZjVOZk03aVU4dzg2OU9qczRvK1lhSHFz?= =?utf-8?B?TktLNFVRcjRzbTZFNVo5ejlydFpqeVpEbStpZ0RKcVNDWSttUHg4em5oN1Z0?= =?utf-8?B?bk5QRngwTk5HSDZqYW9Nd3RudGlBREtyQXVqb3AxNVFiZ2d0OEU5VTZTQUNa?= =?utf-8?B?Zi84NGlEd0xBMVFoSU82cmZSOFIrMVJBeXZsazJPVFVZaXdVWi85Vk9Iajh1?= =?utf-8?B?TEhYQTNmZnQybDZYTU1TLzZCdU9sUnZJOGN6YUtYVnBMQUJJeW9SRDFhK29D?= =?utf-8?B?ZzlnTWYveFJjUDZzY1U4TGVrRXV3TC9NZEwyUzN1c3RvUTNZSGdoQy9aKzM3?= =?utf-8?Q?wJgyhW/GYLOAqkBA=3D?= Content-ID: <9850800E709C964C9D2C875FAE8E5BD2@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: a6ba7896-de9e-4c56-0b2e-08da1d10af16 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2022 05:44:31.9549 (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: yzyd7aH8FbgNl5BhCmvZgiX29O63hbUdN8oh5QVodQzITEslRC7DJMYPfiNDqMPEj1cWk6z3e5MNr5SG28JynA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5663 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3] libavutil/hwcontext_qsv: Align width and heigh when download qsv frame 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 Wed, 2022-04-06 at 18:10 +0800, Wenbin Chen wrote: > The width and height for qsv frame to download need to be > aligned with 16. Add the alignment operation. > Now the following command works: > ffmpeg -hwaccel qsv -f rawvideo -s 1920x1080 -pix_fmt yuv420p -i \ > input.yuv -vf "hwupload=extra_hw_frames=16,format=qsv,hwdownload, \ > format=nv12" -f null - > > Signed-off-by: Wenbin Chen > --- > libavutil/hwcontext_qsv.c | 47 ++++++++++++++++++++++++++++++++++----- > 1 file changed, 42 insertions(+), 5 deletions(-) > > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c > index 95f8071abe..66c0e38955 100644 > --- a/libavutil/hwcontext_qsv.c > +++ b/libavutil/hwcontext_qsv.c > @@ -91,7 +91,8 @@ typedef struct QSVFramesContext { > > mfxExtOpaqueSurfaceAlloc opaque_alloc; > mfxExtBuffer *ext_buffers[1]; > - AVFrame realigned_tmp_frame; > + AVFrame realigned_upload_frame; > + AVFrame realigned_download_frame; > } QSVFramesContext; > > static const struct { > @@ -303,7 +304,8 @@ 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_frame_unref(&s->realigned_upload_frame); > + av_frame_unref(&s->realigned_download_frame); > av_buffer_unref(&s->child_frames_ref); > } > > @@ -1058,21 +1060,46 @@ static int qsv_transfer_data_from(AVHWFramesContext > *ctx, AVFrame *dst, > mfxSyncPoint sync = NULL; > mfxStatus err; > int ret = 0; > + /* download to temp frame if the output is not padded as libmfx requires > */ > + AVFrame *tmp_frame = &s->realigned_download_frame; > + AVFrame *dst_frame; > + int realigned = 0; > > ret = qsv_internal_session_check_init(ctx, 0); > 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 > downloading. */ > + if (dst->height & 15 || dst->linesize[0] & 15) { > + realigned = 1; > + if (tmp_frame->format != dst->format || > + tmp_frame->width != FFALIGN(dst->linesize[0], 16) || > + tmp_frame->height != FFALIGN(dst->height, 16)) { > + av_frame_unref(tmp_frame); > + > + tmp_frame->format = dst->format; > + tmp_frame->width = FFALIGN(dst->linesize[0], 16); > + tmp_frame->height = FFALIGN(dst->height, 16); > + ret = av_frame_get_buffer(tmp_frame, 0); > + if (ret < 0) > + return ret; > + } > + } > + > + dst_frame = realigned ? tmp_frame : dst; > + > if (!s->session_download) { > if (s->child_frames_ref) > - return qsv_transfer_data_child(ctx, dst, src); > + return qsv_transfer_data_child(ctx, dst_frame, src); > > av_log(ctx, AV_LOG_ERROR, "Surface download not possible\n"); > return AVERROR(ENOSYS); > } > > out.Info = in->Info; > - map_frame_to_surface(dst, &out); > + map_frame_to_surface(dst_frame, &out); > > do { > err = MFXVideoVPP_RunFrameVPPAsync(s->session_download, in, &out, > NULL, &sync); > @@ -1093,6 +1120,16 @@ static int qsv_transfer_data_from(AVHWFramesContext > *ctx, AVFrame *dst, > return AVERROR_UNKNOWN; > } > > + if (realigned) { > + tmp_frame->width = dst->width; > + tmp_frame->height = dst->height; > + ret = av_frame_copy(dst, tmp_frame); > + tmp_frame->width = FFALIGN(dst->linesize[0], 16); > + tmp_frame->height = FFALIGN(dst->height, 16); > + if (ret < 0) > + return ret; > + } > + > return 0; > } > > @@ -1108,7 +1145,7 @@ static int qsv_transfer_data_to(AVHWFramesContext *ctx, > AVFrame *dst, > mfxStatus err; > int ret = 0; > /* make a copy if the input is not padded as libmfx requires */ > - AVFrame *tmp_frame = &s->realigned_tmp_frame; > + AVFrame *tmp_frame = &s->realigned_upload_frame; > const AVFrame *src_frame; > int realigned = 0; LGTM and applied, thx -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".