From patchwork Fri Nov 15 07:03:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "fgodtdev@hotmail.com" X-Patchwork-Id: 16278 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 10B5A44A83D for ; Fri, 15 Nov 2019 09:03:47 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D8FD8689A5D; Fri, 15 Nov 2019 09:03:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-oln040092253048.outbound.protection.outlook.com [40.92.253.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5EDD5689735 for ; Fri, 15 Nov 2019 09:03:39 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nTjJZlabVeWf0GqFuG5rpLu1Ny4TQwh6QxmC+h85D9NvU13cBTUHgPfco8n+olwaYVjB6F8CpXQYQzmcHbJNMaLnkdFc7bPrOWZiqFFgc4VTTJDGHqXU3dgbMnpocyP+xDTkdFBkA6aq1StTOyaFX5cIuCE2iAirVRWLVqNH38PGz9wQyuZYlRh8XgQU6JLrcW7jJaXBhU2hIU9i1rPQeyPlsA1isYi/woYx6jaTSEjMyG5rPmwdxGkdzejS+u1/weY3G3/J8wVmUsfnn+D5IcOIaKNDNYFcidjA7rvTw6buwdBz+MPaOofR7yc0456Ol1BQmcRCvzip9f3utcGP1A== 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-SenderADCheck; bh=kiPthunW0fccmZlCvg8H6Mf019tAOKAaAvSTXRhPy9E=; b=QHiZfcn+4wNNEjC4BgsF8rxe7K33bx984fM50aatOhmWAa3aWmrHPp1UPsOisBR5vffnp2SlqE+RJJOeY7NifM+haP4PdYEr0KAFNMrL2tqgwLUzqAR933Qc+o2MEBMkBrVP5FWW/Mvl8McWe0vCLU4N7hoi5PGeKu8OXML39CB14W5lJsPDhhv8s0Dd/gVpVrib/PQtSCnR9EnMITGEV/SCl1NCyvsJ8VOh0+rHDndVE+YPr3oew76sdKJlpxyvnV4AzGqCEzbV3RcUHgSXrDSXgRDnX8T4BpkEfgfsHVA5HZGnCVfS3IY5SLTpn6C/rqLCIPuB9ap/8p2RedT4XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kiPthunW0fccmZlCvg8H6Mf019tAOKAaAvSTXRhPy9E=; b=cq8p0lK+kAGjUvvYVLca9VQYpMkd978YC5nDreKaZg60htvXLumT8/bi00t1eY4NNbn3W4Hril1qERZ+qKYAMJPW3Utu3gVYjlJGYFxqV3GmN4cHzCVsCJEkz6FuNO8VQ/VjZ3Zrosq3gHQ9oPb/tqQhHPknvXz2/lnStc7Pm0URk+hZdrDxSwLp03wIBG2P7Hx/Gaz0ofRUeWZLaopzY5oziNX2mYesGpfj/yLMA/nP4qeAPQnLzqZBFnnzhue5S/jDFqYLsx6rhcWZksyqJvOca9CfepJ6qu6GZrTgfFS5ZIAtM+fPNLoGiDSce53TcBrCfrbzSCRd5HhoJmi4bA== Received: from PU1APC01FT020.eop-APC01.prod.protection.outlook.com (10.152.252.51) by PU1APC01HT244.eop-APC01.prod.protection.outlook.com (10.152.252.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Fri, 15 Nov 2019 07:03:35 +0000 Received: from HK2PR03MB4596.apcprd03.prod.outlook.com (10.152.252.57) by PU1APC01FT020.mail.protection.outlook.com (10.152.252.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23 via Frontend Transport; Fri, 15 Nov 2019 07:03:35 +0000 Received: from HK2PR03MB4596.apcprd03.prod.outlook.com ([fe80::e0a9:fc41:c73e:cd51]) by HK2PR03MB4596.apcprd03.prod.outlook.com ([fe80::e0a9:fc41:c73e:cd51%6]) with mapi id 15.20.2451.027; Fri, 15 Nov 2019 07:03:35 +0000 From: _ FgoDt To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH 1/1] add without_captureblt option for libavdevice/gdigrab.c, when useing the bitblt function with CAPTUREBLT it caused the mouse cursor flicker. most time we dont need this flag to capture window Thread-Index: AQHVm4LMfbpUCLS9fUG58i0v+mWKLA== Date: Fri, 15 Nov 2019 07:03:35 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0066.apcprd04.prod.outlook.com (2603:1096:202:14::34) To HK2PR03MB4596.apcprd03.prod.outlook.com (2603:1096:202:1b::14) x-incomingtopheadermarker: OriginalChecksum:48DEE465C85954FB962C745FB394CD9652DADE9DAC74C903A97C0500ADCECDCF; UpperCasedChecksum:C93AC18D19E7586C2B397C62AA10EE146DCAB95F0236110939CA42C9B1F3DD0B; SizeAsReceived:7467; Count:48 x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-tmn: [ip/UyNtGGmx3tlMeJ1K4Z81MeYRbDH/t] x-microsoft-original-message-id: <20191115070319.3408-1-fgodtdev@hotmail.com> x-ms-publictraffictype: Email x-incomingheadercount: 48 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: f89af1c6-d0e1-4073-c0bb-08d76999eebe x-ms-exchange-slblob-mailprops: mBRmoEB1kyLlUbRw37Jtxsg6TVZ7rvdSl5/k2jRhMfXvhhuwpNq9IL9zkshQVv6Tpv0JiNqmitqkevfO8X9K8B8dDy4lLZ7qjY1TewgmTP4lwFJvjaZc+juNDMuL0WRgYV7m25hRfCptRgO4cbkw/xw2LGbUWs1KRaz3P0imo4K2Og3KdGZ9yT+3OuIxPO5DG7AjKV7MhlccI/qeBqQRnXnblTbvKvR0Ia6EbhNrdeAQIMd1l3lmI1+2FKjENxNLdcTgxZ9fCtE/qr8OxC3+n01Mf9YDc2lPwoRmD3PTLsm1o4lKwtrp++irg3Ef7erz9qZEDzOaWqiQ/631xi4c0ZCz7+zkatpqICjLuemv+rlj22eELr0GGUx4GHUDqBpCnAJWApyGwHoHAZvVMSR6HfOnUMyV/8kxSf5UfHQb4+W3akSqMjnWiK/WJHVMezoGfKbq/JX/AqEw2v4+mpoe1wmwK5xQPORre7SJUZ/KKzFTlbDY09Wtu1JvIJcZnMGcmGCEo1v7fLfDnak8YyfGcsRcGAfg/ZREODBg4ta+ReuQBCxFmvFh8G0RMpVr4aXxflT737tjBqZIBoGI5W3LTk72noKIV10l6DjiaFWV8l7FeKiiAwMOSiEcwxmvjA+/5YbpXLOxZlg1AUtnsuq9hvlCx9ACEwxuypmWnZSOVipTeWA5iNGZtu0dIvcAqbMxg5JfGoK15asar6ze56d9hy0O9glRo0AnyPE/+6yHRNtfoMHFbJNT6RM7a63uh+VGcPcoMBzbimE= x-ms-traffictypediagnostic: PU1APC01HT244: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8xGiRwIm37uYgjbLSjjWRANxhJh81vo4Hj5m5X6+Zd+bwaCIiFo6o6RFHbicpSbTjLNwCZnxWSdsqbeSZWZmVxgNqIolaX8JrNhF0syqT2KFIQ/lfoua3umPBkpDLTIMnhhoqBSoKgFEpKp7iEkmHb7hq2JX/JgMjTrn9T4oZE5isgKBKMnq5pbOIBt9Ba4b x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: f89af1c6-d0e1-4073-c0bb-08d76999eebe X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2019 07:03:35.7503 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: PU1APC01HT244 Subject: [FFmpeg-devel] [PATCH 1/1] add without_captureblt option for libavdevice/gdigrab.c, when useing the bitblt function with CAPTUREBLT it caused the mouse cursor flicker. most time we dont need this flag to capture window 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: _ FgoDt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: fgodt Signed-off-by: fgodt --- libavdevice/gdigrab.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavdevice/gdigrab.c b/libavdevice/gdigrab.c index f4444406fa..0ab0cfed01 100644 --- a/libavdevice/gdigrab.c +++ b/libavdevice/gdigrab.c @@ -53,6 +53,8 @@ struct gdigrab { int offset_x; /**< Capture x offset (private option) */ int offset_y; /**< Capture y offset (private option) */ + int without_captureblt; /**< capture without captureblt */ + HWND hwnd; /**< Handle of the window for the grab */ HDC source_hdc; /**< Source device context */ HDC dest_hdc; /**< Destination, source-compatible DC */ @@ -542,6 +544,8 @@ static int gdigrab_read_packet(AVFormatContext *s1, AVPacket *pkt) int64_t curtime, delay; + unsigned long flag; + /* Calculate the time of the next frame */ time_frame += INT64_C(1000000); @@ -570,12 +574,16 @@ static int gdigrab_read_packet(AVFormatContext *s1, AVPacket *pkt) return AVERROR(ENOMEM); pkt->pts = curtime; + flag = SRCCOPY; + if(!gdigrab->without_captureblt) + flag |= CAPTUREBLT; + /* Blit screen grab */ if (!BitBlt(dest_hdc, 0, 0, clip_rect.right - clip_rect.left, clip_rect.bottom - clip_rect.top, source_hdc, - clip_rect.left, clip_rect.top, SRCCOPY | CAPTUREBLT)) { + clip_rect.left, clip_rect.top, flag)) { WIN32_API_ERROR("Failed to capture image"); return AVERROR(EIO); } @@ -639,6 +647,7 @@ static const AVOption options[] = { { "video_size", "set video frame size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC }, { "offset_x", "capture area x offset", OFFSET(offset_x), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC }, { "offset_y", "capture area y offset", OFFSET(offset_y), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC }, + { "without_captureblt", "capture without captureblt", OFFSET(without_captureblt), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC }, { NULL }, };