From patchwork Tue Jul 20 03:01:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 28980 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp4956008ios; Mon, 19 Jul 2021 20:02:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzS1a6HgK7ImCRENJbYAaU2qSE8Z2Js6W7DJ7JRZx+y48YPsKDnsyhvQa5O01PaAnnY+4Ys X-Received: by 2002:a17:906:dc6:: with SMTP id p6mr21093333eji.539.1626750157204; Mon, 19 Jul 2021 20:02:37 -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 dy16si22186634edb.359.2021.07.19.20.02.36; Mon, 19 Jul 2021 20:02:37 -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="c/aAlt+k"; 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 C101168A946; Tue, 20 Jul 2021 06:02:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (unknown [40.107.22.71]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4692068A74F for ; Tue, 20 Jul 2021 06:02:26 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e2ng6YUlhoXK4nyRqxRl5GQK/ngNrHwf2oUC/GPBUdBoWBw6Ou/eQY88RHckCFh6ggtzeUJHjzp/EQSigWbeC8WCT5TE2te8Jnv4AgFiEYkQHWLFf99SVyaQgrgPmHGw1NGi8x9WQFxdgOKoAEr/92q9tc1SKI1Y/fP8cue6tGYQRGg6rg3auNJLune0eslUqvSZukNilXv5OfNmkA8YWMxPaIFG+UIe9bI42JBRyS6D3Uq9Z4VofEr4HRkgWWa+vZ4fk9lp0LaQ4I3YIHFQWiv0U50rtHPK86jGRnXAmXRyRMS/96Wk3AHTnu5+rP4eb+2YqcetOd2kxNYVXYoHvA== 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=nB1dbceK0gwm9f+9sIqxPNzLCFkR+7NQ3cNoIfiX+js=; b=f+W67KttiWF82G9JtLh1/0Ljqle62EjnitUjpLvd5Tl7IoyfLut9w4x/1ou1K+w97s8kX15tCIgz3rFNyZV3XS2hbtmEKW5+bNA3ER15igCXN7DWDdCJzh8vmqWOE9eIWHSttfgrnb29cLPQD3awTqb6DNhkYYmjo53YaTIcIivFXnkA/qkjoNNQ8U6IElYckz1PEr40vCJ0tStQKIy5glSpoF19SCT49irI+c+uNetz1kdDG4GQ4M2roda1+mNwooNwcNlq0YNUNhHK62MrUCJQV9pcKwa6hjxA2MZ9IRbogoHCP+ScmOhx7r+ek51pipLGi89WYnt32kZ4QXSEcw== 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=nB1dbceK0gwm9f+9sIqxPNzLCFkR+7NQ3cNoIfiX+js=; b=c/aAlt+kRa43ZSpKMHWnAoEscVA8Pzp1BAOiUm5XLic2g2PMtsL6m3gn877c4FwZpPJmkOaIp/vBImV0iwfrs2y8sdWdBCaBpvWhT/0q4/U5bhAqvScfVGcn20DGPpNieA4dgvh+cNGD5DOXF5Qs882RdStJWsn6G5noKMtYQfk= Authentication-Results: ffmpeg.org; dkim=none (message not signed) header.d=none;ffmpeg.org; dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by AM6PR0402MB3704.eurprd04.prod.outlook.com (2603:10a6:209:1f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.29; Tue, 20 Jul 2021 03:02:14 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::81e3:1e06:83ee:5db8]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::81e3:1e06:83ee:5db8%3]) with mapi id 15.20.4331.034; Tue, 20 Jul 2021 03:02:13 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Jul 2021 11:01:47 +0800 Message-Id: <20210720030147.13024-1-ming.qian@nxp.com> X-Mailer: git-send-email 2.32.0 X-ClientProxiedBy: SG2PR06CA0194.apcprd06.prod.outlook.com (2603:1096:4:1::26) To AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from lsv11149.swis.cn-sha01.nxp.com (119.31.174.70) by SG2PR06CA0194.apcprd06.prod.outlook.com (2603:1096:4:1::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21 via Frontend Transport; Tue, 20 Jul 2021 03:02:12 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ec3edd2a-579f-463e-4e08-08d94b2ac628 X-MS-TrafficTypeDiagnostic: AM6PR0402MB3704: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1186; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0eReDMjrK9WT8tzLT4F5cLmar5r2mWADAP1/80Vw2fL8Z2twtZCSGetvAwYZFimEGdWgFAbKXYTBuiiN8f60Jn4q9ixxuqRKpWBZIYXpHmSM72CX6+SxeP2hpkr+GjDjV8O2hlrFZN/AtX8ywEmDrkfO//i8AeClkxE/NmeI6Kry9ygiOQ5kmz2LAJkdnHGcYhcZnef8/w0sFDoGelFNwf724a0hECTwaiWl7oNCDhbCxnl8+HAeh1bv11Gx7QXQy9CzNXSNIdR6utFYlKEMbApHoHc9YA+D6Wz693ggid7yNlrstZr+jkWmdN2T6jjxb6jA7lSM1Cuj7CZ8EZde1v+VgQ2VAD70lJQPZn+T4IbKF3pcp9eV6OEMQDM9Vce8GvchHPjyWsONpoIVwz31gbkzWJzsIO3BavU47WAot16ElMb9+zs1ETRfUT9qcVVyOElzWxkjaXFuNvPernsktkYZv+ZXsorcHy8lZukUaZN05oZc0rQ2WE/AI5/OFPmPIT7kLksPXO77KbUG1e3AxF+q8fsF2MBCpIe5owZhSdGq5OH3FQ43W+0mXCKOIB54pOQyithdkBvg9G+D93UylPNq+jx+PFY0dvRUSPcnbl7EYMaXe1shuC/gki2yF8XDFBepwG0MCLoDot6xOA/wnecSZxncQ2+mmkns0HzcgQGLSKGYGFst+oUtWWO0j2PlTF7XPFOtQUQFnfS9yLTgAw== 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:(4636009)(366004)(136003)(39860400002)(346002)(376002)(396003)(316002)(8936002)(186003)(66476007)(5660300002)(66556008)(1076003)(66946007)(6486002)(2616005)(83380400001)(956004)(44832011)(478600001)(36756003)(26005)(52116002)(2906002)(86362001)(6666004)(4326008)(6916009)(7696005)(38100700002)(38350700002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 47zDH0qKYUl+KVyA/o1aTaiQ167vdp3tQ5ixLCz3z5qbxbNr+osaDenotagYZrYAZttZSPzQYlb/rYryBDVKdT0mEW0kw8vkHvZyVSx5uqKdIOm9YU3Ahc3Au7kV2eKjMaUHnewMFuQdjdtOs1w3R9TBG9ZMpYk9XJEni8OmMA7pgwJUb+oMBLh7AWG/dG4vVEnoRO8Q2hY5LIWY6IB4s4VhS0/aROinc8sq+D1CYxCXemULibQoxAryq3djhN3ypmOXjtNKvhj4w2h5VtzBCeln77YDSSN4EuzGEDXwOE72F+Mac0uMwLchPBwjQvHdu4dW58zU0zUgE2a8oeUFjZvu+pxTpwfo0D8LKDIDb3MVdhu7rrNfgC4bbHIJ1SnKyDPR7r6PO08fg4ZRKsJ1J1RNRVNmlw9mH4EJgOBYyCj3X73slNaOCSOgEwH3ISkXhktwpkdWTg85W2yqYVt+HIoDihAa9I9CV1b7UWc09xnUuXB8S5f0/xDQoJXQVItDVq8ZsylX0BeSCKPpr5Vv5HuDkmsddBDN+R2QFPnDsgIonbNepLqoNC88HPRm6tZc0ycKA/qHPWaV3SQCHjKRkVNzNGhmzHvPQ8QZ6DaK8YWg3ZlbAuyWbXHbKqSpC1uQyANSBE+OwWusCgsdmgO4Er9yqJWS5EqPQgqp66ovbJeiaJb/SnmO3QDdPYV4JXifeQ06wndXtuUkQ/kTvH7eGs5GQBjaGYHLXon31Ec21VJ58c9ytapNnqqGrLrFQsawpZrEeit1xbZrrWCPn2JMzWI69FyXiWcd8+ackY6Cy6THGni6uadbnfulopIDd7tWNEIF2OiRA/9cvmdnENj0nL2OrMsL/TsuVkVJvbcQMQhO7sWEm4jMs36jwgYR13aMti56UEPGjjXwZHhxvNbJ9Y3rszJoH1SHk24FkOoOLkAwlC6SPg4UwrEjQTe+D74/dJb4KdLSUwTCE0XWatujEvTA20SZ9ZsYwizsbyZtl9yQETrNakIYgvl+7h37x9Vc9bEPIFCg1vK6NSB/aAo9QQS6V8GAYztSHSnphm6wMoLAqtFqhsPfg6hzFYj3ACKpc7huzR53cVXNqcO/G3+ajqzuG8hRBNV6XkIybF9qltQo17+Ko2R5lyEgcsFCdcpVNHt0MABwvRPZM6ZCPIMlNF0aZ8eQBnhbWKj/cuvLT0Z6dnsfeHMdqAyFizAf0Qz/cYKFuaIaeGgFBrIlTXTfdWWmkrzhtK9LFxy5UpfMFiTWs1FZc0xhRr6JJ81GVnAtUeXXg91383550RNyjANAuX8AqoFJZhL3aadACeqvvR4KL21dWNTC5uleskN8zYe+ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec3edd2a-579f-463e-4e08-08d94b2ac628 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2021 03:02:13.7194 (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: Z68Zubca5z8THpE7HGwUsutmY0DnUiFu9N6K0hZZjp4e0JAy2ciyX0zlyMO+MFItYNcjMwo4+dsGHDPj9xhDLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3704 Subject: [FFmpeg-devel] [PATCH v1] avcodec/v4l2_context: resume the decoding process after source change event received. 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 Cc: ming.qian@nxp.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jw4R4rvLlSAK client need to resume the decoding process after it dequeues the source change event. no matter what's the return value of v4l2_resolution_changed(). if the client doesn't resume the decoding process, the decoder may keep waiting in documentation of v4l2 stateful decoder, we can see the following description: The client must continue the sequence as described below to continue the decoding process. 1. Dequeue the source change event. Important A source change triggers an implicit decoder drain, similar to the explicit Drain sequence. The decoder is stopped after it completes. The decoding process must be resumed with either a pair of calls to VIDIOC_STREAMOFF() and VIDIOC_STREAMON() on the CAPTURE queue, or a call to VIDIOC_DECODER_CMD() with the V4L2_DEC_CMD_START command. 2. Continue with the Capture Setup sequence. Signed-off-by: Ming Qian --- libavcodec/v4l2_context.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c index dda5157698c3..df41e982fc56 100644 --- a/libavcodec/v4l2_context.c +++ b/libavcodec/v4l2_context.c @@ -163,7 +163,7 @@ static int v4l2_handle_event(V4L2Context *ctx) V4L2m2mContext *s = ctx_to_m2mctx(ctx); struct v4l2_format cap_fmt = s->capture.format; struct v4l2_event evt = { 0 }; - int reinit, ret; + int ret; ret = ioctl(s->fd, VIDIOC_DQEVENT, &evt); if (ret < 0) { @@ -185,35 +185,26 @@ static int v4l2_handle_event(V4L2Context *ctx) return 0; } - reinit = v4l2_resolution_changed(&s->capture, &cap_fmt); - if (reinit) { + if (v4l2_resolution_changed(&s->capture, &cap_fmt)) { s->capture.height = v4l2_get_height(&cap_fmt); s->capture.width = v4l2_get_width(&cap_fmt); s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); } - if (reinit) - s->reinit = 1; + s->reinit = 1; - if (reinit) { - if (s->avctx) - ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); - if (ret < 0) - av_log(logger(ctx), AV_LOG_WARNING, "update avcodec height and width\n"); + if (s->avctx) + ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); + if (ret < 0) + av_log(logger(ctx), AV_LOG_WARNING, "update avcodec height and width\n"); - ret = ff_v4l2_m2m_codec_reinit(s); - if (ret) { - av_log(logger(ctx), AV_LOG_ERROR, "v4l2_m2m_codec_reinit\n"); - return AVERROR(EINVAL); - } - goto reinit_run; + ret = ff_v4l2_m2m_codec_reinit(s); + if (ret) { + av_log(logger(ctx), AV_LOG_ERROR, "v4l2_m2m_codec_reinit\n"); + return AVERROR(EINVAL); } - /* dummy event received */ - return 0; - /* reinit executed */ -reinit_run: return 1; }