การถ่ายภาพ HEIF

อุปกรณ์ที่ใช้ 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 ของกล้อง

การทดสอบ VTS ของกล้อง