Los dispositivos que ejecutan Android 10 admiten el protocolo HEIC formato de imagen comprimido, una alta marca específica de codificación de video de eficiencia (HEVC) de la imagen de alta eficiencia formato de archivo (HEIF) como se especifica en ISO/IEC 23008-12: Las imágenes con codificación HEIC ofrecen de mejor calidad con tamaños de archivo más pequeños en comparación con los archivos JPEG.
El framework de la cámara genera las imágenes HEIC y solicita una imagen imagen de la HAL de la cámara y enviarla al subsistema multimedia codificarse con un codificador HEIC o HEVC.
Requisitos
Para admitir el formato de imagen HEIC, el dispositivo debe tener un codificador de hardware
compatible
MIMETYPE_IMAGE_ANDROID_HEIC
o
MIMETYPE_VIDEO_HEVC
con el
modo de calidad constante.
Implementación
Para admitir el formato de imagen HEIC en tu dispositivo, implementa un códec HEIC/HEVC
y admitir las configuraciones de transmisión requeridas, que son las
Transmisiones IMPLEMENTATION_DEFINED
/YUV
y transmisiones de segmentos de app JPEG.
Contenido multimedia
Implementa el códec HEIC/HEVC en modo de calidad constante (CQ) para el el hardware correspondiente de la siguiente manera:
- El códec de tipo HEVC consume el
IMPLEMENTATION_DEFINED
con el uso deGRALLOC_USAGE_HW_VIDEO_ENCODER
o elHAL_PIXEL_FORMAT_YCBCR_420_888
según el tamaño de la imagen. - El códec de tipo HEIC consume el formato
IMPLEMENTATION_DEFINED
con el Uso deGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Cámara
En los metadatos estáticos, establece ANDROID_HEIC_INFO_SUPPORTED
como verdadero y
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
a un valor entre [1, 16]
,
que indica la cantidad de segmentos de app JPEG.
Para cada combinación de transmisión obligatoria, el dispositivo de la cámara debe admitir el intercambio una transmisión JPEG con una transmisión HEIC del mismo tamaño.
Para una transmisión de salida HEIC en la API pública, el servicio de cámara crea dos HAL flujos internos:
- Un flujo de BLOB con la marca de uso
JPEG_APPS_SEGMENT
para almacenar la app segmentos, incluidos los segmentos EXIF y de miniaturas - Una transmisión
IMPLEMENTATION_DEFINED
oYCBCR_420_888
del tamaño de la Transmisión HEIC según el códec de destino y el tamaño de transmisión HEIC
En función de ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, el framework de la cámara
asigna búferes lo suficientemente grandes para que la HAL de la cámara complete la app de JPEG.
segmentos. El segmento APP1
es obligatorio, pero los segmentos que siguen a APP1
segmento (APP2
y más) son opcionales. El framework de la cámara anula el proceso EXIF
Etiquetas en el segmento APP1
que pueden derivarse de los metadatos del resultado de la captura
o están relacionadas con el flujo de bits de la imagen principal y las envía a MediaMuxer
.
Debido a que el codificador multimedia incorpora la orientación en los metadatos de la salida
para garantizar una orientación consistente
entre la imagen principal y la miniatura
la HAL de la cámara no debe rotar la imagen en miniatura según
android.jpeg.orientation.
El framework escribe la orientación en el EXIF.
los metadatos y el contenedor HEIC.
Las etiquetas de metadatos estáticas, de control y dinámicas relacionadas con el formato JPEG también
se aplican al formato HEIC. Por ejemplo, android.jpeg.orientation
y
android.jpeg.quality
etiquetas de metadatos en la solicitud de captura se usan para controlar
la orientación y la calidad de las imágenes HEIC.
Para usar el formato HEIC en una app, usa el API pública de HEIC:
Para obtener más información, consulta las siguientes fuentes.
HAL de la cámara
Espacio de datos del búfer gráfico
Espacio de uso gráfico del búfer
Validación
Para validar que tu implementación admita imágenes HEIC, usa el
TestingCamera2
app de prueba y ejecuta las siguientes pruebas de CTS y VTS de la cámara.
Pruebas del CTS de la cámara
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Pruebas de VTS de la cámara