8 ms·
Libcamera v0.0.1
- asicsp 4y agoAs per their website (https://libcamera.org/ https://libcamera.org/): >An open source camera stack and framework for Linux, Android, and ChromeOS
- jo-m 4y agoAlso useful is the README in their git repo: https://git.libcamera.org/libcamera/libcamera.git/tree/README.rst?h=v0.0.1 https://git.libcamera.org/libcamera/libcamera.git/tree/READM...
- robert_foss 4y agolibcamera is intended to fill the same role for cameras & image processors as mesa has been filling for GPUs.
- ttoinou 4y agoI'm always surprised with the bland and uninspiring names choosen by FLOSS projects. Anyway, good idea of a project ! Anyone understands the difference with Apertus AXIOM ? https://www.apertus.org/fr/en https://www.apertus.org/fr/en
- tokai 4y agoIts not a true HN thread about a FLOSS project without gall towards the name.
- robert_foss 4y agolibcamera isn't firmware for cameras. It's a userspace framework for enabling and abstracting away the terribleness of v4l2 & quirky hardware.
- secondcoming 4y agoOn the upside, the name tells you what it is and does.
- deleted 4y ago[deleted]
- ttoinou 4y agoWell, not really. It deals with a portion of what you need to build a camera, so which portion exactly is it ? And now if someone else creates another FLOSS camera library / toolkit they're going to call it libcam and we'll all get confused about who's who
- humanistbot 4y ago> And now if someone else creates another FLOSS camera library / toolkit they're going to call it libcam and we'll all get confused about who's who You identified a problem with ALL names. If someone developing a new library in the same general area (library for cameras) chops three letters off the end of an existing library to name their project, that is the second project's fault, not the first project's.
- ttoinou 4y agoWell you need to think about the whole thing before coming up with a name. I don't care about blaming people here
- humanistbot 4y ago> I don't care about blaming people here Says the person blaming the creators for their name.
- ttoinou 4y agoI only said "I'm always surprised". I am wondering about this topic, and the replies are helpful
- optymizer 4y agoYou should not be surprised. Choosing 'fun' names is subjective. This is a tool, not a disney ride. Not everything needs to trigger dopamine rushes and it's ok to have clear, straightforward names in software, seeing as naming things is hard.
- palata 4y agoPersonally I don't want fun names, but I wish people used unique, writable, pronounceable names. Try to search for "camera" and see if you find this project. On the other hand, v4l2 is pretty unique. If all text editors are called "TextEditor", maybe the name says what it is, but the name is useless. For a company, you just use the company name ("Microsoft Word", assuming that the company name is unique enough), but for an open source project...
- arbitrage 4y agoYour argument is one heck of a strawman. Why on earth would you use a search engine to search for "camera" and be disappointed that libcamera didn't make the front page of your results? Searching for "lib camera", "libcamera", or "camera lib" returns this project as the top result.
- palata 4y agoSorry I meant it as a general comment for project names, not for this one in particular. And it is just my preference: given that "names that say what it does" don't really help me discriminate projects in general, I feel like "unique names" would be better. And if, like many company, a ton of money will be put into infinite brainstorming sessions by people with a good salary, I feel like maybe just going for a fun, unique name would be cheaper and not less effective. "Apple" does not return the fruit in the top results, but I wouldn't say it's a good name for a new project in 2022. Same for "word", I wouldn't advise you call your project like this, even if the top results are "Microsoft Word" and nothing related to the actual meaning of the word. I come from an industry where everyone uses the same prefixes/suffixes (related to the industry) together with names that "mean something". As a result, it's never really unique, and the only way to differentiate them is to always name them together with the company name. There is one in particular where the company name says what their product does, and it is similar to another product. For that one I _always_ need to Google it and go check the geographical location of both companies, because that's how I differentiate them: the names (and in this case the company name) do not help me.
- deredede 4y agoI love bland and uninspiring names. What's libcamera? A library for dealing with cameras, I'd wager. What's AXIOM? Not sure... My first guess would be a proof assistant. It's also not just FOSS, Apple for instance has many ThingKits(HealthKit, UIKit) but also TextEdit.
- fnord123 4y ago100% agree! Contrast with "Pokemon or Big Data" https://pixelastic.github.io/pokemonorbigdata/ https://pixelastic.github.io/pokemonorbigdata/
- mardifoufs 4y agoThe same can be said about anything related to MLOps. The naming schemes are so out there but they all end up sounding similarly... generic. It's kind of weird really
- Uehreka 4y agoI don’t, and here’s why: If libcamera turns out to be a bust, then we’ve burnt that name. Now the next library will have to be called something like libeyeopener, and I’ll have to spend years telling people “although libcamera sounds like the ‘official’ camera library, the one you actually want is libeyeopener.” “Fanciful” names don’t squat on valuable namespace and allow different approaches to duke it out without one of them getting the advantage of sounding like the “official” one.
- deredede 4y agoIf the libs are called Barracuda and Seagull you'll have to spend years telling people "although you have heard of Barracuda, the lib you want to use now is Seagull", I don't see that as very different. People don't make library choices based on the name only, they search for what is recommended online and look at examples/features/etc. I do concede that all else being equal people will gravitate towards the more "official" sounding library, but if all else's equal, it's not really an issue.
- 4y ago
- fimdomeio 4y agoApple as creative names like. Mail, Pages, Numbers, Calendar, Photos... I actually think this is great for most users. What makes more sense for a user that knows very little about computers use an app called Mail to check the emails or one called Thunderbird. The only place where this convenience fails is for google searches.
- palata 4y ago"Is Numbers a calculator? Or an accounting app maybe?" "Is Calendar the one I just installed, or is it the one Apple is forcing me to use?" "Wait, so there is an app called Mail that I cannot remove, but my e-mail app is called Thunderbird? Let me note that." 1) People will learn the name of the apps they use, it's not that hard 2) Not all browsers can be called "browser".
- deleted 4y ago[deleted]
- ChrisMarshallNY 4y agoDon't look at my project names[0], then... [0] https://github.com/ChrisMarshallNY#here-on-github https://github.com/ChrisMarshallNY#here-on-github
- marcodiego 4y agoI have to repost a comment: "I remember a friend of mine arguing prefixing names with g, q and k was a reason linux on the desktop failed. I asked "So, how do you explain the success of ipod, iphone, ipad and itunes?"" People complaining about influence of the name of a project on its success should publish unbiased statistics to base their arguments on.
- executesorder66 4y agoAgreed. More examples : - libpipi (why such a boring name for a library that I'm guessing helps you take a piss?) - libcaca (why such a boring name for a library that helps you take a shit?) - Thunar (what an utterly uninspired name for software that 100% accurately behaves like a Norse god) - Flameshot (Another fire shooting application with a boring name) - Zathura (I hate that from the name alone I can tell that I'm gonna be pulled into an intergalactic space adventure. Why not something random?)
- trelane 4y agoI don't get it. Why create a new, competing library instead of working with the devs of the existing library? From the faq: "We see libcamera as a continuation of V4L2." Ok, why not just contine v4l2? Or why not work with gstreamer?
- MartijnBraam 4y agolibcamera: from the people who made v4l2 a mess
- robert_foss 4y agoThat's both uncharitable & incorrect
- fdfaz 4y agofrom the name I guess v4l2 is the second version of something? So third time's the charm?
- TheCycoONE 4y agoVideo 4 Linux, and yes it's the second version. v4l was added to the kernel in the late 90s, and v4l2 replaced it in the early 2000s. https://en.wikipedia.org/wiki/Video4Linux https://en.wikipedia.org/wiki/Video4Linux
- ognarb 4y agoInteresting statement from the author of megapixels https://git.sr.ht/~martijnbraam/megapixels https://git.sr.ht/~martijnbraam/megapixels
- johndough 4y agoThe people who downvote this comment probably have not used libcamera. All the smart pointer stuff makes it needlessly difficult. Ironically, the first example on how to use libcamera that I could find leaks memory.
- mort96 4y ago
- sph 4y agoThis article might help shed some light on why people have been working on libcamera: https://lwn.net/Articles/904776/ https://lwn.net/Articles/904776/ tl;dr: many OEM vendors are moving toward creating "dumber" cameras, with the hardware just exporting a raw data stream and all the image processing logic is done in software. The existing v4l2 stack in Linux is limited and not ready for such a change; also it would be unpractical to put all this new logic, often proprietary and with restrictive patents, into the kernel. Quoting Laurent Pinchart referenced in the article: > "Given the direction the industry is taking, this situation will become increasingly common in the future. With the notable exception of Raspberry Pi who is leading the way in open-source camera support, no SoC vendor is willing today to open their imaging algorithms."
- darkwater 4y ago> many OEM vendors are moving toward creating "dumber" cameras, with the hardware just exporting a raw data stream and all the image processing logic is done in software So it's WinModem [0] time again, but with AndCam? [0] https://en.wikipedia.org/wiki/Softmodem https://en.wikipedia.org/wiki/Softmodem
- sph 4y agoThat's indeed what I was thinking of. WinModems were an absolute pain when I started using Linux two decades ago, often outright impossible to use unless you were running Windows, and adding a ton of CPU overhead. I wouldn't be surprised if we'll have the same situation again, with some laptop cameras that just won't work at all under Linux.
- rasz 4y ago>tl;dr: many OEM vendors are moving toward creating "dumber" cameras, with the hardware just exporting a raw data stream and all the image processing logic is done in software. weird, I understood it the total opposite - with vendors shipping more and more sophisticated solutions with embedded dedicated processors doing everything inside a black box (IPU6). You dont get ANY access to raw data stream, and no access at all if you cant talk to those black boxes.
- Vinnl 4y agoAnyone have any insights on the significance of this specific release?
- xrd 4y agoIt's interesting seeing how camera support is the biggest gaping hole in the open source smart phone world. For example, almost everything in this graph is green, except for the camera column: https://wiki.postmarketos.org/wiki/Devices https://wiki.postmarketos.org/wiki/Devices It's a complicated problem: https://blog.brixit.nl/pinephone-camera-part-2/ https://blog.brixit.nl/pinephone-camera-part-2/ But, in a world where open source almost always exceeds the commercial offerings, I'm surprised this is the case. It seems like the parent article and the LWN article posted (https://lwn.net/Articles/904776/ https://lwn.net/Articles/904776/) are suggesting that the trend is to just dump raw data and let software process it. I'm doubly surprised there aren't good libraries in the open source world that do this so much better than the commercial ones. This is the main reason I feel stuck inside the duopoly of Android (barely tolerable and hostile) and iOS (completely unusable and unhackable). I need a good camera on my phone and there aren't good options for that at all. Maybe extracting this code outside of gstreamer is a good idea if this takes us closer to that goal.
- ElCheapo 4y agoYour post is only partially correct. Even with completely open firmware, or at least a documented interface, the biggest roadblock would become be abysmal state of OSS digital image processing. Engineers at major smartphone and camera companies are paid top dollar to improve how the images are processed, this is no laughing matter and is obvious when you compare the image quality from a no-name chinese brand with Samsung or Apple even though they are using the same exact sensors. FOSS smartphones such as the Pinephone would then need a whole bunch of accelerators to perform such computations because the general purpose CPU would be too slow for that, and image could take seconds to finish processing and get saved in the gallery. But at that point Pinephone itself would not have enough expertise for such a design and everything would crumble.
- rkalla 4y ago... to add to your point, then take companies like Google who rely heavily on ML to improve the quality of the photos further and the distance between "RAW data off sensor" and "the best Samsung/Apple/Google can generate" is a HUGE gap.
- Roark66 4y agoFew people asked "why duplicate v4l2 functionality", but really libcamera serves a different purpose. V4l2 (and v4l) are frameworks that support connecting multiple types of devices. IMO the biggest advantage of libcamera is their goal to abstract various camera controls (ISP profiles and on-camera registers) that are painful to use with v4l2. It complements v4l2, not replaces it For example v4l2 has an ioctl to send raw read/write commands to a camera module. Having a datasheet one can then check which registers do what and one can set various features, but this requires using different registers and values for different camera modules. Then we have ISP controls that v4l2 doesn't touch at all and to let's say change color correction, or automatic gain or autofocus one has to use (usually proprietary) tools from the Soc manufacturer. Some of those tools are open source and very powerful (on rockchip for example), but still developing apps one has to use a completely different method to adjust a rockchip's ISP vs let's say raspberry pi's. So libcamera is a great idea to abstract all those hardware interfaces. Last time I checked they supported raspberry pi, and had a very minimal rockchip support. Imagine there is a time when libcamera supports all kinds of Soc ISPs (rockchip, broadcom, allwinner, hisilicon and many others). Traditionally getting a directly connected camera to work (under mainline Linux) has been quite difficult on various embedded devices. Then getting hardware encoding to work is the second hurdle. Most often manufacturers distribute sdk's with their proprietary binary blobs built against ancient Linux kernels and one has to live with it if one wants to reuse various cheap Ip camera boards.
- HankB99 4y ago> For example v4l2 has an ioctl to send raw read/write commands to a camera module. Having a datasheet one can then check which registers do what and one can set various features, but this requires using different registers and values for different camera modules. That touches a nerve. I worked on an embedded system which used one of these camera modules and the datasheet was probably accurate at some point in time during the development of the module, but clearly as the module was developed the data sheet did not keep up. Eventually it was necessary to employ a bus sniffer to capture all traffic between a demonstration kit and module and reproduce the streams byte for byte to get the camera to do what was needed. It was clear from the streams that the demonstration code was using device registers not described in the data sheet. I suppose that a big customer for the module (such as a cell phone manufacturer) would get access to an engineer who could provide the necessary information, but that was not us. > ... has been quite difficult on various embedded devices. Agreed.
- markstos 4y agoI was a little surprised to see Bugzilla being chosen for a new project. I have historically not enjoyed using it. Maybe it's better now.
- andmarios 4y agoSome of the comments here about v4l2 and cameras make me feel so old. :) When v4l2 came out, the main target were TV cards (analog TV cards, digital / satellite / cable TV was just starting for most western countries) and video capture cards. We did have webcams, but they were rare, basic, and only worked properly in movies. The top resolution was 640×480. I'd know, I had one of the best models back then, Creative Go Plus! I've supported v4l2 across a few flamewars. In Windows back then you needed a closed source driver with a proprietary API for each TV card. It was impossible for a 3rd party application to support more than a few cards and usually you would only be able to use the software that came with the card. For Linux, if your hardware was supported, a common API was exposed. Thus any 3rd party application could take advantage of any TV card. This is why projects like MythTV were made possible and accessible to many. Alas, I can see why a system designed over 20 years earlier, might not fit the needs for modern cameras and computational photography. We have seen so many changes in these 20 years, that having a new library to interface with camera sensors, hardly seems something to fret over. ;)
- chrischen 4y agoWow 480 vertical pixels is not bad when you consider current generation M1 macs have merely 720 vertical pixels in its built in web cam.
- michaelt 4y agoOh, 640x480 wasn't the streaming video resolution, that was the single-shot mode. Products of the era would provide 30fps at 176x144, over the parallel port [1]. [1] https://www.ebay.co.uk/itm/392263252707 https://www.ebay.co.uk/itm/392263252707
- asabil 4y agoAlso known as QCIF format
- rasz 4y agov4l2 came out in 2001. At that point every TV tuner card supported full framerate capture at 768x576/720x480 for over >3 years already. Its only ~12MB/s and cards supported bus mastering, the only problem was storage and CPU power for realtime encoding. https://linuxtv.org/wiki/index.php/Brooktree_Bt848 https://linuxtv.org/wiki/index.php/Brooktree_Bt848 https://www.linuxtv.org/wiki/index.php/Bttv_devices_(bt848,_bt878) https://www.linuxtv.org/wiki/index.php/Bttv_devices_(bt848,_...
- happiness_idx 4y agoAny reason they chose to use meson instead of make?
- Arnavion 4y agoAll C projects started in the last ~2 years that I'm aware of use meson. Besides, make alone can't do the things that they're using meson for. They'd need at least a configure script, or autotools. Meson is preferable to that.
- ranger_danger 4y agoif you're going to use Qt, why not just use QtMultimedia which already supports cameras in more ways than this.
- seba_dos1 4y agolibcamera doesn't use Qt (aside of some example apps), and QtMultimedia doesn't support cameras in a sense libcamera does at all (QtMultimedia goes on top of libcamera on the software stack).
- otikik 4y agoThe description is a bit nebulous and I am left with a bunch of questions. > a camera stack that is open-source-friendly while still protecting vendor core IP What is a "camera stack"? A software library (perhaps with some binary modules)? Or does it extend to hardware as well? Like some sort of spec "here's what each IO PIN number should do". Also, what type of cameras are we talking about? Is this for built-in cameras on embedded devices (such as phones or laptops)? Is this for people connecting their reflex camera through USB in order to download their high quality pictures? For all of them?
- grepLeigh 4y agoCheck out this post to understand where libcamera fits into the picture. The Raspberry Pi Foundation replaced the MMAL (another camera framework) stack with a libcamera stack. https://www.raspberrypi.com/news/an-open-source-camera-stack-for-raspberry-pi-using-libcamera/ https://www.raspberrypi.com/news/an-open-source-camera-stack...
- tleb_ 4y agoKieran Bingham, who pushed the release, recently did a talk at ELC-E 2022 about libcamera: https://www.youtube.com/watch?v=WMrezh0ij4M https://www.youtube.com/watch?v=WMrezh0ij4M Slides: https://elinux.org/images/6/60/Application_support_with_libcamera.pdf https://elinux.org/images/6/60/Application_support_with_libc...
- earthscienceman 4y agoThese projects are so important for being able to run the software we want, on the hardware we want. While other comments have pointed out that cameras are an inflection point for FOSS, I think they've managed to understate it. For all the commenters asking about why this should exist, please read this exchange with Greg KH on LKML discussing the new Intel IPU/MIPI cameras [1]. There are intel hardware devs who explicitly state the proprietary stack exists because currently functionality is not functional. libcamera is specifically pointed out as the necessary project to get camera support a future in the kernel and to incentivize FOSS code for camera interop. The hardware is currently a new frontier of binary blobs, proprietary APIs and weird shims between kernel, drivers, software, and userspace. The thing about Intel is that, like Apple and unlike AMD, they've realized that a computer is more than a CPU. It's a platform. And the functionality and desirability of your platform depends on the laundry list of quality features you deliver... not just GHz and FLOPS. So they're trying to be Apple in their own way much how Apple has succeeded in be(at)ing Intel. Interestingly, in my opinion, quality open source software for their platforms could be the dark horse for their success. And this could not have come up on HN at a better time. Just a few days ago I bought my first ever new laptop (!) for research, an X1 Nano Gen2. I've been a Linux user on old Thinkpads my entire life so I naively bought this hardware on a lark because it filled a very specific niche for me. I zfs sent my OS from my old Thinkpad and tweaked a few things and everything worked phenomenally well. Then I went to try out the fancy webcam... I still haven't managed to get the mish-mash of code they offer to work for the Nano2 OV2740 camera sensor that's being read through Intel's new Alder Lake integrated "IPU", although some people have had more success on Dells [2]. Which is sad given how necessary a webcam is these days. In the spirit of hackernews, if anyone can point me in the right direction for getting the camera working. I'm all ears. Currently the module/firmware refuses to load after compiling the six different libraries necessary for support. I've been working on getting enough information together to open an issue on the github [3] [1] https://www.spinics.net/lists/kernel/msg4467429.html https://www.spinics.net/lists/kernel/msg4467429.html [2] https://bbs.archlinux.org/viewtopic.php?id=277462&p=3 https://bbs.archlinux.org/viewtopic.php?id=277462&p=3 [3] https://github.com/intel/ipu6-drivers https://github.com/intel/ipu6-drivers
- atherpayer 4y ago
- another_devy 4y agoI always feel odd, why v0.0.1 not v0.1.0? How can you start with patch if there was nothing before?
- therein 4y agoThat's a great way to put it if they are 1-indexed but if they are 0-indexed it might make sense. The empty-set / no-code state is what the project starts with and it has no versioning as it is inherited by all projects. And then 0.0.1 is a change that introduces no backwards incompatibilities. But we are slicing the cheese pretty thin at this point.