Task #6596
opennative: кадр с камеры рисуется полосами и дублируется по горизонтали (1280x720, --features onnx)
0%
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раскладывает байты подряд, поэтому расхождение реального размера кадра с запрошенным сдвигает каждую строку и даёт наблюдаемые полосы; двойное повторение по горизонтали указывает на ширину строки, кратную запрошенной.
Гипотезы по причине¶
- avfoundation отдаёт разрешение, отличное от 1280x720 (ближайшее поддерживаемое), при этом
frame_bytesпродолжает резать поток по 12807203. - Ширина буфера окна расходится с шириной кадра при HiDPI-масштабировании minifb на Retina.
- Порядок каналов 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