From patchwork Thu Jul 22 03:01:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 29004 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp163474ios; Wed, 21 Jul 2021 20:05:55 -0700 (PDT) X-Received: by 2002:a17:906:2dc9:: with SMTP id h9mr42147497eji.345.1626922914909; Wed, 21 Jul 2021 20:01:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPGNMwIVXhjbyCjI1GaZLLUQ8ReFaIBv+BSPWnpnTpadepDJOfcCAybLe6Pob2gIwcrRv1 X-Received: by 2002:a17:906:2dc9:: with SMTP id h9mr42147228eji.345.1626922910854; Wed, 21 Jul 2021 20:01:50 -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 d18si22702145ejc.683.2021.07.21.20.01.50; Wed, 21 Jul 2021 20:01:50 -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=YCxsyRsf; 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 52A28689CDF; Thu, 22 Jul 2021 06:01:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50040.outbound.protection.outlook.com [40.107.5.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E455689CDF for ; Thu, 22 Jul 2021 06:01:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K1OFRa+ATnuO6Qk+pKZcoBxZKAC+7SNpHT95LBTAQOrfcx8yuKg53V2O3nNEyAsFbAVKAjQ6zUfw3pq8ITcR/WtfkxzBQhJC1QncOL94XOKaLs6CV2CSF91Xdep2Z17ahwLDhxP7eMO81EYj0N0PE5/cBlhWI4OW7SYPcYGkCWTNDq9XGpsYswCXrHwYsFBHGk3Kuj9Mt4eta3BK+UkkOZD0F9dNp5xmeDKPHBlnwP/TZGDEQ7/iYSk0BteQEbBdED0aSNMShUVVa7x1fjSOZVSMbTuIg4nOdvlkmot9I8R2E4XPDHcJgld5zLkNq+soFr1cmMXwsn5ZzOo9C+35LA== 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=+uFDMLMQA3ZNF4SbU2xK+FMj1DOBDd6Jg58Room9W8s=; b=HH89x4W2oaT+I3p74VFGTzS4AzPBlmv81co26VoaSy0PN+8UvPQ9jTlTgBkqkSAFyHgE6Q6Ll/tYD3u3LZCILA5GtXQgCHPTciLhF/4CmmHyB/VFN+/J+sFsmBhYLmusbysz8F3k1QflEHbmh+RLSgc9qnP3sauVMjihS2syRiibltff7bfTDnpklt5d13zvzzN5iVixqGbQLQ2N0LFgxto4vlPruK3vVTLBlMDQO0CrRox5MwjQlQjKIce2m82z6z+efUOrNCd3mSx/UAu6dcmQ9yDKben7Ojg7GnZGSjfHUEV6VKmYm50MIZBDqhk1B2mjmqqXXm0zb7QgLMq9eg== 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=+uFDMLMQA3ZNF4SbU2xK+FMj1DOBDd6Jg58Room9W8s=; b=YCxsyRsfz5+hwAFgbjPEZaMq131ioCOXB8djZF4ZMIwzdL5UrRt0YMggqxNaeSEaISCH2ZRqotzlZ+733qUhyS8AggN/MsSv6XExiinEjn5pjaAkvQZLcqqSXD/RQvuywtIwAvwN/bgVas1KPeWDGKKGqCabGkKtRcYolV5YAUU= 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 AM6PR04MB5223.eurprd04.prod.outlook.com (2603:10a6:20b:3::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.24; Thu, 22 Jul 2021 03:01:36 +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; Thu, 22 Jul 2021 03:01:36 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Jul 2021 11:01:19 +0800 Message-Id: <20210722030120.12026-1-ming.qian@nxp.com> X-Mailer: git-send-email 2.32.0 X-ClientProxiedBy: SGXP274CA0012.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::24) 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 SGXP274CA0012.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25 via Frontend Transport; Thu, 22 Jul 2021 03:01:35 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 60c2fa32-76c1-4ea3-14f1-08d94cbd04b4 X-MS-TrafficTypeDiagnostic: AM6PR04MB5223: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gaaztauwE5h2y+2DMTJ+J/SQaNLs1uwB3+z5Js9T2ce6x2jpmSB41aYC95+KvLCcMQW6BiPjR48VCtsMutCMOJilsJSC7F+mMMPyvgZsywh8EJcMpGbNfOFyo0aS3UhKnPXYZYcdsvpOdO5vsPCK5VCgMQMJQ1Z+jRLauk6AfjRGU6/NAYK+jmYVBr2AsDaQa/IR8PFSZtEEaEg1esPTgBWF/8depUFfcctjuY5qJqt0VPs8Pv9ARNnuhDsmpynqJYqpv85rNU7foG+1qy4cKBJV3+yQL/jUY/yzND/kvjnvvtqBdwt8UhHyTzJv+SpWDZX8jrGhdlaA/9sLbC1v8zKO+6h6I2GVWQN5ParSAejUOwx59F3AGs17nt17h8iT+IiTBL1AYbty4GBNj9wwIYFO7RyzGSIvEiSRzHVCyxmN1YDUdq6HyGkhM/CnH4k3VMFMEf1zMjvra8gP/rJ8PtzrlFYv7DlQbB5HNoCc0duciFEBt66sCj9LsVJtghuK6HB7dlu5BdouFf1KTcdo3CzygZm1kqrzrzdkdsWuz9NT+T8/24L5ET5hqu9tpoiksO92x0b5Rr71YTpVykUH7+gepSEd0F+5eYmOOCH9VpLXZoayp0Z/J2Grw+K+rXFtZ+e1e6+H9QGQiOsBnXkmhotghG5HE8V8aezTb8Fo+ulgB1BL1SSoDqQ/aqOuPj3r9AZBSmZmtJqsgHBJiOGKaw== 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)(39860400002)(136003)(366004)(346002)(376002)(396003)(66946007)(36756003)(38350700002)(2616005)(38100700002)(52116002)(7696005)(6486002)(956004)(86362001)(66556008)(66476007)(478600001)(26005)(8676002)(6916009)(44832011)(316002)(6666004)(186003)(2906002)(8936002)(83380400001)(1076003)(5660300002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y8UOT80dL2unwSWWFBD4a0TBmOF3UelhZos0jJDBYH6tg7Qd4yHmOlVqXa2Ic7152zOD+7tAsa80y3R8tBUyFl7eReNTC/w2J8ce/47xswYrFJhM+dcQxv6hUuP2P8VxNkg6bcixi4oPdzZ7JFbor3WpoRqTxn8TcFqR7UOGmEjXPTRj3vL1N5x/MgfOAlTIfq4cEhYR9pV49KwxueE7BGjlPq07zhwAWhryWrFlnXJBd4GIOVXCYAkZpvknn7omW8kg6DGqdq2u37icXUDW1zdXaAYNEiFwTHc78VFQXUNjc6PDi0kjBUJSk16eGL8QRo1aPFynZQ5o5cpzcUyDG9mofSEW9IXqujIch4/dNj9QqjxMqHpE3gSpWY3Ba5dgnlb5F+xsns+Oh9pnMPXtbylQI9xAKMVLY0230bSbJnhgn89oWYx6CXzMNfqSw49rAtWBQZyjtOPG3ZZFGp3FBazyvuAd6MhFjwpxq2bStS/MG48Y3jy39Uyfua14RgxV99aqOOZ8a82hYhJMmVm1G2BDVyIXQsBISHQl7Nj0ONYoKxMctE8dk6e7UwSvvuMYOUvlLeRglFs2+ypHieILkOb6kXsLz8XldAyRhITpIBDKD8xVUTN86j2l9W7wlTrJBilkR+K3W7c40BF1MXWgGUUTqrMwW4eixvLq4A81SZHYd9DeT2lz+j+fgUgfcsmdXdLciAA9U/R5b08DzXZGN/WIVqZGyiXp2BWPASSFs0YfZR+d8ACJZc5NORsXqs0lg/tnocDpGhuZScDNf70xDqeI8ptJ046D4Ic6tkgMLx/TlR3T2gdf5T9IP8tVtt5pWTzy2UDotruQZlPVEFodnQ5wBlk5bUsvCcBCJlIko36C3Po1AOQ0aufZChSN1VMn2I9smi4SF0mKyg74yKrGM4SZK6NwtxNV/TNC3bxWkro6WFaZpJGN/LenRCu3WaLabfRnM3x4vEOEn1KaktfFUTOturXkAqfCbveVI/CnQvuGQqTAbS/GEYYjutPGhZROwAeACT/FIgQ+ntpf5cScDvFYxpWc5msfRTb632VRis99G0aVJcp19OcocymeAQK3mnrTxJNNFzJ5s6yA/PgzD/SOoo9U5T3+wDYpkBfN6eOSXhlWwgfxzgiAKbA6eibwe94ZhmwdigTxhbWMEoi8EVu/XOtIsU0mmaPMLM0xKnIxMKSFmn+WM4yaAkdQZqQObmYE6t7ogsTDoZXQhJYscuFyVVrTuesJgMSOIb13c/24qVIrl/t7U8glhUzEPHv8poYiUXtusmLoNp90IFbGyAxnyDs+fUTkM+arkUBtX/i5j7ed0xkBJN6o6ETJUBWS X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60c2fa32-76c1-4ea3-14f1-08d94cbd04b4 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2021 03:01:36.4204 (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: 8AWFVDMnjbL/K6vMI7EKMl10xK7+RaW00jB52vJNEtt5pP70oRpDBusfvOZK5saQNX/4Rrl5PBxYCU3FlK6O5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5223 Subject: [FFmpeg-devel] [PATCH v2 1/2] avcodec/v4l2_context: don't reinit output queue when dynamic resolution change 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: QRxnyZgxbmEi in the v4l2 stateful video document, we can see the following description: During the resolution change sequence, the OUTPUT queue must remain streaming. Calling VIDIOC_STREAMOFF() on the OUTPUT queue would abort the sequence and initiate a seek. In principle, the OUTPUT queue operates separately from the CAPTURE queue and this remains true for the duration of the entire resolution change sequence as well. so don't reinit the output queue when handling the resolution change event Signed-off-by: Ming Qian --- libavcodec/v4l2_context.c | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c index ff1ea8e57b08..dda5157698c3 100644 --- a/libavcodec/v4l2_context.c +++ b/libavcodec/v4l2_context.c @@ -162,9 +162,8 @@ static int v4l2_handle_event(V4L2Context *ctx) { V4L2m2mContext *s = ctx_to_m2mctx(ctx); struct v4l2_format cap_fmt = s->capture.format; - struct v4l2_format out_fmt = s->output.format; struct v4l2_event evt = { 0 }; - int full_reinit, reinit, ret; + int reinit, ret; ret = ioctl(s->fd, VIDIOC_DQEVENT, &evt); if (ret < 0) { @@ -180,25 +179,12 @@ static int v4l2_handle_event(V4L2Context *ctx) if (evt.type != V4L2_EVENT_SOURCE_CHANGE) return 0; - ret = ioctl(s->fd, VIDIOC_G_FMT, &out_fmt); - if (ret) { - av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_G_FMT\n", s->output.name); - return 0; - } - ret = ioctl(s->fd, VIDIOC_G_FMT, &cap_fmt); if (ret) { av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_G_FMT\n", s->capture.name); return 0; } - full_reinit = v4l2_resolution_changed(&s->output, &out_fmt); - if (full_reinit) { - s->output.height = v4l2_get_height(&out_fmt); - s->output.width = v4l2_get_width(&out_fmt); - s->output.sample_aspect_ratio = v4l2_get_sar(&s->output); - } - reinit = v4l2_resolution_changed(&s->capture, &cap_fmt); if (reinit) { s->capture.height = v4l2_get_height(&cap_fmt); @@ -206,18 +192,9 @@ static int v4l2_handle_event(V4L2Context *ctx) s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); } - if (full_reinit || reinit) + if (reinit) s->reinit = 1; - if (full_reinit) { - ret = ff_v4l2_m2m_codec_full_reinit(s); - if (ret) { - av_log(logger(ctx), AV_LOG_ERROR, "v4l2_m2m_codec_full_reinit\n"); - return AVERROR(EINVAL); - } - goto reinit_run; - } - if (reinit) { if (s->avctx) ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); From patchwork Thu Jul 22 03:01:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 29003 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp161029ios; Wed, 21 Jul 2021 20:02:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzTRx7RaTC+b5thHWagccj6v1da9phBgOBRRa7/K1eecldocNyU/YHN6vAQMrJLZBUnddmk X-Received: by 2002:aa7:c4c4:: with SMTP id p4mr52967733edr.367.1626922919844; Wed, 21 Jul 2021 20:01:59 -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 8si27343167ejl.292.2021.07.21.20.01.59; Wed, 21 Jul 2021 20:01:59 -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=R7fvQ96P; 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 4701068A516; Thu, 22 Jul 2021 06:01:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70040.outbound.protection.outlook.com [40.107.7.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2159768A0B7 for ; Thu, 22 Jul 2021 06:01:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UBFRaljLU0A4rZmKpM/P75yd4ApmG/pyNTEba4bDRz20EOLgKKNb/D+R38kDySDX8fGy1zT1q8p9/OVlTQLdXoapxzUqKihbmzXROm1jYbxWdLEgTUcFMwR46i/fnjEaoDOC68Th5I4q67hNHpO9GPkHQ/lO3AvM+Fa3OLHiJNkb/lcP+Cggc/qbl+SXi7DL5JztAWRNiqMU/IyjYzhTe8Wg6VUdp1UAfpnPkOJ723EmwjgwHUyO3BrKpNbayTk2ggV3nZ7SZr4NnwdzQnf4Y/iLzWSq6AvNjMp1oSY8DQHQl/4AC38AlpBdRzi/tqmjuUdufsKBq/mVQyirV5nnEg== 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=MPzN0mJ46yWe8K42D/wTS6xK/+66WaFT+HW9rOP0nsCEJX6VMFI3slryDV95wtr/opM+SMi+6LL61NO+e4BvUnY9+Okz7+X2i18hGm5PBsOsKc05Xjx/PCKxNsueGp/xXMohj+Ezh79LV6YirQg7QfKc3FpGeCRnIJ3b28GFfWkKStwycYZNMbV7ngT5AQqniDrhl5j6yPIqyOa7mJgg/mGlgCzFY5+pWEPtjLFG7HsL3Fl1zC5UDv74TlfWk56mzY4D8sIqLwUGXCmvvMlVd3bW82l+egY7LjQerdhWICb8yLiK3inhEeVNyAuru9ns9bY2YUMRrdwXtuWkhF9H7A== 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=R7fvQ96PHVykzYrtgkF6Eys5oBUH3eH3uChClIaAM/Ppoq3KZzyKAJUtAUDHdIPMS1yq6bKqDEgS8qZI3kxZ/9+XrzRTcnFeLzs7tdroL1rXKKpchWQiIcb+OFNPpXvg/UuaOporKQ5loDzrC3pLdbTH5Ss1TAa/HWBZKUKJxWY= 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 AM6PR04MB5560.eurprd04.prod.outlook.com (2603:10a6:20b:9f::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.24; Thu, 22 Jul 2021 03:01:37 +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; Thu, 22 Jul 2021 03:01:37 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Jul 2021 11:01:20 +0800 Message-Id: <20210722030120.12026-2-ming.qian@nxp.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210722030120.12026-1-ming.qian@nxp.com> References: <20210722030120.12026-1-ming.qian@nxp.com> X-ClientProxiedBy: SGXP274CA0012.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::24) 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 SGXP274CA0012.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25 via Frontend Transport; Thu, 22 Jul 2021 03:01:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 817e0f10-df8a-448b-4360-08d94cbd058b X-MS-TrafficTypeDiagnostic: AM6PR04MB5560: 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: SktNEOFR3iNIX/FxYwo/oMAViRcQAtRAMDFY2AG3xdSiEJjuA7l2es0nH5vu1qMdpVB8A6wyrzlP3YF2H+9WAZWxPRNNoYg9PSavR3HqmEuMslWCR20dhrlWtL0lmPJTRrOQkHhvwaIdEYKQtvHRPePzx3jv4xnrxSrHsZW2cnCfB2xltSUP9kOz8VCIj+vi/7maNgGv5Gg/G2VASCvrknPcQv3xJMQ5TuB7ggdi+KUhnltgGyHItRbKtNM8IG4ffrLofvxCwnQZnFcJ2L+XD4Lu6LnESf0wMDACmW9/C3TfswNGcifZmm9Sjw0jMxWIsL+tkKiDiLnhJak/S8PAHwcvmBT5O10m/UN9srdOAtsVgBycjTW/gQEIV0P8gGxPojYUHG0nbvZg8YM9v0rkQ3EgmDjsPRKKcih8eUuvQBdIuyCshw/SYD/jjoEPGUnA74LOdIj06lGaoLRYSAIi+ia7K+k9a4LNgim2UmKWmnGB9qG1I9kvMs3ZOfiiVtbceVgKEdY1RrNE0WnWcd8fePzzeSSFyqWCskpgh8LU3dl1JsX/JQJe0PlxHabJTwur4IpW1Sq1fkLdKldHWvlDGy0sptbHBGYSuC2116IlKl2Ncwzh9KFbExGg9OU/U8Q9Ab1xP0Pymhd7U/tTQojY6X+AeHGcP7yTx6+IjzxDXCUwlbBdnKAVOoO4Z9K3O9geeCnSQ7+o0kiF4tUjBtK3Vw== 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)(39860400002)(396003)(136003)(346002)(376002)(66556008)(86362001)(6486002)(66476007)(956004)(83380400001)(478600001)(26005)(186003)(1076003)(7696005)(5660300002)(8676002)(38350700002)(52116002)(36756003)(6666004)(38100700002)(316002)(8936002)(44832011)(6916009)(66946007)(2906002)(2616005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aAvdUdq5jniYwqlXeKhTsDCS1eCZ67KLxB6e1Wz2t1+Zzd46LTG/6GIYFYPfhTK1vmyhxyuzXEUfOIUJ54kXqp2cxe4/7gLKgnFde1DBpESzOtUsYpy8Wa3RqG0dGnSWCCwvGzQGXvxgFZc2hyEnx+rW6pnX8l5NXpRkZxwhbzHUaXm8iPB3esrooqwMdyGqd+gko2zgMNWB3FbbuByANyI0UNkZR083HzYxYiVetNd/OmK7QN12CVTPxEfm6zSH+W7noBEB0iY1OJGgzlgsri3dUPjcrh1AbAlY9RwtGu++iKg3l6bDyD6YP1FL+vxSFhTpybq4jwg/na2lk3mrVQ2KtjdazFLpPUXprZJVll7+XM7XDFexO4sMlf2hviCg8VarscDKld0UcuW7azOCicuj0oaSVJwGOTkPJdgJRP0QOkQyeMsrQvXdrZy1EG9MMIobL/H1Itc6SAYZJJ/mTK1auKcD36GrcPBIMvf6oZVfJP3y9Sc2mehsHpT2kpd0zR4w5GGCZHB7YDQsgWzXnYDius5wBMJIuHqGtYNbL+5EEedXxylIFltEudjwtWTyV5yUjtKqeaL3Su4WcXrd2GTTZYUEmgYXrkdv9Iqk1lQ6PChK3llfwryr/mUq/n6w3bumVxGim3Z4xDQ03AFpbNYOxi4pzrEpNY7Nk1loO1XBZLBLpSdF4FAzCANcmzvVNcOeRt+SxjYraUxBYS1L4Jj1SLhwgiTjE2rjZ0YOXou+DyV5+acDL0HT7Xs7I/TpoxT4LSFes24hHXv2UNgSfU802tg7rz5tgcMehHFVq4s3/XmpgjhW7ma41x+AjSkMvSXE3Q4xN/Uzcgb4foUuZGbdv6miRdrDDaaLIpRor3btActh6OoQF34po8NU1+A3dHZz3pkp+ddE2aDx+mMuswcDnevNfNO+CfpAe8Fa3kM3pl95VfsOKoQaigIPdI/WIsAJ015sKvP2QPYohJa1Q//kybtPjpev7X8uu1zK++3qtYpa/U8VcxGQkIwxt9mk0qNSEkssQa6LloFz57ttNrbAfw1K5WgBHoayLhkMknUb2bNZ1UNnTa4pPT1k2X2iG+QR0Z4g1bGj5WcU3EYrqijwGH7gLj6G3N7DXxxkozPhudJAA7zR4uOtX3RcDW4DBET2Ukj7rnK3fOVRFqqyXijCx2V1njXSgW+WGGzcQzr2ben1OqKlHZvrTwgXhk7hLJ+o/w7V32PNCAbF+mrw9ontZFyuseZYsSqXFGX+64dRjVxNbnOP0JACxc33svuzwXw0WGhXCpMHHKNypoeKg8zuxhM+bCM/PvUb/eoJnxqoqnCWpKkyyh099C7wrasL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 817e0f10-df8a-448b-4360-08d94cbd058b X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2021 03:01:37.7367 (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: 3FRCdx+ufAeSsQshDzr0xUhvD+nuJMUw6tewYEBCK7YgUTusMTcRI3yM9XCQVdsBKkpl2A0WEfchU0or1GdYFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5560 Subject: [FFmpeg-devel] [PATCH v2 2/2] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QPJnw0L/93ub 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; }