megapixels/README.md

72 lines
2.8 KiB
Markdown
Raw Normal View History

2020-09-03 01:48:47 +02:00
# Megapixels
A GTK3 camera application that knows how to deal with the media request api
2020-09-08 15:30:01 +02:00
## Building
```shell-session
$ meson build
$ cd build
$ ninja
$ sudo ninja install
```
2020-09-18 15:21:03 +02:00
# Developing
See the mailing list and issue tracker on https://sr.ht/~martijnbraam/Megapixels/
# Config
Megapixels checks multiple locations for it's configuration file and uses the first one it finds.
As first step it will get the first compatible name in the device tree, in the case of a PinePhone
this might be "pine64,pinephone-1.2". Then that dtname will be used as the filename in the search
path in this order:
* $XDG_CONFIG_DIR/megapixels/config/$dtname.ini
* ~/.config/megapixels/config/$dtname.ini
* /etc/megapixels/config/$dtname.ini
* /usr/share/megapixels/config/$dtname.ini
The files in /usr/share/megapixels should be the config files distributed in this repository. The other
locations allow the user or distribution to override config.
## Config file format
Configuration files are INI format files.
### [device]
This provides global info, currently only the `csi` key exists, telling megapixels which device in the
media-ctl tree is the interface to the kernel. This should provide the /dev/video* node.
### [rear] and [front]
These are the sections describing the sensors.
* `driver=ov5640` the name of the media node that provides the sensor and it's /dev/v4l-subdev* node.
* `width=640` and `height=480` the resolution to use for the sensor
* `rate=15` the refresh rate in fps to use for the sensor
* `fmt=BGGR8` sets the pixel and bus formats used when capturing from the sensor, only BGGR8 is fully supported
* `rotate=90` the rotation angle to make the sensor match the screen
2020-10-01 17:25:24 +02:00
# Post processing
Megapixels only captures raw frames and stores .dng files. It captures a 5 frame burst and saves it to a temporary
location. Then the postprocessing script is run which will generate the final .jpg file and writes it into the
pictures directory. Megapixels looks for the post processing script in the following locations:
* ./postprocess.sh
* $XDG_CONFIG_DIR/megapixels/postprocess.sh
* ~/.config/megapixels/postprocess.sh
* /etc/megapixels/postprocess.sh
* /usr/share/megapixels/postprocess.sh
The bundled postprocess.sh script will copy the first frame of the burst into the picture directory as an DNG
file and if dcraw and imagemagick are installed it will generate a JPG and also write that to the picture
directory. It supports either the full dcraw or dcraw_emu from libraw.
It is possible to write your own post processing pipeline my providing your own `postprocess.sh` script at
one of the above locations. The first argument to the script is the directory containing the temporary
burst files and the second argument is the final path for the image without an extension. For more details
see postprocess.sh in this repository.