Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp366207pxk; Wed, 2 Sep 2020 03:43:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycMcF5SSdhxwM/+H30vDWPIlvqycYvHdRPDLUfKFMt5Juz2nLt+027ruuJL+g7y1eLX7x9 X-Received: by 2002:a50:cf46:: with SMTP id d6mr5995198edk.339.1599043435573; Wed, 02 Sep 2020 03:43:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599043435; cv=none; d=google.com; s=arc-20160816; b=lg3MQv4GRnE/ngRjfylwz6m3vjR7gWrfRtsDljDXIjI6bAu4R7xFi0/KLPkHu2qjfj opecAzOld/jDexnhQWCQN2rLcpjVLZhqWAGyexNzGXbLlnSgxChp2w7hjvsEPLh7osOF TH/Qe0XBTPbjcXiCLfWfezrLEcxwAx6yfHnuOFafKhSnU2+hNu0xbKP6wwayRaUsofin mvkiDMGtFE8sv35l00Jw8eEGt3kxH7qQKu04dkbXQHp3BXJOi6TGKdtW9LuTJNcjAdnR 5UK3sJ1CiXYvLbNvBPXrIuxE93e9WK1lfdvqFywFbPdJk3X/5Xz0/DmrkcDPGUvWeEg0 fZgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:autocrypt:from:references:to:subject :reply-to:dkim-signature; bh=YAuBAd4R9dzKnS33pxSKjIAQTjStIoXwYLRQt7wZiKo=; b=jJWOruK20meWgJNIVg0antrg4abzB+ac5lGnp06loP/cho3FVFZQmVjIDEARw3r5Ew YcKLUU+8Hlc5gf1zXBBc23s2KY+BYSgQU6UHxG47Q+Rs0ZA8AeBYIXPf5D1bjV23WkMB IdoRbB1TqR2CDlvDmYD7De/UFarci/iQ0EY/pi1rL/Q7v3jikOytWMFKUdh3zZMt40b3 w9D3C4B2dfEbWilus/ZByg0cYtLkBXB7guJ2J8Ul6UHOzZOVv5TXwn13TlNu3I6r3Op5 6JopG2nm0zkR/y8QaZudywFFRVngb87EHX5I0yQyFeLKobPhoU7+Z+4T35kzU3xUIS44 ZMDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="swE/GhZU"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j17si2254879ejs.0.2020.09.02.03.43.31; Wed, 02 Sep 2020 03:43:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="swE/GhZU"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726526AbgIBKkj (ORCPT + 99 others); Wed, 2 Sep 2020 06:40:39 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:41100 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726226AbgIBKkh (ORCPT ); Wed, 2 Sep 2020 06:40:37 -0400 Received: from [192.168.0.20] (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 86C5C9CC; Wed, 2 Sep 2020 12:40:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1599043234; bh=uvmuKs2dTpLnEziI3nwSPPFfIbYH+Pk6fowyMalqy2Q=; h=Reply-To:Subject:To:References:From:Date:In-Reply-To:From; b=swE/GhZUBcNnJhixomXZjQtnbAJjm5n8FXWqCdLdh7PZ/0FqNFOH9tvsER3FLxTGU HMzyMms4QPEtRL0ZyzfBr7Q9qEmwfbk+6pyqfopLVTa7d6j62hruSAtxRBwkMIKj5f kZ2ih06vC2Eeio0uLiZ+sfwVgq6M8YMeg/YFoQXM= Reply-To: kieran.bingham@ideasonboard.com Subject: Re: [PATCH v3 8/9] media: vimc: Join pipeline if one already exists To: Kaaira Gupta , Helen Koike , Shuah Khan , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org References: <20200819180442.11630-1-kgupta@es.iitr.ac.in> <20200819180442.11630-9-kgupta@es.iitr.ac.in> From: Kieran Bingham Autocrypt: addr=kieran.bingham@ideasonboard.com; keydata= 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 WZw01QYHU/GUV/zHJSFk Organization: Ideas on Board Message-ID: <36c9bda0-6516-c682-0d7e-c349625e6f16@ideasonboard.com> Date: Wed, 2 Sep 2020 11:40:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200819180442.11630-9-kgupta@es.iitr.ac.in> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Kaaira, On 19/08/2020 19:04, Kaaira Gupta wrote: > Start another capture, if one is already running, by checking for > existing pipe. If it exists already, don't fail to start second capture, > instead join it to the already running pipeline. > Use the same stream struct used by already running capture. > > Signed-off-by: Kaaira Gupta > --- > drivers/media/test-drivers/vimc/vimc-capture.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/test-drivers/vimc/vimc-capture.c b/drivers/media/test-drivers/vimc/vimc-capture.c > index 73e5bdd17c57..4d20eda9335e 100644 > --- a/drivers/media/test-drivers/vimc/vimc-capture.c > +++ b/drivers/media/test-drivers/vimc/vimc-capture.c > @@ -247,9 +247,15 @@ static int vimc_cap_start_streaming(struct vb2_queue *vq, unsigned int count) > atomic_inc(&vcap->ved.use_count); > vcap->sequence = 0; > > - stream = kzalloc(sizeof(*stream), GFP_ATOMIC); > - kref_init(&stream->refcount); > - pipe = &stream->pipe; > + if (vcap->ved.ent->pipe) { > + pipe = vcap->ved.ent->pipe; > + stream = container_of(pipe, struct vimc_stream, pipe); > + kref_get(&stream->refcount); > + } else { > + stream = kzalloc(sizeof(*stream), GFP_ATOMIC); > + kref_init(&stream->refcount); > + pipe = &stream->pipe; > + } > Of course if we move the stream to the sensor entity (which I still think is a good idea), we'll need a way to easily get from capture entity to the sensor entity. We could put a reference pointer directly in the capture ? Or have each entity provide a poitner to it's previous entity and walk backwards, which would also help on the other code path that had to do lots of conversions from video or subdev entities or such... > /* Start the media pipeline */ > ret = media_pipeline_start(entity, pipe); > -- Regards -- Kieran