เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ libcamera, stack เบชเปเบฒเบฅเบฑเบšเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเปƒเบ™ Linux

เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบตเปˆเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ libcamera (0.0.1) เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™, เบชเบฐเป€เบซเบ™เบต stack เบŠเบญเบšเปเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบงเบดเบ”เบตเป‚เบญ, เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบฎเบฑเบšเบชเบฑเบ™เบเบฒเบ™เป‚เบ—เบฅเบฐเบžเบฒเบšเปƒเบ™ Linux, Android เปเบฅเบฐ ChromeOS, เป€เบŠเบดเปˆเบ‡เบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ V4L2 API. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบเปเบˆเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เบกเบฑเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ API เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบฑเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ, เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบเบเบชเบฒเบ‚เบฒเบญเบญเบเป‚เบ”เบเบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ API เบ—เบตเปˆเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, เปเบฅเบฐเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™, เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบ—เบตเปˆเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ ABI เปเบฅเบฐ API. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™ C++ เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” LGPLv2.1.

เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบกเบฑเบ™เบ•เบดเบกเบตเป€เบ”เบเบ‚เบญเบ‡ Linux kernel เบฎเปˆเบงเบกเบเบฑเบšเบœเบนเป‰เบœเบฐเบฅเบดเบ”เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Linux เบชเปเบฒเบฅเบฑเบšเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ—เบฅเบฐเบชเบฑเบšเบชเบฐเบซเบผเบฒเบ”เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เบเบฑเบ‡เบ•เบปเบงเบ—เบตเปˆเบ•เบดเบ”เบเบฑเบšเป„เบ”เป€เบงเบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡. API V4L2, เบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปƒเบ™ Linux kernel, เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเปเบฅเบฐเบ–เบทเบเบ›เบฑเบšเบ•เบปเบงเบšเปเปˆเบ”เบตเบเบฑเบšเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ MCU เปƒเบชเปˆเบšเปˆเบฒเบ‚เบญเบ‡ CPU.

เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก, เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบฎเบนเบšเบžเบฒเบšเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบžเบดเป€เบชเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบš (MCU), เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฑเบ‡เบ•เบปเบง, เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ, เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบšเปˆเบฒเบ‚เบญเบ‡ CPU เบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบปเบงเบ‚เบฑเบšเบ‚เบตเปˆเบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™. เบ›เบฐเบเบญเบšเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”. เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ libcamera, เบœเบนเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบŠเบญเบšเปเบงเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เปเบฅเบฐเบœเบนเป‰เบœเบฐเบฅเบดเบ”เบฎเบฒเบ”เปเบงเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบชเป‰เบฒเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบ—เบตเปˆ, เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เปเบฅเบฐเบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบปเบเบ›เป‰เบญเบ‡เบŠเบฑเบšเบชเบดเบ™เบ—เบฒเบ‡เบ›เบฑเบ™เบเบฒเบ‚เบญเบ‡เบœเบนเป‰เบœเบฐเบฅเบดเบ”เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบš.

stack เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเป‚เบ”เบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” libcamera เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบŠเบญเบšเปเบง เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบŠเบฑเป‰เบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบกเบตเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบš V4L API, Gstreamer เปเบฅเบฐ Android Camera HAL. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเปเบ•เปˆเบฅเบฐเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบ›เบฑเบ™เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบœเปˆเบฒเบ™ IPC. เป‚เบกเบ”เบนเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป‚เบ”เบเบเบปเบ‡เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป‚เบ”เบเบœเปˆเบฒเบ™ API เบเบฒเบ‡, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบฅเบฐเบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบš.

เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ algorithms เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบงเบดเบ”เบตเป‚เบญ (เบเบฒเบ™เบ›เบฑเบšเบ„เบงเบฒเบกเบชเบปเบกเบ”เบธเบ™เบชเบตเบ‚เบฒเบง, เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™, เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบงเบดเบ”เบตเป‚เบญ, autofocus, เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบ exposure, เปเบฅเบฐเบญเบทเปˆเบ™เป†), เบŠเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบžเบฒเบเบ™เบญเบเป€เบ›เบตเบ”เบซเบผเบทเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡. เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบง. API เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบžเบฒเบเบ™เบญเบเปเบฅเบฐเปƒเบ™เบ•เบปเบง, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ›เบฃเป„เบŸเบฅเปŒเบญเบธเบ›เบฐเบเบญเบ™, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเปเบฅเบฐเป€เบซเบ”เบเบฒเบ™เบ•เบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบˆเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเปƒเบ™เบฅเบฐเบ”เบฑเบšเปเบ•เปˆเบฅเบฐเป€เบŸเบฃเบก, เปเบฅเบฐ synchronizing เบฎเบนเบšเบžเบฒเบšเบเบฑเบš flash. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเบฑเบšเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบซเบผเบฒเบเป†เบ•เบปเบงเปƒเบ™เบฅเบฐเบšเบปเบšเปเบฅเบฐเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เบˆเบฑเบšเบžเบฒเบšเบžเป‰เบญเบกเบเบฑเบ™เบ‚เบญเบ‡เบชเบฐเบ•เบฃเบตเบกเบงเบดเบ”เบตเป‚เบญเบซเบผเบฒเบเป†เบญเบฑเบ™เบˆเบฒเบเบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบšเบซเบ™เบถเปˆเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเบฅเบฐเบญเบฝเบ”เบ•เปˆเปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบŠเบธเบกเบงเบดเบ”เบตเป‚เบญ, เปเบฅเบฐเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบฅเบฐเบญเบฝเบ”เบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปเบœเปˆเบ™).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™