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