การถ่ายภาพ HEIF

อุปกรณ์ที่ใช้ Android 10 รองรับรูปแบบรูปภาพบีบอัด HEIC ซึ่งเป็น แบรนด์เฉพาะของรูปแบบไฟล์รูปภาพประสิทธิภาพสูง (HEIF) ที่มีการเข้ารหัสวิดีโอประสิทธิภาพสูง (HEVC) ตามที่ระบุไว้ใน 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 ที่มีแฟล็กการใช้งาน JPEG_APPS_SEGMENT เพื่อจัดเก็บส่วนของแอป ซึ่งรวมถึงส่วน EXIF และส่วนภาพปก
  • สตรีม IMPLEMENTATION_DEFINED หรือ YCBCR_420_888 ที่มีขนาดเท่ากับสตรีม HEIC ขึ้นอยู่กับตัวแปลงสัญญาณเป้าหมายและขนาดสตรีม HEIC

เฟรมเวิร์กของกล้องจะจัดสรรบัฟเฟอร์ที่มีขนาดใหญ่พอให้ HAL ของกล้องใส่ส่วนของแอป JPEG ได้ โดยอิงตาม ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT ระบบกำหนดให้ต้องมีส่วน 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 ของกล้อง