From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E939E411D4 for ; Tue, 4 Jan 2022 07:51:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 890B068B219; Tue, 4 Jan 2022 09:51:47 +0200 (EET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30079.outbound.protection.outlook.com [40.107.3.79]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E92A68B217 for ; Tue, 4 Jan 2022 09:51:41 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3+X80M4teeX6UpcDkfA2oPav1BFL7aGdE86iwGpTZWIvvt/TKhvCoSdtN7w7BEbdbmsfC0BL+zVgyXvBGDWHh0E+LuYh/CJmCxibGpDYvaVQmda88n9Jp7hiP7v45zos3jrMiWfiQIpC8ZZepolSUtivY/8stisX7iPmxfFys6ovfoo84jsEC2urRmE09Mi+SU5D30bImM3Kxte8rz8cfP8aetu/G+7aUKyablUqp13uORs/MGsSYBzsvhlOy2bxgF5swOxOlFoiWhtRfJM57eIdQddN+L6Bh+dLjgRWxMUF3mkQPCESZKI2KWFXg0dkycu8iHDOo3Scjoki1TbTw== 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=DqvVIEWpg/WMB2nuiNUBj/LaZAH3PgAeWbsVONK1oYE=; b=ZmvyYFXUn5Xa2bt7qpaWsQJ8VGa7uG11Q8xUNETUiisQOyNc6fFcpSVvyEinD/TxYGCtNNL4DVJq4rtuWfd45Zd96PzE5alUr3//5zfIlYu6yyQE8sk/uXiOzMlARLgDqYysSb8QTwXMWg+Spd8R+agPSOD5irTlceRawB+RBxvd2LPeQ5h+9JIuDIyukvWgS2uBgCzN5zuVwcTbGfKPJZbdWVtlrY4rZEQk04qEyKSWZTyuq7UBIFN4Srbf6ozKI4uUqI9kDqpbYFctP6klCM6Cl/pTgll1pOYLV8BYjigcy/ebvL6HlUk8Q557LA3x8vdWvu1ksWRa9j2ynG6N0A== 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=DqvVIEWpg/WMB2nuiNUBj/LaZAH3PgAeWbsVONK1oYE=; b=ebKCOdLKoJGD1l6D7qv36I+gw9n9DgtqbTNPsIAtTtOZ7dYqGzdgvESd531Szmk38huDdpUj1PWW4nh//C7ftFExD2zpuVAYpcz7EPY72VZDgI/ZO7+X/12wIgykWv9Ai+DC6e6/4RHX2DUPAyrgyFpsYjvf+zP1rxhe1fzQGH0= Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by AM6PR04MB6584.eurprd04.prod.outlook.com (2603:10a6:20b:f5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Tue, 4 Jan 2022 07:51:39 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::b9f1:7371:3484:95b2]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::b9f1:7371:3484:95b2%4]) with mapi id 15.20.4844.016; Tue, 4 Jan 2022 07:51:39 +0000 From: Ming Qian To: Andriy Gelman , FFmpeg development discussions and patches Thread-Topic: [EXT] Re: [FFmpeg-devel] [PATCH v4 2/3] avcodec/v4l2_context: resume the decoding process after source change event received. Thread-Index: AQHXlNgCOvJtJxiGT0qM+qlJCD//uaxQxWMAgAKOqaA= Date: Tue, 4 Jan 2022 07:51:39 +0000 Message-ID: References: <20210819085533.1174-1-ming.qian@nxp.com> <20210819085533.1174-2-ming.qian@nxp.com> <20220102164106.ptu4eet7rmwla7bg@jackie> In-Reply-To: <20220102164106.ptu4eet7rmwla7bg@jackie> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: feb21346-43c4-4b50-73c8-08d9cf570a60 x-ms-traffictypediagnostic: AM6PR04MB6584:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:144; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vWwfzqWkvD4jfqX6PbuMc8cYu24bSceAD5DVseJNcLNy5P4L4kR3NXcF6ECl8JalQtJVHPkHUufnstcCiNzhNDeU31uaGdXiog7XSubBybdm3o3rCEOltEnxpO472yE5j6c9NVc+/PvOZ1BpaI/OlMPuTNbuokaGgJZ/g/J+JsCQTZi0bOVJE3fn0S3MU8h5J/m9U2uiep0TXn4fpSDBnkktPgKsAJCXfX3ocBSLIEQdi1HRDx4Jss5jKErUAJ8yx6Ybh05TnytY0qt4uRZdfnZf5rWB2xEmBzEmxoqr7MLEEy62enoRAUhzKdEPEFqBY+ANLo47tz4gRh6wq89fq2B21JgA9g6KGL308kvus/sU3n8T2wsDl05dRjwBHpwLJQPnpgv/AfH/Qu9x5OrJeRzW2p/hjhdPe78Gl9UPPxKaNqW0kGLQMdqCmvQGKic+aO+QJoV44M4q5L4gXFP+YdR08VUwOltf5GGXVKh0e7mSoDHJmAxVTkAyI7Ylxv0iW7BEBM+HzFkuEqNMqbgojo3j382TexiHUDfVZRFldm8sSuXQBCxV9Ja7XsQyJCKjWFKbitbhx9Godr/jQcBps21PACpHVqmXu7a9dvzOr4mC8zPtomp+Vx2llL30BoHZRVi9PEA38ywSgPjmr/pNoIk5ek6NXyKM7Kgup6XWKCNx5+RnzZoMeemiK93QNZIjS+ELsUWrOLEXCPQm4ThG2OMOabqVTFuk2IbN+gGddEHliHKw5cNRuH8vTeQ0qO85PkPqcmJVlpW3ylZnkBhtxTi+KUW9i+jTE8TXgYaSyLE= 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)(186003)(26005)(966005)(7696005)(71200400001)(66556008)(2906002)(66446008)(38100700002)(110136005)(86362001)(55016003)(8936002)(52536014)(5660300002)(38070700005)(6506007)(508600001)(8676002)(9686003)(122000001)(33656002)(44832011)(45080400002)(316002)(64756008)(66946007)(53546011)(76116006)(83380400001)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?/ZJ884U4mwB4lsZix5iuMliQ4WAtq2RKiJBNVNm96QBHvsyyzsoUK9J7kgDB?= =?us-ascii?Q?SbfCv+OByGyzTkLMk4gDrWWFrhLMPv5tJ+1nJCHyk19X+FaZxadADQjQoylx?= =?us-ascii?Q?60WSlTFC/xMYwBmvCqPtfkEorqlTWePUbNf33pEfIG/9xSXSWOHBwg7u4mbw?= =?us-ascii?Q?jsjqfGa88ndH81C5tHDXvKlWV2RV5lAxJiPHgpQx7uUSOtS+U0sfP7Rx0Uxo?= =?us-ascii?Q?hUT5jvzD4w6rdwrXRcjS7rK/T1KYXOM3S6mbM9urrCm1WUzPeiJH/QLnCWU8?= =?us-ascii?Q?aLI0xocVRIv9INGduGn8TZ824lwAJ6qPTZXpul5U4rvRIEmI5PP37Ww+2jz8?= =?us-ascii?Q?X90v4DEL+lF3uq+r9W+oBjP+8ARCYAUzQJeDDeaNNNXjFlMIszGwiD3PyMxz?= =?us-ascii?Q?xA4IlzO4+pqzVjks5P1l1+ObOF6Ga7nFnYzI48y8LZlxTveCU2oSg0CL5FcZ?= =?us-ascii?Q?FapUDHl9lRO5s8htruD8AVom2rk0DuapcqtWi3ySUacC3l0GwFNNocL3b70U?= =?us-ascii?Q?+osfoxeVUHUK0IOhky+3fEz09RaWLIgmIDB4VqVdPHK8RKwr9njfmsHcTc0M?= =?us-ascii?Q?1H5wi616uzJIBYi1f7mILbHvEtTgrAp+iZB8p0HJTwwG7nRilsCKC+zlXLlw?= =?us-ascii?Q?2yBcU/lX+UviCukDiDeuuRpq0QLhuMUFxtovPioSJNLsVdfDtZK+imFUD8DF?= =?us-ascii?Q?94TQUEuOZmISAP3F1kEXfBOu7gHxulCtsuGxjVM2cLRvjUmCh5TG9lnjH+IM?= =?us-ascii?Q?aRtRoR5TbiyWss6t6/PuOtkvPPxhhV5qrg5MTao5IOhvDwKbzhFx4eN5Uae2?= =?us-ascii?Q?8hqXU8Ab7D45yPaiNUK5GBhtxdj3TpOF3aIq/6d4DVKhf4TggPLLU454HHTJ?= =?us-ascii?Q?SLickZAaC0n8YHS7WBht0eMy60XprYQxmhMCjrLkmeEcF8rv550h9tFu2Z5k?= =?us-ascii?Q?zbgqFkmGlcOqlLX9w1UP12TQcKYPWuZRQHyTBeIqnvFlvsDNWb0efk9chPHT?= =?us-ascii?Q?jx1EJLWmp8ziU8BF9kpitmdu2BxeQZmWo4YPmWk7eGP5YJ3jzNgtA2uVT9k3?= =?us-ascii?Q?ApW6wq7g8RkhHgBwAdvM/vyBFDmM/yaKL24F5ZSPB3/BdqIsCSSh3I+4eo1g?= =?us-ascii?Q?p9ablMeXFGjHhMTfvFaOefnQ83E/2xfYO3sQENgyuMWflPIndzSDEcAzuiDQ?= =?us-ascii?Q?Mqki8JLMPPw9ZxUF29q3m47Utrack7tBTpuJtZjuC51bYXzeF4uPDWf8GyQL?= =?us-ascii?Q?JzbvZmP87WCN8y9JXqEJpsVywfJoWUtcR7zzkbb+WK8Qp88FAHkv+y0RWF3j?= =?us-ascii?Q?K++Vj/a3xtFURPcEFsVKWyVqvXen6Y52HnfOZAmTZqPup7+hNtomrxw+7NQS?= =?us-ascii?Q?dPGF9RCtmbUVqrUSlg57E6laRSGrMzxOuZVNoM8Ky/J+wPOioGrNV6DeCj23?= =?us-ascii?Q?RUwVaHJ4yuRo/DwIvRrhbs33iE0iZGH1WDenmVSzXEaGOb7/1zfKsJkDaziT?= =?us-ascii?Q?RTFFH76mkwOHj8eiLzZJohHwhQNXOMjlRGvcFYbgW1tRmJc6MuTIrmRtJEQ5?= =?us-ascii?Q?hipL32fm9zp4buzdxhZq86nIlO2cA7vMCy+T27CZk+coERKGBhztshT7EVCm?= =?us-ascii?Q?bQ=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: feb21346-43c4-4b50-73c8-08d9cf570a60 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2022 07:51:39.2521 (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: 2DvJZ66zZ61Z0Nckhe1Opv5ViLNhj4u+Rjckq3kbp1z7nudR0BYpGOMUWHiVkChoQd3a/w2M+Oiq1KeGQJb2xw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6584 Subject: Re: [FFmpeg-devel] [EXT] Re: [PATCH v4 2/3] 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > -----Original Message----- > From: Andriy Gelman [mailto:andriy.gelman@gmail.com] > Sent: Monday, January 3, 2022 12:41 AM > To: FFmpeg development discussions and patches > Cc: Ming Qian > Subject: [EXT] Re: [FFmpeg-devel] [PATCH v4 2/3] avcodec/v4l2_context: > resume the decoding process after source change event received. > > Caution: EXT Email > > On Thu, 19. Aug 16:55, Ming Qian wrote: > > 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. > > Please also add that this fixes decoding of > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstreams > .videolan.org%2Fffmpeg%2Fincoming%2F720p60.mp4&data=04%7C01% > 7Cming.qian%40nxp.com%7Cea94a9c4cc0643b0a41f08d9ce0eadc5%7C686e > a1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C637767384703207931%7CU > nknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6 > Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=X4rKQX19MQg1gO3ILiBCQ > qSLIvqovZLA95KKiyoVNzI%3D&reserved=0 on RPi4. > Hi Andriy, What's wrong with this stream? Everything is normal on my side when I play it using ffplay. > > > > Signed-off-by: Ming Qian > > --- > > libavcodec/v4l2_context.c | 52 > > ++++++++++++++++++++++++--------------- > > 1 file changed, 32 insertions(+), 20 deletions(-) > > > > diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c > > index dda5157698c3..b08f0015c2e5 100644 > > --- a/libavcodec/v4l2_context.c > > +++ b/libavcodec/v4l2_context.c > > @@ -153,6 +153,21 @@ static inline void > v4l2_save_to_context(V4L2Context* ctx, struct v4l2_format_upd > > } > > } > > > > +static int v4l2_start_decode(V4L2Context *ctx) { > > + struct v4l2_decoder_cmd cmd = { > > + .cmd = V4L2_DEC_CMD_START, > > + .flags = 0, > > + }; > > + int ret; > > + > > + ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_DECODER_CMD, &cmd); > > + if (ret) > > + return AVERROR(errno); > > + > > + return 0; > > +} > > + > > /** > > * handle resolution change event and end of stream event > > * returns 1 if reinit was successful, negative if it failed @@ > > -163,7 +178,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 +200,29 @@ 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); > > > + } else { > > + v4l2_start_decode(ctx); > > + return 0; > > } > > You can minimize the diff just by adding this part and the definition for > v4l2_start_decode(). Then have a separate commit that cleans up and removes > the reinit variable. > OK, I'll split it into two parts. > > > > - 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; > > } > > > > @@ -551,6 +560,9 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, > uint32_t cmd) > > int type = ctx->type; > > int ret; > > > > > + if (ctx->streamon == (cmd == VIDIOC_STREAMON)) > > + return 0; > > + > > This change looks unrelated. Yes it is not directly related, it's just an enhancement that avoid driver can't handle the repeated streamon or streamoff ioctl. Maybe I can remove it from this patch, and make a single patch. > > > ret = ioctl(ctx_to_m2mctx(ctx)->fd, cmd, &type); > > if (ret < 0) > > return AVERROR(errno); > > Thanks, > -- > Andriy _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".