อุปกรณ์ที่ใช้ 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
เป็น true และ
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
ตาม 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
ดูข้อมูลเพิ่มเติมได้จากแหล่งข้อมูลต่อไปนี้
HAL ของกล้อง
พื้นที่ข้อมูลบัฟเฟอร์กราฟิก
พื้นที่การใช้งานบัฟเฟอร์กราฟิก
การตรวจสอบความถูกต้อง
หากต้องการตรวจสอบว่าการใช้งานรองรับรูปภาพ HEIC ให้ใช้
TestingCamera2
แอปทดสอบ และเรียกใช้การทดสอบ CTS และ VTS ของกล้องต่อไปนี้
การทดสอบ CTS ของกล้อง
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
การทดสอบ VTS ของกล้อง