HEIF 이미징

Android 10을 실행하는 기기는 ISO/IEC 23008-12에 명시된 고효율 이미지 파일 형식(HEIF)의 고효율 동영상 인코딩(HEVC) 관련 브랜드인 HEIC 압축 이미지 형식을 지원합니다. 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 유형 코덱은 이미지 크기에 따라 GRALLOC_USAGE_HW_VIDEO_ENCODER를 사용한 IMPLEMENTATION_DEFINED 형식 또는 HAL_PIXEL_FORMAT_YCBCR_420_888 형식을 사용합니다.
  • HEIC 유형 코덱은 GRALLOC_USAGE_HW_IMAGE_ENCODER를 사용한 IMPLEMENTATION_DEFINED 형식을 사용합니다.

카메라

정적 메타데이터에서 ANDROID_HEIC_INFO_SUPPORTED를 true로, ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT[1, 16] 사이의 값으로 설정하여 JPEG 앱 세그먼트의 수를 나타냅니다.

각 필수 스트림 조합의 경우 카메라 기기는 JPEG 스트림을 동일한 크기의 HEIC 스트림과 교환할 수 있도록 지원해야 합니다.

공개 API의 HEIC 출력 스트림의 경우 카메라 서비스는 두 개의 HAL 내부 스트림을 만듭니다.

  • EXIF 및 미리보기 이미지 세그먼트를 비롯한 앱 세그먼트를 저장하기 위한 JPEG_APPS_SEGMENT 사용 플래그가 있는 BLOB 스트림
  • 타겟 코덱 및 HEIC 스트림 크기에 따라 HEIC 스트림의 크기에 해당하는 IMPLEMENTATION_DEFINED 또는 YCBCR_420_888 스트림

ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT에 따라 카메라 프레임워크는 카메라 HAL이 JPEG 앱 세그먼트를 채울 만큼 충분히 큰 버퍼를 할당합니다. APP1 세그먼트는 필수이지만, APP1 세그먼트 다음의 세그먼트(APP2 이상)는 선택사항입니다. 카메라 프레임워크는 캡처 결과 메타데이터에서 파생될 수 있거나 기본 이미지 비트스트림과 관련된 APP1 세그먼트의 EXIF 태그를 재정의하고 이를 MediaMuxer로 전송합니다.

미디어 인코더는 출력 이미지의 메타데이터에 방향 정보를 포함하므로 기본 이미지와 미리보기 이미지 간의 방향 일관성을 보장하기 위해 카메라 HAL은 android.jpeg.orientation.을 기준으로 미리보기 이미지를 회전해서는 안 됩니다. 프레임워크는 방향 정보를 EXIF 메타데이터 및 HEIC 컨테이너에 씁니다.

JPEG 형식과 관련된 정적, 제어 및 동적 메타데이터 태그도 HEIC 형식에 적용됩니다. 예를 들어 캡처 요청의 android.jpeg.orientationandroid.jpeg.quality 메타데이터 태그는 HEIC 이미지의 방향과 품질을 제어하는 데 사용됩니다.

애플리케이션에서 HEIC 형식을 사용하려면 HEIC 공개 API를 사용합니다.

자세한 내용은 다음 소스를 참조하세요.

카메라 HAL

그래픽 버퍼 데이터 공간

그래픽 버퍼 사용 공간

유효성 검사

구현이 HEIC 이미지를 지원하는지 검사하려면 TestingCamera2 테스트 애플리케이션을 사용하여 다음과 같은 카메라 CTS 및 VTS 테스트를 실행합니다.

카메라 CTS 테스트

카메라 VTS 테스트