การกำหนดค่าสตรีม

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

กล้องไอที