อุปกรณ์ที่ใช้ Android 10 รองรับรูปแบบรูปภาพบีบอัด HEIC ซึ่งเป็น แบรนด์เฉพาะของรูปแบบไฟล์รูปภาพประสิทธิภาพสูง (HEIF) ที่มีการเข้ารหัสวิดีโอประสิทธิภาพสูง (HEVC) ตามที่ระบุไว้ใน ISO/IEC 23008-12 รูปภาพที่เข้ารหัส HEIC มีคุณภาพดีกว่าและมีขนาดไฟล์เล็กกว่าเมื่อเทียบกับไฟล์ JPEG
ระบบจะสร้างรูปภาพ HEIC โดยเฟรมเวิร์กของกล้องจะขอรูปภาพที่ไม่ได้บีบอัด จาก HAL ของกล้อง แล้วส่งไปยังระบบย่อยของสื่อเพื่อให้ ตัวเข้ารหัส HEIC หรือ HEVC เข้ารหัส
ข้อกำหนด
หากต้องการรองรับรูปแบบรูปภาพ HEIC อุปกรณ์ของคุณต้องมีตัวเข้ารหัสฮาร์ดแวร์
ที่รองรับ
MIMETYPE_IMAGE_ANDROID_HEIC
หรือ
MIMETYPE_VIDEO_HEVC
ที่มี
โหมดคุณภาพคงที่
การใช้งาน
หากต้องการรองรับรูปแบบรูปภาพ HEIC ในอุปกรณ์ ให้ใช้ตัวแปลงสัญญาณ HEIC/HEVC และรองรับการกำหนดค่าสตรีมที่จำเป็น ซึ่งได้แก่ สตรีม IMPLEMENTATION_DEFINED/YUV และสตรีมส่วนของแอป JPEG
สื่อ
ใช้ตัวแปลงสัญญาณ HEIC/HEVC ในโหมดคุณภาพคงที่ (CQ) สำหรับฮาร์ดแวร์ที่เกี่ยวข้องดังนี้
- ตัวแปลงสัญญาณประเภท HEVC ใช้รูปแบบ
IMPLEMENTATION_DEFINEDที่มีการใช้งานGRALLOC_USAGE_HW_VIDEO_ENCODERหรือรูปแบบHAL_PIXEL_FORMAT_YCBCR_420_888ขึ้นอยู่กับขนาดรูปภาพ - ตัวแปลงสัญญาณประเภท HEIC ใช้รูปแบบ
IMPLEMENTATION_DEFINEDที่มีการใช้งานGRALLOC_USAGE_HW_IMAGE_ENCODER
กล้อง
ในข้อมูลเมตาแบบคงที่ ให้ตั้งค่า ANDROID_HEIC_INFO_SUPPORTED เป็น "จริง" และ ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT เป็นค่าระหว่าง [1, 16] ซึ่งระบุจำนวนส่วนของแอป JPEG
สำหรับชุดสตรีมที่จำเป็นแต่ละชุด อุปกรณ์กล้องต้องรองรับการสลับสตรีม JPEG กับสตรีม HEIC ที่มีขนาดเท่ากัน
สำหรับสตรีมเอาต์พุต HEIC ที่ API สาธารณะ บริการกล้องจะสร้างสตรีมภายใน HAL 2 รายการ ดังนี้
- สตรีม BLOB ที่มีแฟล็กการใช้งาน
JPEG_APPS_SEGMENTเพื่อจัดเก็บส่วนของแอป ซึ่งรวมถึงส่วน EXIF และส่วนภาพปก - สตรีม
IMPLEMENTATION_DEFINEDหรือYCBCR_420_888ที่มีขนาดเท่ากับสตรีม HEIC ขึ้นอยู่กับตัวแปลงสัญญาณเป้าหมายและขนาดสตรีม HEIC
เฟรมเวิร์กของกล้องจะจัดสรรบัฟเฟอร์ที่มีขนาดใหญ่พอให้ HAL ของกล้องใส่ส่วนของแอป JPEG ได้ โดยอิงตาม ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT ระบบกำหนดให้ต้องมีส่วน APP1 แต่ส่วนที่ตามหลังส่วน APP1 (APP2 ขึ้นไป) จะมีหรือไม่มีก็ได้ เฟรมเวิร์กของกล้องจะลบล้างแท็ก EXIF ในส่วน APP1 ที่ได้จากข้อมูลเมตาของผลการจับภาพหรือเกี่ยวข้องกับบิตสตรีมรูปภาพหลัก แล้วส่งไปยัง MediaMuxer
เนื่องจากตัวเข้ารหัสสื่อจะฝังการวางแนวในข้อมูลเมตาของรูปภาพเอาต์พุต
เพื่อให้การวางแนวของรูปภาพหลักและรูปภาพปกสอดคล้องกัน
HAL ของกล้องจึงต้องไม่หมุนรูปภาพปกตาม
android.jpeg.orientation. เฟรมเวิร์กจะเขียนการวางแนวลงในข้อมูลเมตา EXIF
และคอนเทนเนอร์ HEIC
แท็กข้อมูลเมตาแบบคงที่ แบบควบคุม และแบบไดนามิกที่เกี่ยวข้องกับรูปแบบ JPEG จะใช้กับรูปแบบ HEIC ด้วย เช่น แท็กข้อมูลเมตา android.jpeg.orientation และ android.jpeg.quality ในคำขอจับภาพจะใช้เพื่อควบคุมการวางแนวและคุณภาพของรูปภาพ HEIC
หากต้องการใช้รูปแบบ HEIC ในแอป ให้ใช้ HEIC Public API
ดูข้อมูลเพิ่มเติมได้จากแหล่งข้อมูลต่อไปนี้
HAL ของกล้อง
พื้นที่ข้อมูลบัฟเฟอร์กราฟิก
พื้นที่การใช้งานบัฟเฟอร์กราฟิก
การตรวจสอบ
หากต้องการตรวจสอบว่าการใช้งานรองรับรูปภาพ HEIC ให้ใช้แอปทดสอบ
TestingCamera2
แล้วเรียกใช้การทดสอบ CTS และ VTS ของกล้องต่อไปนี้
การทดสอบ CTS ของกล้อง
NativeImageReaderTest#testHeicImageReaderTest#testHeicImageReaderTest#testRepeatingHeicReprocessCaptureTest#testBasicYuvToHeicReprocessingReprocessCaptureTest#testBasicOpaqueToHeicReprocessingRobustnessTest#testMandatoryOutputCombinationsStillCaptureTest#testHeicExif
การทดสอบ VTS ของกล้อง