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.orientation
및 android.jpeg.quality
메타데이터 태그는 HEIC 이미지의 방향과 품질을 제어하는 데 사용됩니다.
애플리케이션에서 HEIC 형식을 사용하려면 HEIC 공개 API를 사용합니다.
자세한 내용은 다음 소스를 참조하세요.
카메라 HAL
그래픽 버퍼 데이터 공간
그래픽 버퍼 사용 공간
유효성 검사
구현이 HEIC 이미지를 지원하는지 검사하려면 TestingCamera2
테스트 애플리케이션을 사용하여 다음과 같은 카메라 CTS 및 VTS 테스트를 실행합니다.
카메라 CTS 테스트
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
카메라 VTS 테스트