Re: [Media Summit] ChromeOS Kernel CAM

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

 



Hi Ricardo,

On Wed, Sep 07, 2022 at 09:55:12AM +0200, Ricardo Ribalda wrote:
> Hi
> 
> On ChromeOS we have opted to have a camera stack based on the upstream kernel.
> 
> The camera ecosystem has become extremely heterogeneous thanks to the
> proliferation of complex cameras. Meaning that, if ChromeOS wants to
> keep with our upstream commitments, we have to look into how to get
> more involvement from vendors and standardise our stack.
> 
> Kcam is an initiative to support complex cameras in a way that can be
> scalable, is acceptable by the vendors and respect the users rights.
> 
> Slides at: https://drive.google.com/file/d/1Tew21xeKmFlQ7dQxMcIYqybVuQL7La1a/view

Thank you. A few questions and comments for clarification:

- Slide 4 mentions proprietary drivers and UIO drivers. Do you mean UIO
  as in the upstream UIO API, or as in UIO-like drivers with a vendor
  API ?

- Slide 5 mentions "Code developed exclusively by vendor" for Android.
  There's the CameraX initiative (and possibly other I'm not aware of)
  that mixes the high-level HAL implementation from Google with
  low-level vendor code, to simplify (in theory at least) the life of
  vendors. Generally speaking you're right though, the vendor is in
  charge of providing the HAL, regardless of how it's structured
  internally.

- Slide 8 is focussed on notebooks (Chrome OS, but I suppose also
  regular Linux machines) vs. Android when it comes to leveraging the
  camera stack, but let's not forget there are also other markets (IoT
  in particular) that may be structured differently. Not all vendors of
  SoCs that integrate ISPs consider Android as their main target, and
  they may ignore the notebook and mobile markets completely.

- Slide 11 (and previous slides too) mention "Secret Sauce". I really
  dislike that term, as it's very vague. I would like discussions to
  clearly define the scope of that closed-source component, and we
  should come up with a more descriptive name that reflects that
  well-defined scope.

- Slide 16 mentions 122 ioctls to emphasize that V4L2 is a complicated
  API. Most of those are not relevant to cameras. It is thus a bit
  misleading technically, but it can be still perceived as complicated
  by vendors for that reason.

- Still on slide 16, V4L2 as an API is usable without disclosing vendor
  IP. What is not possible is upstreaming a driver. I don't see this as
  significantly different between V4L2 and the new API proposal. I
  expect this to be discussed on Monday.

- On slide 17 the color scheme seems to imply that the daemon is
  open-source, while it's in most cases (maybe in all of them) closed.

- Do you have a real life example of the type of outcome described on
  slide 19 (black box hardware) ?

- Slide 24 mentions parameter buffers, it would be useful to describe
  what those typically contain, and who consumes them once they're
  provided by userspace to the driver.

- Slide 27 mentions that upstreaming a driver will require a camera
  stack with the same open source requirements as V4L2. Doesn't that
  contradict slide 16 that mentions that V4L2 cannot product vendor IP,
  or at least infer that the new API wouldn't protect the vendor IP more
  than V4L2 does ?

- Slide 31 mentions that entities can send operations internally and
  listen to each other events. I'd like to better understand how that
  will work without any abstraction in the API (as that is one of the
  main design decision behind this new API) when those entities are from
  different vendors, and handled by different drivers that are developed
  independently (for instance, the camera sensor and the CSI-2 receiver,
  or even the CSI-2 receiver and the ISP).

- Does the bike on slide 32 illustrate the difficult discussions we've
  had in the past and how progress was hindered ? :-)

> Looking forward to see all of you again on Monday :)

-- 
Regards,

Laurent Pinchart



[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