libCamera รุ่นแรก ซึ่งเป็นสแต็กสำหรับการรองรับกล้องบน Linux

หลังจากสี่ปีของการพัฒนา การเปิดตัวครั้งแรกของโปรเจ็กต์ libCamera (0.0.1) ได้ถูกสร้างขึ้น โดยนำเสนอชุดซอฟต์แวร์สำหรับการทำงานกับกล้องวิดีโอ กล้อง และเครื่องรับสัญญาณทีวีใน Linux, Android และ ChromeOS ซึ่งยังคงพัฒนา V4L2 API ต่อไป และจะเข้ามาแทนที่ในที่สุด เนื่องจาก API ของไลบรารียังคงเปลี่ยนแปลงและยังไม่เสถียรอย่างสมบูรณ์ โปรเจ็กต์จึงได้รับการพัฒนามาจนถึงขณะนี้โดยไม่ได้แยกรุ่นแต่ละรุ่นออกโดยใช้โมเดลการพัฒนาอย่างต่อเนื่อง เพื่อตอบสนองต่อความจำเป็นในการแจกจ่ายเพื่อติดตามการเปลี่ยนแปลง API ที่ส่งผลต่อความเข้ากันได้ และเพื่อลดความซับซ้อนในการจัดส่งไลบรารีในแพ็คเกจ ตอนนี้จึงมีการตัดสินใจที่จะสร้างการเผยแพร่เป็นระยะซึ่งสะท้อนถึงขอบเขตของการเปลี่ยนแปลง ABI และ API รหัสโครงการเขียนด้วยภาษา C++ และเผยแพร่ภายใต้ใบอนุญาต LGPLv2.1

โครงการนี้ได้รับการพัฒนาโดยนักพัฒนาระบบย่อยมัลติมีเดียของเคอร์เนล Linux ร่วมกับผู้ผลิตกล้องบางราย เพื่อทำให้สถานการณ์เป็นปกติด้วยการรองรับ Linux สำหรับกล้องสำหรับสมาร์ทโฟนและอุปกรณ์ฝังตัวที่เชื่อมโยงกับไดรเวอร์ที่เป็นกรรมสิทธิ์ API V4L2 ซึ่งมีอยู่แล้วในเคอร์เนล Linux ถูกสร้างขึ้นเพื่อทำงานกับกล้องเว็บแบบเดิมที่แยกจากกัน และได้รับการปรับให้เข้ากับแนวโน้มล่าสุดของการย้ายฟังก์ชันการทำงานของ MCU ไปไว้บนไหล่ของ CPU ได้ไม่ดีนัก

ต่างจากกล้องทั่วไปที่การประมวลผลภาพหลักดำเนินการบนโปรเซสเซอร์พิเศษที่สร้างไว้ในกล้อง (MCU) ในอุปกรณ์ฝังตัว เพื่อลดต้นทุน ฟังก์ชันเหล่านี้จะดำเนินการบนไหล่ของ CPU หลัก และต้องใช้ไดรเวอร์ที่ซับซ้อนซึ่ง รวมถึงส่วนประกอบที่ได้รับอนุญาตที่ไม่ใช่โอเพ่นซอร์ส ในฐานะส่วนหนึ่งของโปรเจ็กต์ libCamera ผู้เสนอซอฟต์แวร์โอเพ่นซอร์สและผู้ผลิตฮาร์ดแวร์พยายามสร้างโซลูชันประนีประนอมที่ตอบสนองความต้องการของนักพัฒนาซอฟต์แวร์โอเพ่นซอร์สในด้านหนึ่ง และอีกด้านหนึ่งก็ช่วยปกป้องทรัพย์สินทางปัญญาของผู้ผลิตกล้อง

สแต็กที่นำเสนอโดยไลบรารี libCamera นั้นถูกนำไปใช้ในพื้นที่ผู้ใช้ทั้งหมด เพื่อให้มั่นใจถึงความเข้ากันได้กับสภาพแวดล้อมซอฟต์แวร์และแอปพลิเคชันที่มีอยู่ จึงมีการจัดเตรียมเลเยอร์ความเข้ากันได้สำหรับ V4L API, Gstreamer และ Android Camera HAL ส่วนประกอบที่เป็นกรรมสิทธิ์เฉพาะของกล้องแต่ละตัวสำหรับการโต้ตอบกับอุปกรณ์ได้รับการออกแบบเป็นโมดูลที่ทำงานในกระบวนการแยกกันและโต้ตอบกับไลบรารีผ่าน IPC โมดูลไม่สามารถเข้าถึงอุปกรณ์ได้โดยตรงและเข้าถึงอุปกรณ์ผ่าน API ระดับกลาง ซึ่งคำขอจะได้รับการตรวจสอบ กรอง และจำกัดไว้เพียงการเข้าถึงฟังก์ชันการทำงานที่จำเป็นในการควบคุมกล้องเท่านั้น

ไลบรารียังให้การเข้าถึงอัลกอริธึมสำหรับการประมวลผลและปรับปรุงคุณภาพของรูปภาพและวิดีโอ (การปรับสมดุลสีขาว การลดจุดรบกวน เสถียรภาพวิดีโอ โฟกัสอัตโนมัติ การเลือกการรับแสง ฯลฯ) ซึ่งสามารถเชื่อมต่อในรูปแบบของไลบรารีภายนอกแบบเปิดหรือที่เป็นกรรมสิทธิ์ โมดูลแยก API ให้การเข้าถึงคุณลักษณะต่างๆ เช่น การกำหนดฟังก์ชันการทำงานของกล้องภายนอกและกล้องในตัวที่มีอยู่ การใช้โปรไฟล์อุปกรณ์ การจัดการเหตุการณ์การเชื่อมต่อกล้องและการตัดการเชื่อมต่อ การจัดการการบันทึกข้อมูลกล้องในระดับเฟรมแต่ละรายการ และการซิงโครไนซ์รูปภาพกับแฟลช สามารถทำงานแยกกันกับกล้องหลายตัวในระบบและจัดระเบียบการจับภาพวิดีโอสตรีมหลายรายการพร้อมกันจากกล้องตัวเดียว (เช่น กล้องตัวหนึ่งที่มีความละเอียดต่ำสำหรับการประชุมทางวิดีโอ และอีกตัวหนึ่งที่มีความละเอียดสูงสำหรับการบันทึกถาวรลงดิสก์)

ที่มา: opennet.ru

เพิ่มความคิดเห็น