Android มีฟีเจอร์ที่ช่วยให้ไคลเอ็นต์กล้อง เพื่อเลือกกล้องที่ดีที่สุด สตรีมสำหรับกรณีการใช้งานที่เฉพาะเจาะจง และเพื่อให้แน่ใจว่าสตรีมแบบผสม อุปกรณ์กล้องรองรับ การกำหนดค่าสตรีมหมายถึง สตรีมจากกล้องที่กำหนดค่าไว้ในอุปกรณ์กล้องและชุดสตรีมหมายถึง ไปยังชุดสตรีมอย่างน้อย 1 ชุดที่กำหนดค่าไว้ในอุปกรณ์กล้อง สำหรับข้อมูลเพิ่มเติมใน ฟีเจอร์เหล่านี้ให้ดู การกำหนดค่าสตรีมที่แนะนำ และ API เพื่อค้นหาชุดค่าผสมของฟีเจอร์
การใช้งานข้อมูลอ้างอิง
มีการใช้ข้อมูลอ้างอิงฝั่งผู้ให้บริการสำหรับการกำหนดค่าที่แนะนำ สตรีมและ API เพื่อค้นหาฟีเจอร์ชุดค่าผสมของสตรีม คุณดูข้อมูลนี้ได้ การใช้งานที่ Qcamera3HWI.cpp
การกำหนดค่าสตรีมที่แนะนำ
ผู้ให้บริการกล้องสามารถโฆษณาการกำหนดค่าสตรีมที่แนะนำสำหรับการใช้งานที่เฉพาะเจาะจงได้ กับไคลเอ็นต์กล้อง การกำหนดค่าสตรีมที่แนะนำเหล่านี้ เซ็ตย่อยของ StreamConfigurationMap สามารถช่วยไคลเอ็นต์กล้องเลือกการกำหนดค่าที่เหมาะสมได้
แม้ว่า StreamConfigurationMap จะให้ข้อมูลการกำหนดค่าสตรีมที่ละเอียดถี่ถ้วนแก่ไคลเอ็นต์กล้อง ไม่ได้ให้ข้อมูลเกี่ยวกับประสิทธิภาพ พลังงาน หรือประสิทธิภาพ ผลกระทบของการเลือกสตรีมหนึ่งมากกว่าอีกสตรีมหนึ่ง ไคลเอ็นต์กล้องจะเลือก จากการกำหนดค่าสตรีมที่เป็นไปได้ทั้งหมด แต่ในหลายกรณี วิธีนี้ทำให้ ลูกค้าที่ใช้การกำหนดค่ากล้องที่มีประสิทธิภาพต่ำกว่ามาตรฐานและแอปที่ ใช้เวลาค้นหาอย่างละเอียด
ตัวอย่างเช่น แม้ว่ารูปแบบ YUV ที่ประมวลผลบางรูปแบบจะต้องใช้และ อุปกรณ์กล้องอาจไม่รองรับในตัวสำหรับรูปแบบเหล่านี้ ช่วงเวลานี้ ส่งผลให้เกิดการประมวลผลเพิ่มเติมสำหรับการแปลงรูปแบบ และลด ที่มีประสิทธิภาพ ขนาดและสัดส่วนภาพที่สัมพันธ์กัน ผลกระทบที่ทำให้มิติข้อมูลบางอย่างมีประสิทธิภาพดีกว่าในแง่ของประสิทธิภาพ ด้านประสิทธิภาพ
แมปการกำหนดค่าสตรีมที่แนะนำไม่จำเป็นต้องละเอียดถี่ถ้วน เทียบกับ StreamConfigurationMap การจับคู่การกำหนดค่าที่แนะนำต้องเป็นไปตามข้อกำหนดใน การใช้งานจริง และสามารถรวม รูปแบบ ขนาด หรือค่าอื่นๆ ที่มีใน StreamConfigurationMap รูปแบบ ขนาด หรือค่าอื่นๆ ที่ซ่อนอยู่ซึ่งไม่พบใน StreamConfigurationMap ไม่สามารถรวมอยู่ในแมปการกำหนดค่าสตรีมที่แนะนำ
การทดสอบทั้งหมดจะไม่เปลี่ยนแปลงและไม่ผ่อนปรนตามที่แนะนำ การกำหนดค่าสตรีม
การกำหนดค่าสตรีมที่แนะนำซึ่งได้จากการใช้งานกล้องมีดังนี้ ไม่บังคับ และไคลเอ็นต์กล้องจะไม่สนใจตัวเลือกดังกล่าว
การใช้งาน
ทำตามขั้นตอนต่อไปนี้เพื่อใช้ฟีเจอร์นี้
รายการข้อมูลเมตา
หากต้องการเปิดใช้ฟีเจอร์นี้ HAL ของกล้องจะต้องป้อนข้อมูลแบบคงที่ต่อไปนี้ รายการข้อมูลเมตา:
android.scaler.availableRecommendedStreamConfigurations
: ชุดย่อยของการกำหนดค่าสตรีมที่แนะนำสำหรับกรณีการใช้งานที่เจาะจง ใช้บิตแมปที่ระบุกรณีการใช้งานที่แนะนำใน ในรูปแบบ[1 << PREVIEW | 1 << RECORD..]
กรณีการใช้งานได้ขยาย ปกติ (รูปแบบ, ความกว้าง, ความสูง, อินพุต) กับ 1 รายการอื่นๆ เพิ่มเติม กรณีการใช้งานสาธารณะที่ไม่มีอยู่หรือการตั้งค่าบิตอื่นๆ ภายในช่วง[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 ที่จำเป็น
ต้องระบุการกำหนดค่าสตรีมที่แนะนำสำหรับกรณีการใช้งานต่อไปนี้ และมีคุณสมบัติตรงตามข้อกำหนดที่เกี่ยวข้อง ได้แก่
กรณีการใช้งาน | ข้อกำหนด |
---|---|
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 |
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 Verifier) ของกล้อง:
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/cameraDeviceSetupTest.java
กล้องไอที
- cts/apps/cameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/cameraITS/tests/โหมด6/test_session_characteristics_zoom.py