Re: [PATCH v2 09/30] media: entity: Swap pads if route is checked from source to sink

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On Wed, Jan 16, 2019 at 12:57:43AM +0200, Laurent Pinchart wrote:
> Hi Sakari,
> 
> Thank you for the patch.
> 
> On Fri, Nov 02, 2018 at 12:31:23AM +0100, Niklas Söderlund wrote:
> > From: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > 
> > This way the pads are always passed to the has_route() op sink pad first.
> > Makes sense.
> 
> Is there anything in the API that mandates one pad to be a sink and the
> other pad to the a source ? I had designed the operation to allow
> sink-sink and source-source connections to be checked too.

Do you have a use case in mind for sink--sink or source--source routes? The
routes are about flows of data, so I'd presume only source--sink or
sink--source routes are meaningful.

If you did, then the driver would have to handle that by itself. This still
simplifies the implementation for drivers that do not.

> 
> If your goal is to simplify the implementation of the .has_route()
> operation in drivers, I would instead sort pad0 and pad1 by value.

That'd be another option to make the order deterministic for the driver.
I'm fine with that as well.

> 
> > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>
> > ---
> >  drivers/media/media-entity.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
> > index 3c0e7425c8983b45..33f00e35ccd92c6f 100644
> > --- a/drivers/media/media-entity.c
> > +++ b/drivers/media/media-entity.c
> > @@ -249,6 +249,10 @@ bool media_entity_has_route(struct media_entity *entity, unsigned int pad0,
> >  	if (!entity->ops || !entity->ops->has_route)
> >  		return true;
> >  
> > +	if (entity->pads[pad0].flags & MEDIA_PAD_FL_SOURCE
> > +	    && entity->pads[pad1].flags & MEDIA_PAD_FL_SINK)
> > +		swap(pad0, pad1);
> > +
> >  	return entity->ops->has_route(entity, pad0, pad1);
> >  }
> >  EXPORT_SYMBOL_GPL(media_entity_has_route);
> 
> -- 
> Regards,
> 
> Laurent Pinchart

-- 
Sakari Ailus
sakari.ailus@xxxxxxxxxxxxxxx



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux