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

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews