Commit graph

21 commits

Author SHA1 Message Date
wangjianyu3
f95b53d15b examples/camera: add -m option for horizontal mirror preview
Add -m command line option to enable horizontal mirror on the
camera sensor via VIDIOC_S_CTRL + V4L2_CID_HFLIP.  This uses
the sensor hardware mirror (e.g. GC0308 register 0x14 bit[0])
with zero CPU overhead.

Also refactor parse_arguments to use a loop-based parser so
options can appear in any order.

Usage: camera 0 -m    (mirror preview)
       camera -jpg -m (mirror still capture)

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-09 10:34:06 -03:00
wangjianyu3
21dd3082c1 examples/camera: handle RGB565X (BE) format from 8-bit DVP camera
Some image sensors on 8-bit DVP buses (e.g. GC0308) produce RGB565X
(big-endian) pixel data — the high byte is clocked out first and
stored first in PSRAM by the ESP32-S3 CAM controller.

The V4L2 framework does not negotiate formats automatically, so try
RGB565 first and fall back to RGB565X if S_FMT fails.

When the sensor reports RGB565X:
 - Invalidate D-Cache after DQBUF so the CPU reads fresh DMA data
 - Byte-swap each pixel in place from BE to LE RGB565 for display

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-09 10:34:06 -03:00
wangjianyu3
52b36deb13 examples/camera: use MMAP with USERPTR fallback and fix NX stride
Use MMAP buffer allocation by default so the driver can manage
DMA-capable memory with proper alignment and cache attributes.
Fall back to USERPTR if the driver does not support MMAP.

Also fix NX framebuffer stride calculation to use the actual
display width instead of hardcoded values.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-09 10:34:06 -03:00
wangjianyu3
8cd9e9acc2 examples/camera: fix spelling errors
Fix typos found by codespell:
- camera_bkgd.c: defaul -> default
- camera_main.c: memorys -> memories (2 occurrences)
- camera_main.c: freame -> frame
- camera_main.c: valiable -> variable

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-16 17:45:24 +01:00
wangjianyu3
10056077f4 examples/camera: fix build error and still capture logic
Add missing #include <sys/boardctl.h> in camera_bkgd.c to fix
implicit declaration of boardctl() and undeclared BOARDIOC_NX_START.

Also fix capture_num check in camera_main.c to only apply still
capture size enumeration when capture_type is STILL_CAPTURE.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-16 17:45:24 +01:00
tengshuangshuang
4432d84dd3 test:driver_audio bug fix
Signed-off-by: tengshuangshuang <tengshuangshuang@xiaomi.com>
2025-01-16 22:44:14 +08:00
Alin Jerpelea
a91768e715 examples: migrate to SPDX identifier
Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2024-12-30 18:02:50 +08:00
SPRESENSE
8a82400929 examples/camera: Fix wrong device file path
In camera_main.c, the dev paths of capture_initialize() and open()
are different. So open could always failed.
2024-07-28 15:52:26 +08:00
shizhenghui
a00ba19eb4 camera_example: modify initialize interface after v4l2 refactor
Signed-off-by: shizhenghui <shizhenghui@xiaomi.com>
2024-03-13 09:50:58 +08:00
yuexinyi
c10e78869b examples/camera: Video driver multi-instance adaptation
Signed-off-by: yuexinyi <yuexinyi@xiaomi.com>
2023-07-29 07:42:33 -07:00
Xiang Xiao
a29d9ea9da fsutils/examples: Include unistd.h explicitly
to get the prototypes or macros are defined in it

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-02-05 08:46:59 +02:00
Xiang Xiao
3e2c8fdb41 examples/camera: Cast the last argument of ioctl to uintptr_t
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-12-08 12:38:55 +01:00
Xiang Xiao
519c4ccb1b examples/camera: Add FAR for all pointer
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-12-08 12:38:55 +01:00
Xiang Xiao
02f608b64d examples/camera: Call VIDIOC_S_FMT before VIDIOC_REQBUFS
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-12-08 12:38:55 +01:00
Xiang Xiao
ca855f3f23 examples/camera: Fix the style issue
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-12-08 12:38:55 +01:00
SPRESENSE
c3f91b3a0a examples/camera: Dynamically get the connected device
This example can support for both ISX012 and ISX019 image sensors.
2022-10-25 22:46:45 +08:00
Xiang Xiao
893387b2c5 Fix the minor style issue
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-10-16 19:07:16 +02:00
Xiang Xiao
9291d07a87 Fix the coding style issue
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-10-06 12:20:32 +02:00
SPRESENSE
d8757a6bcf examples/camera: Fix some issues and update license
Fix some issues and update license to apache.
- Fails to open the video driver.
- Change format from YUV422 to RGB565,
  and add captured image output to LCD.
- An application cannot exit by infinite loop.
- In video-only mode without capturing still images,
  do not allocate capture memory for still images to
  reduce the memory usage.
2021-09-16 10:45:36 +02:00
Maciej Wójcik
21049ece6e Rewritten READMEs to Markdown 2020-07-25 01:01:51 -07:00
Alin Jerpelea
f571af1b2b Examples: camera: add a simple camera snapshot example
The camera example will take the specified number of pictures (default 10)
then will exit

To enable the example add the following line in your defconfig
EXAMPLES_CAMERA

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2020-07-01 07:53:25 +09:00