Project

General

Profile

Actions

Task #6596

open

native: кадр с камеры рисуется полосами и дублируется по горизонтали (1280x720, --features onnx)

Added by Redmine Admin about 1 month ago.

Status:
New
Priority:
Normal
Assignee:
-
Start date:
09/20/2026
Due date:
% Done:

0%

Estimated time:

Description

Симптом

Окно focus24-native показывает картинку с камеры в виде зелёно-пурпурных горизонтальных полос (чередование строк), сцена продублирована по горизонтали 2 раза. Геометрия сцены угадывается, цвет и построчная раскладка разрушены.

Воспроизведение

cargo run -p focus24-native --release --features onnx -- 0 1280 720 30

macOS (Darwin 25.4.0), вход avfoundation, устройство 0.

Лог содержит только штатные предупреждения onnxruntime об удалении неиспользуемых инициализаторов (channel_padding/Paddings, const_fold_opt__*), ошибок ffmpeg нет.

Наблюдения из кода

  • crates/native/src/capture.rs: запрашивается -pixel_format nv12 -video_size 1280x720, на выходе -pix_fmt rgb24; размер кадра считается как width * height * 3 в frame_bytes.
  • crates/native/src/main.rs: буфер окна создаётся по тем же config.width/height.
  • rgb24_to_argb раскладывает байты подряд, поэтому расхождение реального размера кадра с запрошенным сдвигает каждую строку и даёт наблюдаемые полосы; двойное повторение по горизонтали указывает на ширину строки, кратную запрошенной.

Гипотезы по причине

  1. avfoundation отдаёт разрешение, отличное от 1280x720 (ближайшее поддерживаемое), при этом frame_bytes продолжает резать поток по 12807203.
  2. Ширина буфера окна расходится с шириной кадра при HiDPI-масштабировании minifb на Retina.
  3. Порядок каналов rgb24 против ожидаемого ARGB даёт зелёно-пурпурный сдвиг вместе со сдвигом строк.

Проверка

ffmpeg -f avfoundation -video_size 1280x720 -pixel_format nv12 -i 0 -frames:v 1 out.png — сравнить фактический размер выходного кадра с запрошенным.

Критерий готовности

Кадр 1280x720 с камеры рисуется в окне в естественных цветах, одной копией, построчно без сдвига. Добавлен тест на соответствие длины кадра ffmpeg и размера буфера окна с отказом на старте при расхождении.

Окружение

  • Ветка master, коммит 311b663
  • Сборка: release, фича onnx
  • Дата: 2026-09-20

No data to display

Actions

Also available in: Atom PDF