Noarkhh

Noarkhh

Membrane Core Team

Hi,

I am trying to build a library that wraps some functions provided by libcamera-apps. For this I need the libcamera-apps headers, but they are not present in my ~/.nerves/artifacts/nerves_system_rpi4-portable-1.24.1/staging/usr/include/ directory. It’s the place I would expect them to be, since libcamera headers are present here. Another thing that confuses me is that none of the libcamera-apps executables are in staging/usr/bin/ (e.g. libcamera-vid and libcamera-jpeg), but are present on the generated firmware, so I’m not sure where do they even come from.

Are the libcamera-apps headers provided in the precompiled system? Where do libcamera-apps executables come from?

My system is MacOS, my target is rpi4.

Thanks!

Showing Posts 1 to 6

Noarkhh

Noarkhh OP

Membrane Core Team

After getting to know Buildroot better I have more insight into the problem. It seems that for a package to be included in staging (where headers are present) there needs to be a line in it’s .mk file specifying it - ${PKG}_INSTALL_STAGING.

It seems that this option is not configurable through make menuconfig, so I wonder whether it’s possible to modify/override .mk files from the level of nerves configuraiton without modifying the buildroot release that nerves downloads? I tried using external.mk, but the building process doesn’t allow for two .mk files with the same name.

Thanks!

AlexanderRoempke

AlexanderRoempke

just for understanding
the libcamera and libcamera packages from the menueconfig don’t work?

did you follow:
After make menuconfig: Run make savedefconfig ?

AlexanderRoempke

AlexanderRoempke

try that for yourselfe

iex(5)> cmd(“cd lib && ls”)
vintage_net_wifi-0.11.7
vintage_net_ethernet-0.11.2
vintage_net_direct-0.10.7
vintage_net-0.13.5
uboot_env-1.0.1
toolshed-0.3.1
stdlib-5.1.1
ssh_subsystem_fwup-0.6.1
ssh-5.0.1
shoehorn-0.9.1
sasl-4.2.1
runtime_tools-2.0
ring_logger-0.10.5
public_key-1.14.1
property_table-0.2.4
one_dhcpd-2.0.2
nerves_uevent-0.1.0
nerves_time-0.4.6
nerves_ssh-0.4.3
nerves_runtime-0.13.6
nerves_pack-0.7.0
nerves_motd-0.1.13
nerves_logging-0.2.2
muontrap-1.3.2
mdns_lite-0.8.8
logger-1.15.6
libcameras-0.1.0
kernel-9.1
iex-1.15.6
gen_state_machine-3.0.0
elixir-1.15.6
crypto-5.3
compiler-8.4.1
circular_buffer-0.4.1
beam_notify-1.1.0
asn1-5.2
0

AlexanderRoempke

AlexanderRoempke

iex(20)> System.cmd(“libcamera-raw”, [“-h”])
Valid options for libcamera-raw:

  • -h [ --help ]: Print this help message.
  • --version: Displays the build version number.
  • --list-cameras: Lists the available cameras attached to the system.
  • --camera: Chooses the camera to use. To list the available indexes, use the --list-cameras option.
  • -v [ --verbose ]: Set verbosity level. Level 0 is no output, 1 is default, 2 is verbose.
  • -c [ --config ]: Read the options from a file. Defaults to config.txt if no filename is specified. Only long form options are allowed in the config file.
  • --info-text: Sets the information string on the titlebar. Available values include %frame (frame number), %fps (framerate), %exp (shutter speed), %ag (analogue gain), %dg (digital gain), %rg (red color gain), %bg (blue color gain), %focus (focus FoM value), %aelock (AE locked status), %lp (lens position, if known), %afstate (AF state, if supported).
  • --width: Set the output image width (0 = use default value).
  • --height: Set the output image height (0 = use default value).
  • -t [ --timeout ]: Time (in ms) for which program runs.
  • -o [ --output ]: Set the output file name.
  • --post-process-file: Set the file name for configuring the post-processing.
  • --rawfull: Force use of full resolution raw frames.
  • -n [ --nopreview ]: Do not show a preview window.
  • -p [ --preview ]: Set the preview window dimensions, given as x,y,width,height e.g. 0,0,640,480.
  • -f [ --fullscreen ]: Use a fullscreen preview window.
  • --qt-preview: Use Qt-based preview window (WARNING: causes heavy CPU load, fullscreen not supported).
  • --hflip: Request a horizontal flip transform.
  • --vflip: Request a vertical flip transform.
  • --rotation: Request an image rotation, 0 or 180.
  • --roi: Set region of interest (digital zoom) e.g. 0.25,0.25,0.5,0.5.
  • --shutter: Set a fixed shutter speed in microseconds.
  • --analoggain: Set a fixed gain value (synonym for ‘gain’ option).
  • --gain: Set a fixed gain value.
  • --metering: Set the metering mode (centre, spot, average, custom).
  • --exposure: Set the exposure mode (normal, sport).
  • --ev: Set the EV exposure compensation, where 0 = no change.
  • --awb: Set the AWB mode (auto, incandescent, tungsten, fluorescent, indoor, daylight, cloudy, custom).
  • --awbgains: Set explicit red and blue gains (disable the automatic AWB algorithm).
  • --flush: Flush output data as soon as possible.
  • --wrap: When writing multiple output files, reset the counter when it reaches this number.
  • --brightness: Set the brightness.
Noarkhh

Noarkhh OP

Membrane Core Team

I have libcamera-apps executables available in the target system and I am also able to enable or disable them in the menuconfig (as is shown in the screenshot). The thing I am intersted in are libcamera-apps headers that would allow me to write NIFs that use the libcamera-apps API. As far as I’m aware to get access to them the package would need to be installed to staging, which is enabled by setting LIBCAMERA_APPS_INSTALL_STAGING = YES in the libcamera-apps.mk file before compiling the system.

Right now I worked around it by just invoking libcamera-vid using an Elixir Port and getting the stream from stdout, but I’m still interested whether libcamera-apps headers can be installed to staging without too much effort.

AlexanderRoempke

AlexanderRoempke

ok you clearly have a far better understanding than i have.
i just use raspistill with cmd.
because i got an error with libcamera that i use legacy camera setup.

— All posts loaded —

Where Next? Top

Trending in Questions Top

water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews