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 เป็นจริง และ 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

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