Android มีฟีเจอร์ที่ช่วยให้ไคลเอ็นต์กล้องเลือกสตรีมกล้องที่เหมาะสมที่สุดสำหรับกรณีการใช้งานที่เฉพาะเจาะจง และเพื่อให้มั่นใจว่าอุปกรณ์กล้องรองรับชุดค่าผสมสตรีมบางรายการ การกำหนดค่าสตรีมหมายถึงสตรีมกล้องเดียวที่กำหนดค่าไว้ในอุปกรณ์กล้อง และชุดค่าผสมของสตรีมหมายถึงชุดสตรีมอย่างน้อย 1 ชุดที่กำหนดค่าไว้ในอุปกรณ์กล้อง ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์เหล่านี้ได้ที่การกำหนดค่าสตรีมที่แนะนำและ API ในการค้นหาการผสมผสานฟีเจอร์
การใช้งานอ้างอิง
มีการใช้งานอ้างอิงฝั่งผู้ให้บริการสตรีมการกําหนดค่าที่แนะนําและ API เพื่อค้นหาฟีเจอร์การรวมสตรีม คุณดูการใช้งานนี้ได้ที่ QCamera3HWI.cpp
การกำหนดค่าสตรีมที่แนะนำ
ผู้ให้บริการกล้องสามารถโฆษณาการกำหนดค่าสตรีมที่แนะนำสำหรับกรณีการใช้งานที่เฉพาะเจาะจงแก่ลูกค้ากล้อง การกําหนดค่าสตรีมที่แนะนําเหล่านี้ ซึ่งเป็นชุดย่อยของ StreamConfigurationMap จะช่วยให้ไคลเอ็นต์กล้องเลือกการกําหนดค่าที่เหมาะสมที่สุดได้
แม้ว่า StreamConfigurationMap จะระบุข้อมูลการกำหนดค่าสตรีมอย่างละเอียดให้กับไคลเอ็นต์กล้อง แต่ก็ไม่ได้ให้ข้อมูลเกี่ยวกับผลกระทบด้านประสิทธิภาพ พลังงาน หรือประสิทธิภาพของการเลือกสตรีมหนึ่งแทนอีกสตรีมหนึ่ง ไคลเอ็นต์กล้องสามารถเลือกการกำหนดค่าสตรีมได้อย่างเต็มที่จากการกำหนดค่าสตรีมทั้งหมดที่เป็นไปได้ แต่ในกรณีส่วนใหญ่ การดำเนินการนี้ส่งผลให้ไคลเอ็นต์ใช้การกำหนดค่ากล้องและแอปที่ไม่เหมาะสมซึ่งทำให้การค้นหาที่ละเอียดถี่ถ้วนใช้เวลานาน
ตัวอย่างเช่น แม้ว่าจะต้องใช้และรองรับรูปแบบ YUV ที่ประมวลผลแล้ว แต่อุปกรณ์กล้องอาจไม่รองรับรูปแบบดังกล่าวโดยกำเนิด ซึ่งส่งผลให้มีการประมวลผลเพิ่มเติมสำหรับการแปลงรูปแบบและลดประสิทธิภาพ ขนาดและสัดส่วนการแสดงผลที่เกี่ยวข้องอาจมีผลเช่นเดียวกัน ซึ่งทำให้ขนาดบางอย่างเป็นขนาดที่ควรเลือกใช้ในแง่ของกำลังและประสิทธิภาพ
แผนที่การกําหนดค่าสตรีมที่คุณแนะนําไม่จำเป็นต้องครอบคลุมเมื่อเทียบกับ StreamConfigurationMap แผนที่การกําหนดค่าที่แนะนําต้องเป็นไปตามข้อกําหนดในส่วนการใช้งาน และสามารถรวมรูปแบบ ขนาด หรือค่าอื่นๆ ที่มีอยู่ใน StreamConfigurationMap รูปแบบ ขนาด หรือค่าอื่นๆ ที่ซ่อนอยู่ซึ่งไม่พบใน StreamConfigurationMap จะรวมอยู่ในแผนที่การกําหนดค่าสตรีมที่แนะนําไม่ได้
การทดสอบทั้งหมดจะยังคงเหมือนเดิมและไม่มีการผ่อนปรนตามการกำหนดค่าสตรีมที่แนะนำ
การกำหนดค่าสตรีมที่แนะนำซึ่งได้จากการติดตั้งใช้งานกล้องนั้นไม่บังคับและไคลเอ็นต์กล้องสามารถละเว้นได้
การใช้งาน
ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งใช้งานฟีเจอร์นี้
รายการข้อมูลเมตา
หากต้องการเปิดใช้ฟีเจอร์นี้ HAL ของกล้องต้องป้อนข้อมูลรายการข้อมูลเมตาแบบคงที่ต่อไปนี้
android.scaler.availableRecommendedStreamConfigurations
: กลุ่มย่อยของการกําหนดค่าสตรีมที่แนะนําสําหรับกรณีการใช้งานที่เฉพาะเจาะจง การประกาศใช้บิตแมปที่ระบุกรณีการใช้งานที่แนะนำในรูปแบบ[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
(พร้อมใช้งานเฉพาะในกรณีที่อุปกรณ์รองรับ): การกำหนดค่าสตรีมพื้นที่ข้อมูลเชิงลึกที่แนะนำสำหรับอุปกรณ์กล้องนี้ บิตแมป Use Case เพิ่มเติมจะระบุ Use Case ที่แนะนํา ซึ่งคล้ายกับรายการข้อมูลเมตาด้านบนข้อมูลนี้จัดเก็บไว้ในแท็กเมตาข้อมูล
availableRecommendedInputOutputFormatsMap
android.scaler.availableRecommendedInputOutputFormatsMap
(พร้อมใช้งานก็ต่อเมื่ออุปกรณ์รองรับเท่านั้น): การแมปรูปแบบรูปภาพที่แนะนำสำหรับอุปกรณ์กล้องนี้สำหรับสตรีมอินพุตกับรูปแบบเอาต์พุตที่สอดคล้องกันข้อมูลนี้จัดเก็บไว้ในแท็กเมตาข้อมูล
availableRecommendedDepthStreamConfigurations
ข้อมูลนี้พร้อมให้บริการแก่ไคลเอ็นต์กล้องผ่าน RecommendedStreamConfigurationMap API
กรณีการใช้งานที่จำเป็น
คุณต้องระบุการกำหนดค่าสตรีมที่แนะนำสำหรับกรณีการใช้งานต่อไปนี้ และเป็นไปตามข้อกำหนดที่เกี่ยวข้อง
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 เท่านั้น |
กรณีการใช้งานอื่นๆ
คุณสามารถระบุสตรีมการกําหนดค่าที่แนะนําเพิ่มเติมสําหรับกรณีการใช้งานที่เจาะจงสําหรับการติดตั้งใช้งาน
การตรวจสอบความถูกต้อง
หากต้องการทดสอบการใช้งานสตรีมการกําหนดค่าที่แนะนํา ให้ทําการทดสอบ CTS และ VTS ต่อไปนี้
API สำหรับการค้นหาชุดค่าผสมของฟีเจอร์
ตั้งแต่ Android 15 เป็นต้นไป แพลตฟอร์ม Android จะมี API สำหรับการค้นหาชุดค่าผสมของฟีเจอร์ API นี้ช่วยให้ไคลเอ็นต์กล้องสามารถสอบถามว่าอุปกรณ์รองรับชุดค่าผสมของฟีเจอร์ที่ระบุหรือไม่ API นี้จําเป็นเนื่องจาก Camera2 API จำลองฟีเจอร์ต่างๆ เช่น 4K, 60 fps, วิดีโอ HDR, UltraHDR, การซูมมุมกว้างพิเศษ และระบบกันภาพสั่นเป็นการควบคุมแบบออโตรโกนอล
ข้อกำหนด
HAL ของกล้องต้องใช้อินเทอร์เฟซ ICameraDevice
เวอร์ชัน 3 เพื่อรองรับ API ในการค้นหาการผสมผสานฟีเจอร์ โปรดดูรายละเอียดในส่วนการติดตั้งใช้งาน
เมื่อรองรับ API นี้แล้ว วิดีโอตัวอย่างต้องไม่รบกวนฟีเจอร์อื่นๆ ซึ่งหมายความว่าสำหรับอุปกรณ์กล้องที่รองรับระบบกันภาพสั่นในตัวอย่าง ค่าที่แสดงผลของ isStreamCombinationWithSettingsSupported
สำหรับชุดค่าผสมหนึ่งๆ ต้องเป็นค่าเดียวกันเมื่อระบบกันภาพสั่นในตัวอย่างเปิดหรือปิดอยู่ ซึ่งจะช่วยลดพื้นที่การค้นหาสำหรับการค้นหาชุดค่าผสมของฟีเจอร์
นอกจากนี้ สำหรับประสิทธิภาพสื่อระดับ 15 กล้องหลังหลักต้องรองรับการลดภาพสั่นในการแสดงตัวอย่างด้วยการแสดงตัวอย่าง HLG10 10 บิตสำหรับการแสดงตัวอย่าง 1080p และ 720p รวมถึง JPEG ขนาดสูงสุด ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดเหล่านี้ได้ในส่วน2.2.7.2 กล้อง ของ CDD
การใช้งาน
หากต้องการใช้ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์ ให้ใช้ API การค้นหาชุดค่าผสมของฟีเจอร์ต่อไปนี้ใน ICameraDevice
เวอร์ชัน 3
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
ITS ของกล้อง
- cts/apps/CameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py