การถ่ายภาพ 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 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 ของกล้อง

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