พารามิเตอร์เซสชัน

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

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

ตัวอย่างและแหล่งที่มา

การใช้งานพารามิเตอร์เซสชันอ้างอิงเป็นส่วนหนึ่งของ cameraHal HAL นี้ใช้ Hal API เดิม การเชื่อมโยง CameraHal ที่ใช้ HIDL API ของกล้องต้องใช้ HIDL ที่เกี่ยวข้อง เซสชันParams รายการสำหรับเข้าถึงพารามิเตอร์เซสชันที่เข้ามาใหม่ระหว่างการกำหนดค่าสตรีม

ไคลเอ็นต์กล้องจะค้นหาคีย์ของพารามิเตอร์เซสชันที่รองรับทั้งหมดได้ด้วยการเรียกใช้ getAvailableSessionKeys() และกำหนดค่าเริ่มต้นได้โดยใช้ setSessionParameters()

การใช้งาน

การใช้งาน CameraHal ต้องป้อนข้อมูล ANDROID_REQUEST_AVAILABLE_SESSION_KEYS ภายในข้อมูลเมตาของกล้องแบบคงที่ที่เกี่ยวข้อง และระบุชุดย่อยของ ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS, ซึ่งมีรายการคีย์ที่ใช้กับแต่ละเฟรมได้ยาก ส่งผลให้เกิดความล่าช้าที่ไม่คาดคิดเมื่อแก้ไขในระหว่างอายุการใช้งานของเซสชันการจับภาพ

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

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

การปรับแต่ง

คุณสามารถกำหนดแท็กในรายการพารามิเตอร์เซสชันที่มีอยู่ซึ่งสร้างขึ้นใน ด้าน CameraHal ฟีเจอร์นี้จะไม่ทำงานหาก CameraHal ออกจาก รายการพารามิเตอร์เซสชันที่ใช้ได้ว่างเปล่า

การตรวจสอบความถูกต้อง

CTS มีกรณีใหม่ต่อไปนี้สำหรับการทดสอบพารามิเตอร์เซสชัน

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

ต้องเลือกพารามิเตอร์เซสชันอย่างระมัดระวัง ค่าไม่ควรเปลี่ยนแปลง หรือระหว่างการกำหนดค่าสตรีมบ่อยๆ พารามิเตอร์ที่เปลี่ยนแปลง เช่น การดึงดูดความตั้งใจ เป็นสิ่งที่ไม่เหมาะสมและเพิ่มลงใน รายการพารามิเตอร์เซสชันอาจทำให้ CTS ดำเนินการไม่สำเร็จเนื่องจากมีข้อมูลภายในมากเกินไป การกำหนดค่าใหม่

การค้นหาเกี่ยวกับการกำหนดค่าเซสชันใหม่

Android 10 ขอแนะนำเซสชันที่ไม่บังคับ ฟีเจอร์การค้นหาการกำหนดค่าใหม่เป็น ปรับปรุงประสิทธิภาพเพราะการกำหนดค่าสตรีมภายในใหม่ซึ่งเป็นผลมาจากเซสชัน การแก้ไขค่าพารามิเตอร์อาจลดประสิทธิภาพได้ เพื่อแก้ไขข้อกังวลนี้ แบบ HIDL ICameraDeviceSession เวอร์ชัน 3.5 ขึ้นไปรองรับ isReconfigurationRequired ซึ่งให้การควบคุมพารามิเตอร์เซสชันภายในอย่างละเอียด ตรรกะการกำหนดค่าใหม่ เมื่อใช้วิธีนี้ การกำหนดค่าสตรีมใหม่อาจเกิดขึ้นได้ ได้แม่นยำเมื่อจำเป็นต้องใช้

อาร์กิวเมนต์สำหรับ isReconfigurationRequired ระบุข้อมูลที่จำเป็นเกี่ยวกับพารามิเตอร์เซสชันที่รอดำเนินการทุกรายการ การปรับเปลี่ยน ทำให้สามารถปรับแต่งอุปกรณ์เฉพาะได้หลากหลายประเภท

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

การใช้งาน

หากต้องการรองรับการค้นหาเกี่ยวกับการกำหนดค่าเซสชันใหม่ คุณต้องใช้พารามิเตอร์ isReconfigurationRequired วิธีตรวจสอบว่าต้องมีการกำหนดค่าสตรีมใหม่ ให้เสร็จสมบูรณ์สำหรับ ค่าพารามิเตอร์เซสชัน

หากลูกค้าเปลี่ยนค่าของพารามิเตอร์เซสชันที่โฆษณา กล้อง จะเรียกใช้ isReconfigurationRequired ขึ้นอยู่กับค่าเฉพาะ HAL จะเป็นตัวกำหนดว่าฟิลด์ ต้องมีการกำหนดค่าสตรีมใหม่ หาก HAL แสดง false กล้อง จะข้ามการกำหนดค่าภายในใหม่ หาก HAL แสดงผล true ค่า เฟรมเวิร์กจะกำหนดค่าสตรีมใหม่และส่งผ่านค่าพารามิเตอร์เซสชันใหม่ ตามนั้น

เฟรมเวิร์กอาจเรียกใช้เมธอด isReconfigurationRequired ได้ในบางครั้ง ก่อนที่จะมีการส่งคำขอที่มีพารามิเตอร์ใหม่ไปยัง HAL และคำขอ จะสามารถยกเลิกได้ก่อนที่จะส่งข้อมูลนี้ ดังนั้น HAL ต้องไม่ใช้ข้อมูลดังกล่าว เปลี่ยนลักษณะการทำงานของเมธอดได้ไม่ว่าในลักษณะใดก็ตาม

การใช้งาน HAL ต้องเป็นไปตามข้อกำหนดต่อไปนี้

  • เฟรมเวิร์กต้องเรียกใช้เมธอด isReconfigurationRequired ได้ เมื่อใดก็ได้หลังจากการกำหนดค่าเซสชันที่มีการใช้งาน
  • ต้องไม่มีผลกระทบต่อประสิทธิภาพของคำขอกล้องที่รอดำเนินการ ใน ต้องไม่มีข้อบกพร่องหรือความล่าช้าในระหว่างกล้อง สตรีมมิง

การใช้งานอุปกรณ์และ HAL ต้องเป็นไปตามประสิทธิภาพต่อไปนี้ ข้อกำหนด

  • ต้องไม่มีการเปลี่ยนแปลงการตั้งค่ากล้องของฮาร์ดแวร์และซอฟต์แวร์
  • ต้องไม่มีผลกระทบต่อประสิทธิภาพของกล้อง

isReconfigurationRequired มีอาร์กิวเมนต์ต่อไปนี้

  • oldSessionParams: พารามิเตอร์เซสชันจากเซสชันก่อนหน้า โดยทั่วไปจะใช้พารามิเตอร์เซสชันที่มีอยู่
  • newSessionParams: พารามิเตอร์เซสชันใหม่ที่กำหนดโดยไคลเอ็นต์

รหัสสถานะการคืนสินค้าที่คาดไว้มีดังนี้

  • OK: การค้นหาจำเป็นต้องกำหนดค่าใหม่สำเร็จแล้ว
  • METHOD_NOT_SUPPORTED: อุปกรณ์กล้องไม่รองรับ ใหม่
  • INTERNAL_ERROR: ไม่สามารถดำเนินการค้นหาการกำหนดค่าใหม่ได้เนื่องจาก ข้อผิดพลาดภายใน

ค่าผลลัพธ์มีดังนี้

  • true: ต้องมีการกำหนดค่าสตรีมใหม่
  • false: ไม่จำเป็นต้องกำหนดค่าสตรีมใหม่

หากต้องการละเว้นคำค้นหาการกำหนดค่าเซสชันใหม่ HAL จะแสดงผล METHOD_NOT_SUPPORTED หรือ false การดำเนินการนี้ส่งผลให้บริการกล้องเป็นค่าเริ่มต้น พฤติกรรมที่มีการเรียกใช้การกำหนดค่าใหม่ของสตรีมในพารามิเตอร์เซสชันแต่ละรายการ เปลี่ยน

การตรวจสอบความถูกต้อง

ตรวจสอบฟีเจอร์การค้นหาการกำหนดค่าเซสชันใหม่ได้โดยใช้การทดสอบ VTS เคสใน CameraHidlTest#configureStreamsWithSessionParameters