From patchwork Thu Mar 24 06:14:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 34947 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:ab0:5fda:0:0:0:0:0 with SMTP id g26csp1059602uaj; Wed, 23 Mar 2022 23:14:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhjUpUcliRDPvGQGqQF9jAZiTbqevBf6EBTByugmfKnrORwo5OShqr90tAclbjoVohQ0V7 X-Received: by 2002:a17:907:3f91:b0:6d7:16c0:ae1b with SMTP id hr17-20020a1709073f9100b006d716c0ae1bmr3983588ejc.74.1648102495504; Wed, 23 Mar 2022 23:14:55 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y28-20020a170906519c00b006e02fed87e7si8315805ejk.760.2022.03.23.23.14.55; Wed, 23 Mar 2022 23:14:55 -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=@nxp.com header.s=selector2 header.b=iz14xuls; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9580E68B0BE; Thu, 24 Mar 2022 08:14:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60062.outbound.protection.outlook.com [40.107.6.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3094A68AA3E for ; Thu, 24 Mar 2022 08:14:43 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RIgvFfJkacoztCimBd/sos3mVeH+00kFL9XxQsVJfPGN3nI5hCOGZWuryc1yLKjv7gHq6cIBWISb8L7qDyE5loa93CZw6G8nJ78wH5gHWJxe9mVB5yG0RRYyh4iSPWOdF6klrj3CIJRe2MRQaPIOwBUTpE9LEffm0htIpyztr3MVSbWJYhYylKdV3IJfg5G2CHaT7qNhuV0xuEXQyQjPClNziMLBIguutChWjhbkBh8sfk0M18CmXiUYA/FbPBqQzwbzVxxtsKQ7HKXdL1J8c8EDR+VBZlHP0IiAzs1HetwH9Ic2w63F/S3t8xWr3uLmkhCP36mn5qdoZWO2ItlMEw== 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=tJHRxMydlRS1CL4XlS2hCL5Ae2+hPDO0BS3U2V+wW7o=; b=EXbbT+KkvwJ5sIPVVTeew7WHqkSiV7ffwj/p22Kbqo8KDSm1/DLwaKxwD0MzNExUqjoUYV3/FGwOizC5SWaLc7XvG1QWvp+kxDAiVEuOiDFXVzjb1/hIVUWTbMUgv9USsaYuFx5f1qKJ839CJxC+ZVPGZinstHdgG/1tVJMaX3ZSb4fwpZXydFO4YhTFW8oEVXxMmobkTrp3UpoqOGBOT1HkK35Xhsy73TKzhoBxRKJiaY8F5sGgK6yVJIfPv/M6pJWr3uiHw1F4bR9HhmJ7BOfrlEqJMnpyIQoIb1OvyFenUjpcYtZtGjzEiiHYQCE3UVFAAPHTvgRanSl226Bn9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tJHRxMydlRS1CL4XlS2hCL5Ae2+hPDO0BS3U2V+wW7o=; b=iz14xulsi8qLPdbdMfpN5JZtc8qsXosIg00PmUsAqEG5jxh2cCEzNgW5uTQGSsA3X/3AT+tWNWS0/RUO7jJ8G1ddSlEUdJFakw9IplmTRfSf8bpVY5MYzEfkf/qAr9rPZBuUrj4OypZ0tfwjtLfxf8k7fMNA5j98txVe2WUrgW4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by VI1PR04MB2960.eurprd04.prod.outlook.com (2603:10a6:802:9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Thu, 24 Mar 2022 06:14:42 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::c39:69cf:c4ea:967]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::c39:69cf:c4ea:967%5]) with mapi id 15.20.5102.018; Thu, 24 Mar 2022 06:14:41 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Mar 2022 14:14:13 +0800 Message-Id: X-Mailer: git-send-email 2.33.0 In-Reply-To: References: X-ClientProxiedBy: SG2PR01CA0134.apcprd01.prod.exchangelabs.com (2603:1096:4:8f::14) To AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c02fa073-58ce-434f-e683-08da0d5d957f X-MS-TrafficTypeDiagnostic: VI1PR04MB2960: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: 4LTVKCU4/2wDP7c3ORpSIKrQrv3VIkMjHoKdo+iS3kbWdUumKwSKQB1+ZejRBYKwC3kSbQ9TRZL2jTnAu/cHrinwuxFS5Ihb5SFLL3exNJtcQooFatVjYN0Hr4IAUuQCtAs53Quyf5KikD5SwbidSkaSP7blYMJfRLETzsVCUemd3cbR9Nt4rMg4o67tpuD8+92wYXKxzOnuPcsWhVCuhqbqMFE6ABG2f98DCYQhu7vF7rCcXP9RkTjQPM1rqvcstAQSPH1oprtqb0va1h+vYZ/C6efY47E5j0t9f7m/omL9cg9ZjNiAGX8matUZOdP47s3UAR7Ch+e2j26n3HompfF87MfQbksjwvfNPqrkNxFWFQT9yu7w2DhO5xRFAp+1AP7i36/aBuwpBym2aodZyJY2pAfQwNqsYt3xCuG+8nLyuxBuW5hhtwBE1c2D4kFS0eeMZ3YIdFt1We0v0PG4e+knkogStwyZlXLAUttFZx249w9SnlpUdo/iAvZoVqhoVzTEQ95GUaFs44CD0GWX2yCMkygarrGLa2FsATkhUIl8FBSnQENVDw7wIY3lzZlORvGftBprybsSUIoCEtDy6s7meXAuClNjOZzaxPqjR1OZEucTH94JDtilffL/aPmoIjwTvvuPhV/M7atjZMzhVYf3oVZn6CTVVCvDdz2T5mIBsrdz0AxE1ywQzpuPz3ovPiFeaqyAPCChjV/NanYsqfoQlghUdv1FmTwhgLl3nhc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6341.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(86362001)(8676002)(66556008)(8936002)(38100700002)(38350700002)(44832011)(66476007)(5660300002)(66946007)(6512007)(6506007)(6666004)(52116002)(83380400001)(36756003)(2906002)(508600001)(316002)(6486002)(2616005)(6916009)(186003)(26005)(70780200001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KOynQFoik0CLpffdMbTvS5xJv+XbRMWZ3gKqYxUBZNQAeUSawy1J0ytA98WF8BTXNWy22ctDV/aU6Z4h7jTI1n2vabuBdRzT69R2SkTT3EUHLRA0LxNCToJuNNdyXcE7hTKVYAhyUP1SNIC/NkWVDO4hAljsoS6WHzavwa72PTnFnrDtNwxr1wF0wBpMEht5GfbSyUX1Dm87CGCgXjDb9xVMRMDugorNOmampj28EMI4hjm00Fh8ytxp5gyRIIbOdZ1yIlnvSCQ+nwAGMSCet6nkGf7BaXQUvgiS0SQ7ArVap8+kgsLsacLNqQibAY4P7vN78bJQ0a0dxUHde2lZlzfZj/EgeRpm7NYemQbyCIE6h50m0LDMneTqY1bzqNuwOPxv99pVtjX2JAU7kmj+yNzfpEM7pYfXiSQnZi7oEi63soKgiMturMNfNTS60GxKqzXDE+AOM/YYkeda0KyEL8gkh67qMj4l4n8zETbKbqcPP3qB1EAhQGi2cPqCO5Hg0P5Bw0NCWUQbuAoWvdSA9HhheZqKVAUQvOTAIs9mlP8A7HXSac5dXDBJo6StGs8o0ZXCSZnxnzmgkgjUiVNud4Inqr8MncmDEDuUJGrGSyfWRECPhBdLPAgWzEYWISi8DaKmb1iVwSwhHJksLT5DEGSn4Ml2WQpLZQIvXGUf1WoHNJDo+G4+7PooRlmDyuF3TuQpKbZRLbeL6pRxkuPddIdEok0IUjJZfL3SMaQs6D5zWRZTIpPr78rOA1qFOQzJFCIzkQaVV/dgth8QXhzlU/QQZlxrWqp1NKChkXFqGXytGnd/oEkg/C4+HaGH6p6Zp0DMWGeEADzSPwlCidowIrCVfBxlqHTL2T1tpBYM/B0agIdK7BEKPY9HxOZc7hT37wrp94miiyB7oEC30OHsLZQtP4XX94Vw8JSvSzce40OIfVh2JxONDtHwUUwisxpp9V/kBpr0hiyg77g4YTuao+Uy2wSlGHysBX8byVyBu3gd3mkbvVbxr8xLNQJfsS/s9+wECCUESo6kTulf//S2jLjlGn4rE0RvupRQ3+e8dETi1wmgvpmUgJTO1/K5ocsZhfl7T328pXrdxWiXlAHNaD47B0t2TYM24QWaDchPOZNpnqPaULRjoTmQJcWoSeRRsiZfJWGjhCfQuqH+OWAVry7rR4psgJRLkLLISsufa5xnMn3xvLx3+z+lR7a2VyDau9ibmgKhzvebj/JvGNnclMJ6IbS1qg8zyL3AYqt7BJYU6c9EJHoG1qjKXB0phZk07CtIyrt+vWl1TIpET3/CBh9QjKqChE7AM3CH6JYGKqkVpbwl1tjgvUUtw3W6aJcOT1EG9GIflgYt80c3sagK8AOrAD+/Bpx+Nwg1W3TeVaq9L5BEqS24rVyEwG6jBJMjImO1CS5gVvJEiFl1KUbu4Atr30AY/RPgug+jfdCTf6ccDXwfqchywtTI19YKto8b X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c02fa073-58ce-434f-e683-08da0d5d957f X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 06:14:41.8590 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qW9A/FDM8ViSdypW8Knp3O8S8qaE6bOiw8ZD8cONwMd136lGII8L6fXLdKADn2uYZMaVhn1XpbRVjdAgyicK5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB2960 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/v4l2_m2m_enc: add a dequeue_timeout parameter 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: Fu8C/i1ta3M6 For the reason similar to decoder, Set a reasonable timeout instead of -1 to avoid dead waiting in some case. Signed-off-by: Ming Qian --- libavcodec/v4l2_context.c | 4 ++-- libavcodec/v4l2_context.h | 2 +- libavcodec/v4l2_m2m_enc.c | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c index 8910ae08d3a5..1122e68f9a97 100644 --- a/libavcodec/v4l2_context.c +++ b/libavcodec/v4l2_context.c @@ -644,7 +644,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) return ff_v4l2_buffer_buf_to_avframe(frame, avbuf); } -int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) +int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt, int timeout) { V4L2Buffer *avbuf; @@ -653,7 +653,7 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) * 1. encoded packet available * 2. an input buffer ready to be dequeued */ - avbuf = v4l2_dequeue_v4l2buf(ctx, -1); + avbuf = v4l2_dequeue_v4l2buf(ctx, timeout); if (!avbuf) { if (ctx->done) return AVERROR_EOF; diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h index 6f7460c89a9d..b385bccc82a9 100644 --- a/libavcodec/v4l2_context.h +++ b/libavcodec/v4l2_context.h @@ -148,7 +148,7 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd); * @param[inout] pkt The AVPacket to dequeue to. * @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error. */ -int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); +int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt, int timeout); /** * Dequeues a buffer from a V4L2Context to an AVFrame. diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c index 1d90de2b9d14..7eae121cf33f 100644 --- a/libavcodec/v4l2_m2m_enc.c +++ b/libavcodec/v4l2_m2m_enc.c @@ -290,6 +290,7 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) V4L2Context *const capture = &s->capture; V4L2Context *const output = &s->output; AVFrame *frame = s->frame; + int timeout = ((V4L2m2mPriv*)avctx->priv_data)->dequeue_timeout; int ret; if (s->draining) @@ -328,7 +329,9 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) } dequeue: - return ff_v4l2_context_dequeue_packet(capture, avpkt); + if (s->draining) + timeout = -1; + return ff_v4l2_context_dequeue_packet(capture, avpkt, timeout); } static av_cold int v4l2_encode_init(AVCodecContext *avctx)