From patchwork Wed Dec 11 09:01:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "fgodtdev@hotmail.com" X-Patchwork-Id: 16728 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 3AB2D446A82 for ; Wed, 11 Dec 2019 11:01:23 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EF0F468AE33; Wed, 11 Dec 2019 11:01:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PU1-obe.outbound.protection.outlook.com (mail-oln040092254015.outbound.protection.outlook.com [40.92.254.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4BE8C68AD93 for ; Wed, 11 Dec 2019 11:01:15 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MZWdnot8fL8Lu8IjKMsOWSqTAcaAIt4zYqMl6irOWxY47m85XAX0E6uUcsYOcg7UcVaigBpIXhLRnj8Gpx4QCXDkXxJ+4GltfzfFp2MAVG9V3CAO6VU4AlEY+x7g/331zJWHhElwRlXHEUrPVAxn1vQyu6OMru+oxT2DlzO4AkrT14tn5e7iEtWzJ1iiEAK4RRb7pusZ1NrR9vJmFc/0Tu1DLxybvFBiXInr3G1eSviVuAqoCtZBKN2Q6LKKjyEkTdhNpHlBy1H/9DR2x2SQnvnc7XeOG1W0jbGBI0tyo944CMFoiKDo4s8yV28jNj0J9FKSZLjGgKgkXpKxyfwzHg== 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=RqLGZ6SQ8XRqROF5L4BKWho+EObQvH4i9P2ynZuZT3E=; b=E3kssJ6SChzM7mCB5x5LBnXDSizOoswieOn5TdqVHA0uS9F+j3VApDkv/oAd7Ray0e2HcIizeDfLTtKmjU7UfmgzcvBCKQzUvc+fRq5a+Io+CKDlkVx3qSoovhFmmi9/SBpPUSY9Ldq90jlKnvdYJxVDv7eAvGUMh4J47xTw19uj6DBp7fWnMchnxin/LFE1wuh2o0YHPX/oz1KTeNw/7GyKm4gcQTU2YO0Ukr4mP9K9qQpcGTRwtpCejKQxCjO8UARazH+oMPJYA5C95qYPaXzYhW5wUhUBWiqGQMojgZt4quecr4sT3o5/e0DaVMtyyvBtXxbmTP1T0DyM4WpM0Q== 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=RqLGZ6SQ8XRqROF5L4BKWho+EObQvH4i9P2ynZuZT3E=; b=IHEiuT5rzTHgTvifL7dYHQElJlZOna3qWVy+yUtRD0oOrrwIy1bmgF4U8bDm2LWfEO0USDNDs/MCG+MLRugj4M1XPjUkcohRSkjG9MRQNc99n+THou8kz5YHecj/SekeIKZlPnE1HOJnbrgcRvslcpVG7iT0qSHRKAGYb0ayO1sJ9ubiTztSbroCJg1xIpzM3oqB1XjDmeOBYUtcu4E38Hay64W9UMKoOwKvkFJ5xWkC7S+zdMCBnEVJQYSZEhxfSZqtW1SVh4se5g/4LU0A2M3wC7NeCwFgUMk+XPOGpA6ZtZNeFRtWT2T5RO+YdAFobrKdaCsmdMlye+qP8GuxgA== Received: from SG2APC01FT026.eop-APC01.prod.protection.outlook.com (10.152.250.58) by SG2APC01HT018.eop-APC01.prod.protection.outlook.com (10.152.250.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.25; Wed, 11 Dec 2019 09:01:12 +0000 Received: from HK2PR03MB4596.apcprd03.prod.outlook.com (10.152.250.52) by SG2APC01FT026.mail.protection.outlook.com (10.152.250.190) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.25 via Frontend Transport; Wed, 11 Dec 2019 09:01:12 +0000 Received: from HK2PR03MB4596.apcprd03.prod.outlook.com ([fe80::640c:1614:9a91:248b]) by HK2PR03MB4596.apcprd03.prod.outlook.com ([fe80::640c:1614:9a91:248b%6]) with mapi id 15.20.2538.012; Wed, 11 Dec 2019 09:01:12 +0000 From: _ FgoDt To: FFmpeg development discussions and patches Thread-Topic: =?gb2312?B?u9i4tDogW1BBVENIIDEvMV0gYWRkIHdpdGhvdXRfY2FwdHVyZWJsdCBvcHRp?= =?gb2312?B?b24gZm9yIGxpYmF2ZGV2aWNlL2dkaWdyYWIuYywgd2hlbiB1c2VpbmcgdGhl?= =?gb2312?B?IGJpdGJsdCBmdW5jdGlvbiB3aXRoIENBUFRVUkVCTFQgaXQgY2F1c2VkIHRo?= =?gb2312?B?ZSBtb3VzZSBjdXJzb3IgZmxpY2tlci4gbW9zdCB0aW1lIHdlIGRvbnQgbmVl?= =?gb2312?Q?d_this_flag_to_capture_window?= Thread-Index: AQHVm4LMfbpUCLS9fUG58i0v+mWKLKe1UZUz Date: Wed, 11 Dec 2019 09:01:12 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:2C7C0C588F77CFE8D48234B30E0A60575DF274F8A902666CE7DF2A8C7A334CA6; UpperCasedChecksum:41748907560915EDF7CF842F7DAE4BD85B2C012438024ED0C3F1A89C45B5EC2C; SizeAsReceived:7569; Count:45 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [y6b3al81EBmIXzeooKY+jJMN2qI5MMAS] x-ms-publictraffictype: Email x-incomingheadercount: 45 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 9c65dd5c-76e2-4769-09c7-08d77e18abee x-ms-traffictypediagnostic: SG2APC01HT018: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2FblXPPeUgCK43PvDtW0ZqmWbsHlISG8XbEpRDURt6mSWAY2MEP787lFNzWRPTbHI0FeCulpMD/gHwb4E1qKipspeh2mkvztzOg525/J6zs70DnrPc7WqDHH+y9vJO6NBrw6TZR+77J64OPlzMMZK2rpETX96xYgne4HNfg2AVzYYnZTG+OkfOdQ+8eQRhr9 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: 9c65dd5c-76e2-4769-09c7-08d77e18abee X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Dec 2019 09:01:12.4203 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2APC01HT018 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] =?gb2312?b?u9i4tDogW1BBVENIIDEvMV0gYWRkIHdpdGhv?= =?gb2312?b?dXRfY2FwdHVyZWJsdCBvcHRpb24gZm9yIGxpYmF2ZGV2aWNlL2dkaWdyYWIu?= =?gb2312?b?Yywgd2hlbiB1c2VpbmcgdGhlIGJpdGJsdCBmdW5jdGlvbiB3aXRoIENBUFRV?= =?gb2312?b?UkVCTFQgaXQgY2F1c2VkIHRoZSBtb3VzZSBjdXJzb3IgZmxpY2tlci4gbW9z?= =?gb2312?b?dCB0aW1lIHdlIGRvbnQgbmVlZCB0aGlzIGZsYWcgdG8gY2FwdHVyZSB3aW5k?= =?gb2312?b?b3c=?= 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" did someone review the patch? ________________________________ 发件人: _ FgoDt 发送时间: 2019年11月15日 15:03 收件人: ffmpeg-devel@ffmpeg.org 抄送: _ FgoDt 主题: [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 From: fgodt Signed-off-by: fgodt --- libavdevice/gdigrab.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) -- 2.23.0 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 }, };