Android มีฟีเจอร์ที่ช่วยให้ไคลเอ็นต์กล้อง เพื่อเลือกกล้องที่ดีที่สุด สตรีมสำหรับกรณีการใช้งานที่เฉพาะเจาะจง และเพื่อให้แน่ใจว่าสตรีมแบบผสม อุปกรณ์กล้องรองรับ การกำหนดค่าสตรีมหมายถึง สตรีมจากกล้องที่กำหนดค่าไว้ในอุปกรณ์กล้องและชุดสตรีมหมายถึง ไปยังชุดสตรีมอย่างน้อย 1 ชุดที่กำหนดค่าไว้ในอุปกรณ์กล้อง สำหรับข้อมูลเพิ่มเติมใน ฟีเจอร์เหล่านี้ให้ดู การกำหนดค่าสตรีมที่แนะนำ และ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์
การใช้งานอ้างอิง
มีการใช้ข้อมูลอ้างอิงฝั่งผู้ให้บริการสำหรับการกำหนดค่าที่แนะนำ สตรีมและ API เพื่อค้นหาฟีเจอร์ชุดค่าผสมของสตรีม คุณดูการใช้งานนี้ได้ที่ QCamera3HWI.cpp
การกำหนดค่าสตรีมที่แนะนำ
ผู้ให้บริการกล้องสามารถโฆษณาการกำหนดค่าสตรีมที่แนะนำสำหรับการใช้งานที่เฉพาะเจาะจงได้ กับไคลเอ็นต์กล้อง การกําหนดค่าสตรีมที่แนะนําเหล่านี้ ซึ่งเป็นชุดย่อยของ StreamConfigurationMap จะช่วยให้ไคลเอ็นต์กล้องเลือกการกําหนดค่าที่เหมาะสมที่สุดได้
แม้ว่า StreamConfigurationMap จะให้ข้อมูลการกำหนดค่าสตรีมที่ละเอียดถี่ถ้วนแก่ไคลเอ็นต์กล้อง ไม่ได้ให้ข้อมูลเกี่ยวกับประสิทธิภาพ พลังงาน หรือประสิทธิภาพ ผลกระทบของการเลือกสตรีมหนึ่งมากกว่าอีกสตรีมหนึ่ง ไคลเอ็นต์กล้องสามารถเลือกการกำหนดค่าสตรีมได้อย่างเต็มที่จากการกำหนดค่าสตรีมทั้งหมดที่เป็นไปได้ แต่ในหลายกรณี การดำเนินการนี้ส่งผลให้ไคลเอ็นต์ใช้การกำหนดค่ากล้องและแอปที่ไม่เหมาะสมซึ่งทำให้การค้นหาที่ละเอียดถี่ถ้วนใช้เวลานาน
ตัวอย่างเช่น แม้ว่ารูปแบบ YUV ที่ประมวลผลบางรูปแบบจะต้องใช้และ อุปกรณ์กล้องอาจไม่รองรับในตัวสำหรับรูปแบบเหล่านี้ ซึ่งส่งผลให้มีการประมวลผลเพิ่มเติมสำหรับการแปลงรูปแบบและลดประสิทธิภาพ ขนาดและสัดส่วนการแสดงผลที่เกี่ยวข้องอาจมีผลเช่นเดียวกัน ซึ่งทำให้ขนาดบางอย่างเป็นขนาดที่ดีกว่าในแง่ของกำลังและประสิทธิภาพ
แผนที่การกําหนดค่าสตรีมที่คุณแนะนําไม่จำเป็นต้องครอบคลุมเมื่อเทียบกับ StreamConfigurationMap แผนที่การกําหนดค่าที่แนะนําต้องเป็นไปตามข้อกําหนดในส่วนการใช้งาน และสามารถรวมรูปแบบ ขนาด หรือค่าอื่นๆ ที่มีอยู่ใน StreamConfigurationMap รูปแบบ ขนาด หรือค่าอื่นๆ ที่ซ่อนอยู่ซึ่งไม่พบใน StreamConfigurationMap ไม่สามารถรวมอยู่ในแมปการกำหนดค่าสตรีมที่แนะนำ
การทดสอบทั้งหมดจะไม่เปลี่ยนแปลงและไม่ผ่อนปรนตามที่แนะนำ การกำหนดค่าสตรีม
การกําหนดค่าสตรีมที่แนะนําซึ่งได้จากการติดตั้งใช้งานกล้องนั้นไม่บังคับ และไคลเอ็นต์กล้องจะละเว้นได้
การใช้งาน
ทำตามขั้นตอนต่อไปนี้เพื่อใช้ฟีเจอร์นี้
รายการข้อมูลเมตา
หากต้องการเปิดใช้ฟีเจอร์นี้ HAL ของกล้องจะต้องป้อนข้อมูลแบบคงที่ต่อไปนี้ รายการข้อมูลเมตา:
android.scaler.availableRecommendedStreamConfigurations
: กลุ่มย่อยของการกําหนดค่าสตรีมที่แนะนําสําหรับ Use Case ที่เฉพาะเจาะจง การประกาศใช้บิตแมปที่ระบุกรณีการใช้งานที่แนะนำในรูปแบบ[1 << PREVIEW | 1 << RECORD..]
กรณีการใช้งานได้ขยาย ปกติ (รูปแบบ, ความกว้าง, ความสูง, อินพุต) กับ 1 รายการอื่นๆ เพิ่มเติม ไม่อนุญาตให้ใช้ Use Case สาธารณะที่ไม่มีอยู่จริงหรือบิตอื่นๆ ที่ตั้งค่าไว้ภายในช่วง[PUBLIC_END, VENDOR_START]
ข้อมูลนี้จัดเก็บอยู่ใน
availableRecommendedStreamConfigurations
แท็กข้อมูลเมตาตัวอย่างต่อไปนี้แสดงอาร์เรย์สำหรับการกำหนดค่าสตรีมที่แนะนำสำหรับอุปกรณ์กล้องที่รองรับเฉพาะ 4K และ 1080p โดยแนะนำให้ใช้ความละเอียดทั้ง 2 ระดับสำหรับการบันทึกวิดีโอ แต่แนะนำให้ใช้ความละเอียด 1080p เท่านั้นสำหรับการแสดงตัวอย่าง
[3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT), 1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
android.depth.availableRecommendedDepthStreamConfigurations
(ใช้ได้เฉพาะเมื่ออุปกรณ์รองรับเท่านั้น): พื้นที่ข้อมูลความลึกที่แนะนำ การกำหนดค่าสตรีมที่แนะนำสำหรับอุปกรณ์กล้องนี้ คล้ายกับ บิตแมปกรณีการใช้งานเพิ่มเติมจะระบุข้อมูลที่แนะนำ กรณีการใช้งานข้อมูลนี้จัดเก็บอยู่ใน
availableRecommendedInputOutputFormatsMap
แท็กข้อมูลเมตาandroid.scaler.availableRecommendedInputOutputFormatsMap
(พร้อมใช้งานก็ต่อเมื่ออุปกรณ์รองรับเท่านั้น): การแมปรูปแบบรูปภาพที่แนะนำสำหรับอุปกรณ์กล้องนี้สำหรับสตรีมอินพุตกับรูปแบบเอาต์พุตที่สอดคล้องกันข้อมูลนี้จัดเก็บไว้ในแท็กเมตาข้อมูล
availableRecommendedDepthStreamConfigurations
ข้อมูลนี้มีไว้สําหรับไคลเอ็นต์กล้องผ่านทาง recommendedStreamConfigurationMap API
Use Case ที่จำเป็น
คุณต้องระบุการกำหนดค่าสตรีมที่แนะนำสำหรับกรณีการใช้งานต่อไปนี้ และเป็นไปตามข้อกำหนดที่เกี่ยวข้อง
Use Case | ข้อกำหนด |
---|---|
PREVIEW |
ตัวอย่างต้องมีเฉพาะการกำหนดค่าสตรีมที่ได้รับการประมวลผลแบบไม่หยุดชะงักซึ่งมีรูปแบบเอาต์พุต เช่น YUV_420_888 และ IMPLEMENTATION_DEFINED |
RECORD |
ระเบียนวิดีโอต้องมีการกำหนดค่าสตรีมที่ตรงกับโปรไฟล์สื่อที่รองรับซึ่งโฆษณาไว้ในรูปแบบ IMPLEMENTATION_DEFINED |
VIDEO_SNAPSHOT |
ภาพนิ่งของวิดีโอต้องมีการกําหนดค่าสตรีมที่มีขนาดใหญ่อย่างน้อยเท่ากับความละเอียดสูงสุดของ RECORD และต้องใช้เฉพาะรูปแบบ/พื้นที่ข้อมูลที่รวม BLOB + DATASPACE_JFIF (JPEG) การกำหนดค่า ไม่ควรทำให้การแสดงตัวอย่างบกพร่อง และควรจะทำงานที่ 30 fps ได้ |
SNAPSHOT |
การกําหนดค่าสตรีมภาพรวมต้องมีอย่างน้อย 1 รายการที่มีขนาดใกล้เคียงกับ android.sensor.info.activeArraySize โดยใช้รูปแบบ/พื้นที่ข้อมูลที่รวม BLOB + DATASPACE_JFIF (JPEG) โดยคำนึงถึง
ข้อจำกัดเกี่ยวกับสัดส่วนภาพ การจัดข้อความ และข้อจำกัดอื่นๆ เฉพาะผู้ให้บริการ
พื้นที่ของขนาดที่แนะนำสูงสุดไม่ควรน้อยกว่า 97% ของเซ็นเซอร์
สำหรับขนาดอาร์เรย์ |
ZSL (หากรองรับ) |
หากอุปกรณ์กล้องรองรับ การกำหนดค่าสตรีมอินพุตที่แนะนำจะต้องโฆษณาร่วมกับรูปแบบเอาต์พุตอื่นๆ ที่ประมวลผลแล้วหรือหยุดชะงักเท่านั้น |
RAW (หากรองรับ) |
หากอุปกรณ์กล้องรองรับ การกำหนดค่าสตรีม RAW ที่แนะนำต้องมีเฉพาะรูปแบบเอาต์พุตแบบ RAW เท่านั้น |
Use Case อื่นๆ
คุณสามารถระบุสตรีมการกำหนดค่าที่แนะนำเพิ่มเติมสำหรับ Use Case ได้ ในการใช้งานของคุณโดยเฉพาะ
การตรวจสอบความถูกต้อง
หากต้องการทดสอบการใช้งานสตรีมการกำหนดค่าที่แนะนำ ให้เรียกใช้ การทดสอบ CTS และ VTS ต่อไปนี้
API เพื่อค้นหาชุดค่าผสมของฟีเจอร์
เริ่มตั้งแต่ Android 15 เป็นต้นไป แพลตฟอร์ม Android จะมอบ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์ API นี้ช่วยให้ไคลเอ็นต์กล้องค้นหาได้ อุปกรณ์สามารถรองรับชุดฟีเจอร์ตามที่ระบุ API นี้ เพราะ Camera2 API สร้าง คุณลักษณะที่ต่างกัน เช่น 4K, 60fps วิดีโอ HDR, UltraHDR, การซูมภาพมุมกว้างพิเศษ และการป้องกันภาพสั่นไหวเป็นการควบคุมแบบตั้งฉาก
ข้อกำหนด
เพื่อให้ใช้ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์ได้ HAL ของกล้องต้องใช้
เวอร์ชัน 3 ของอินเทอร์เฟซ ICameraDevice
โปรดดูรายละเอียดที่
การใช้งาน
เมื่อรองรับ API ระบบกันภาพสั่นสำหรับตัวอย่างต้องตั้งขึ้นเพื่อ
ฟีเจอร์อื่นๆ ซึ่งหมายความว่าสำหรับอุปกรณ์กล้องที่รองรับระบบกันภาพสั่นในตัวอย่าง ค่าที่แสดงผลของ isStreamCombinationWithSettingsSupported
สำหรับชุดค่าผสมหนึ่งๆ ต้องเป็นค่าเดียวกันเมื่อระบบกันภาพสั่นในตัวอย่างเปิดหรือปิดอยู่ ซึ่งจะช่วยลดพื้นที่การค้นหาสำหรับการค้นหาชุดค่าผสมของฟีเจอร์
นอกจากนี้ สำหรับประสิทธิภาพสื่อระดับ 15 กล้องหลังหลักต้องรองรับการลดภาพสั่นในการแสดงตัวอย่างด้วยการแสดงตัวอย่าง HLG10 10 บิตสำหรับการแสดงตัวอย่าง 1080p และ 720p รวมถึง JPEG ขนาดสูงสุด ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดเหล่านี้ได้ที่ ส่วน 2.2.7.2 กล้อง ของ CDD
การใช้งาน
หากต้องการรองรับ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์ ให้ใช้รายการต่อไปนี้
การรวมฟีเจอร์ API การค้นหาในเวอร์ชัน 3 ของ
ICameraDevice
constructDefaultRequestSettings
: สร้างการตั้งค่าเริ่มต้นสำหรับCaptureRequest
ประเภทที่ระบุ HAL ใช้การใช้งานICameraDeviceSession::constructDefaultRequestSettings
ได้isStreamCombinationWithSettingsSupported
ตรวจสอบการรองรับอุปกรณ์สำหรับชุดค่าผสมของสตรีมจากกล้องที่ระบุ พร้อมพารามิเตอร์เซสชันและคีย์CaptureRequest
เพิ่มเติม ต้อง แสดงผลtrue
สำหรับชุดค่าผสมที่รองรับ และfalse
สำหรับที่ไม่รองรับ ฟีเจอร์ต่างๆ ร่วมกัน HAL สามารถใช้การติดตั้งใช้งานisStreamCombinationSupported
และเพิ่มการรองรับเพื่อตรวจสอบการตั้งค่าCaptureRequest
ที่ส่งผ่านในsessionParams
getSessionCharacteristics
: รับการสนับสนุน การรวมสตรีมที่มีพารามิเตอร์เซสชัน และแสดงผล ลักษณะเฉพาะเฉพาะเซสชันINFO_SESSION_CONFIGURATION_QUERY_VERSION
แสดงการกำหนดค่าเซสชันที่ใช้บ่อยทั้งหมด การกําหนดค่าเหล่านี้ได้รับการยืนยันโดยการทดสอบการปฏิบัติตามข้อกําหนด
สำหรับอินเทอร์เฟซ ICameraDevice
เวอร์ชันที่ต่ำกว่าเวอร์ชัน 3 HAL ควรใช้วิธี isStreamCombinationSupported
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับชุดค่าผสมฟีเจอร์ที่ค้นหาโดย API ได้ที่
เอกสารประกอบเกี่ยวกับ sessionConfigurationQueryVersion
ใน
system/media/camera/docs/metadata_definitions.xml
สำหรับการนำฟีเจอร์นี้ไปใช้อ้างอิง โปรดดู
hardware/google/camera/devices/EmulatedCamera/hwl/
API สาธารณะ
แอปสามารถใช้ API สาธารณะต่อไปนี้เพื่อค้นหาชุดค่าผสมฟีเจอร์ที่รองรับสำหรับอุปกรณ์
CameraDevice.CameraDeviceSetup
ตัวแทนแบบจํากัดของCameraDevice
ที่ใช้ค้นหาฟีเจอร์ได้ ชุดค่าผสมโดยไม่ต้องมีอินสแตนซ์CameraDevice
getCameraDeviceSetup
รับออบเจ็กต์CameraDeviceSetup
สำหรับรหัสกล้องที่กำหนดหากisCameraDeviceSetupSupported
ส่งคืนtrue
INFO_SESSION_CONFIGURATION_QUERY_VERSION
รองรับการค้นหาชุดค่าผสมฟีเจอร์หากค่านี้คือVANILLA_ICE_CREAM
หรือสูงกว่าOutputConfiguration
คลาสที่อธิบายเอาต์พุตของกล้องถ่ายรูป ซึ่งสามารถมีพื้นผิวที่มีการเลื่อนสำหรับ จุดประสงค์ของการค้นหาชุดค่าผสมคุณลักษณะที่มีเวลาในการตอบสนองต่ำSessionConfiguration
: คลาสยูทิลิตีที่อธิบายการกําหนดค่าเซสชัน ซึ่งรวมถึงชุดค่าผสมสตรีมและพารามิเตอร์เซสชัน ซึ่งสามารถใช้สําหรับการค้นหาชุดค่าผสมฟีเจอร์
การตรวจสอบความถูกต้อง
หากต้องการตรวจสอบการติดตั้งใช้งานฟีเจอร์นี้ ให้ใช้การทดสอบ VTS, CTS และ ITS ของกล้อง (โปรแกรมตรวจสอบ CTS) ต่อไปนี้
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
กล้องไอที