อุปกรณ์ที่ใช้ Android 10 รองรับรูปแบบรูปภาพที่บีบอัด HEIC ซึ่งเป็น แบรนด์ เฉพาะของการเข้ารหัสวิดีโอประสิทธิภาพสูง (HEVC) ของรูปแบบไฟล์รูปภาพประสิทธิภาพสูง (HEIF) ตามที่ระบุไว้ใน 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 สองสตรีม:
- สตรีม BLOB พร้อมการตั้งค่าสถานะการใช้งาน
JPEG_APPS_SEGMENT
เพื่อจัดเก็บส่วนของแอป รวมถึง EXIF และส่วนภาพขนาดย่อ -
IMPLEMENTATION_DEFINED
หรือYCBCR_420_888
สตรีมขนาดของสตรีม HEIC ขึ้นอยู่กับตัวแปลงสัญญาณเป้าหมายและขนาดสตรีม HEIC
ตาม ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
เฟรมเวิร์กของกล้องจะจัดสรรบัฟเฟอร์ที่มีขนาดใหญ่เพียงพอสำหรับกล้อง HAL เพื่อเติมข้อมูลในกลุ่มแอป JPEG จำเป็นต้องมีกลุ่ม 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
สำหรับข้อมูลเพิ่มเติม โปรดดูแหล่งข้อมูลต่อไปนี้
กล้องฮาล
พื้นที่ข้อมูลบัฟเฟอร์กราฟิก
พื้นที่ใช้งานบัฟเฟอร์กราฟิก
การตรวจสอบ
เพื่อตรวจสอบว่าการใช้งานของคุณรองรับอิมเมจ HEIC ให้ใช้แอปพลิเคชันทดสอบ TestingCamera2
และรันการทดสอบ CTS และ VTS ของกล้องต่อไปนี้
การทดสอบกล้อง CTS
-
NativeImageReaderTest#testHeic
-
ImageReaderTest#testHeic
-
ImageReaderTest#testRepeatingHeic
-
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
-
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
-
RobustnessTest#testMandatoryOutputCombinations
-
StillCaptureTest#testHeicExif
ทดสอบ VTS ของกล้อง