การอ้างอิงโครงสร้าง camera3_callback_ops

การอ้างอิงโครงสร้าง camera3_callback_ops

#include < camera3.h >

เขตข้อมูล

เป็นโมฆะ(* process_capture_result ) (const struct camera3_callback_ops *, const camera3_capture_result_t * ผลลัพธ์)
เป็นโมฆะ(* แจ้งเตือน )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

คำอธิบายโดยละเอียด

คำจำกัดความที่บรรทัด 2397 ของไฟล์ camera3.h

เอกสารภาคสนาม

เป็นโมฆะ (* แจ้งเตือน) (const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

แจ้ง:

การเรียกกลับการแจ้งเตือนแบบอะซิงโครนัสจาก HAL เริ่มทำงานด้วยเหตุผลหลายประการ สำหรับข้อมูลที่เป็นอิสระจากการจับเฟรมหรือที่ต้องใช้เวลาเฉพาะเจาะจงเท่านั้น ความเป็นเจ้าของโครงสร้างข้อความยังคงเป็นของ HAL และข้อความจะต้องถูกต้องในช่วงเวลาของการโทรนี้เท่านั้น

หลายเธรดอาจเรียก notify() พร้อมกัน

<= CAMERA_DEVICE_API_VERSION_3_1:

การแจ้งเตือนสำหรับการเริ่มต้นการเปิดเผยสำหรับคำขอที่กำหนดจะต้องส่งโดย HAL ก่อนที่จะทำการเรียกครั้งแรกไปที่ process_capture_result() สำหรับคำขอนั้น

>= CAMERA_DEVICE_API_VERSION_3_2:

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


ต้องการประสิทธิภาพการทำงาน:

นี่คือการโทรแบบไม่บล็อค กรอบงานจะส่งคืนการโทรนี้ใน 5 มิลลิวินาที

คำจำกัดความที่บรรทัด 2499 ของไฟล์ camera3.h

เป็นโมฆะ (* process_capture_result) (const struct camera3_callback_ops *, const camera3_capture_result_t * ผลลัพธ์)

กระบวนการ_จับภาพ_ผลลัพธ์:

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

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

ลำดับของการส่งคืนข้อมูลเมตาและบัฟเฟอร์สำหรับผลลัพธ์เดียวนั้นไม่สำคัญ แต่บัฟเฟอร์สำหรับสตรีมที่กำหนดจะต้องส่งคืนในลำดับ FIFO ดังนั้นบัฟเฟอร์สำหรับคำขอ 5 สำหรับสตรีม A จะต้องถูกส่งกลับก่อนบัฟเฟอร์สำหรับคำขอ 6 สำหรับสตรีม A เสมอ นอกจากนี้ยังใช้กับข้อมูลเมตาของผลลัพธ์ด้วย ข้อมูลเมตาสำหรับคำขอ 5 จะต้องส่งคืนก่อนข้อมูลเมตาสำหรับคำขอ 6

อย่างไรก็ตาม สตรีมที่แตกต่างกันเป็นอิสระจากกัน ดังนั้นจึงเป็นที่ยอมรับและคาดว่าบัฟเฟอร์สำหรับคำขอ 5 สำหรับสตรีม A อาจถูกส่งคืนหลังจากบัฟเฟอร์สำหรับคำขอ 6 สำหรับสตรีม B นั้น และเป็นที่ยอมรับได้ว่าข้อมูลเมตาผลลัพธ์สำหรับคำขอ 6 สำหรับสตรีม B จะถูกส่งคืนก่อนที่บัฟเฟอร์สำหรับคำขอ 5 สำหรับสตรีม A จะถูกส่งคืน

HAL ยังคงเป็นเจ้าของโครงสร้างผลลัพธ์ ซึ่งจะต้องถูกต้องเท่านั้นจึงจะเข้าถึงได้ในระหว่างการโทรนี้ กรอบงานจะคัดลอกสิ่งที่ต้องการก่อนที่การโทรนี้จะส่งกลับ

ยังไม่จำเป็นต้องเติมบัฟเฟอร์เอาต์พุต เฟรมเวิร์กจะรอบนรั้วการซิงค์การปล่อยบัฟเฟอร์สตรีมก่อนที่จะอ่านข้อมูลบัฟเฟอร์ ดังนั้น HAL ควรเรียกเมธอดนี้โดยเร็วที่สุด แม้ว่าบัฟเฟอร์เอาท์พุตบางส่วนหรือทั้งหมดยังคงถูกเติมอยู่ก็ตาม HAL จะต้องรวมรั้วการซิงค์รีลีสที่ถูกต้องไว้ในแต่ละรายการบัฟเฟอร์สตรีม output_buffers หรือ -1 หากบัฟเฟอร์สตรีมนั้นเต็มแล้ว

หากไม่สามารถสร้างบัฟเฟอร์ผลลัพธ์สำหรับคำขอได้ HAL ควรส่งคืนบัฟเฟอร์ข้อมูลเมตาที่ว่างเปล่า แต่ยังคงจัดเตรียมบัฟเฟอร์เอาต์พุตและรั้วการซิงค์ไว้ นอกจากนี้ จะต้องเรียก notify() ด้วยข้อความ ERROR_RESULT

หากไม่สามารถเติมบัฟเฟอร์เอาต์พุตได้ จะต้องตั้งค่าฟิลด์สถานะเป็น STATUS_ERROR นอกจากนี้ จะต้องเรียก notify() ด้วยข้อความ ERROR_BUFFER

หากการดักจับทั้งหมดล้มเหลว ยังคงจำเป็นต้องเรียกใช้เมธอดนี้เพื่อส่งคืนบัฟเฟอร์เอาต์พุตไปยังเฟรมเวิร์ก สถานะบัฟเฟอร์ทั้งหมดควรเป็น STATUS_ERROR และข้อมูลเมตาผลลัพธ์ควรเป็นบัฟเฟอร์ว่างเปล่า นอกจากนี้ จะต้องเรียก notify() ด้วยข้อความ ERROR_REQUEST ในกรณีนี้ ไม่ควรส่งข้อความ ERROR_RESULT/ERROR_BUFFER แต่ละข้อความ

ต้องการประสิทธิภาพการทำงาน:

นี่คือการโทรแบบไม่บล็อค กรอบงานจะส่งคืนการโทรนี้ใน 5 มิลลิวินาที

เวลาแฝงไปป์ไลน์ (ดูคำจำกัดความ S7) ควรน้อยกว่าหรือเท่ากับ 4 ช่วงเวลาเฟรม และต้องน้อยกว่าหรือเท่ากับ 8 ช่วงเวลาเฟรม

คำจำกัดความที่บรรทัด 2466 ของไฟล์ camera3.h


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
  • ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / กล้อง 3.h