O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

HEIF Imaging

Os dispositivos que executam o Android 10 são compatíveis com o formato de imagem compactada HEIC, uma marca específica de codificação de vídeo de alta eficiência (HEVC) do formato de arquivo de imagem de alta eficiência (HEIF), conforme especificado na ISO / IEC 23008-12 . As imagens com codificação HEIC oferecem melhor qualidade de imagem com tamanhos de arquivo menores em comparação com os arquivos JPEG.

As imagens HEIC são geradas pela estrutura da câmera solicitando uma imagem descompactada do HAL da câmera e enviando-a ao subsistema de mídia para ser codificada por um codificador HEIC ou HEVC.

Requisitos

Para suportar o formato de imagem HEIC, seu dispositivo deve ter um codificador de hardware que suporte MIMETYPE_IMAGE_ANDROID_HEIC ou MIMETYPE_VIDEO_HEVC com o modo de qualidade constante .

Implementação

Para suportar o formato de imagem HEIC em seu dispositivo, implemente um codec HEIC / HEVC e forneça suporte para as configurações de fluxo necessárias, que são fluxos IMPLEMENTATION_DEFINED / YUV e fluxos de segmento de aplicativo JPEG.

meios de comunicação

Implemente o codec HEIC / HEVC em modo de qualidade constante (CQ) para o hardware correspondente da seguinte forma:

  • O codec do tipo HEVC consome o formato IMPLEMENTATION_DEFINED com o uso GRALLOC_USAGE_HW_VIDEO_ENCODER ou o formato HAL_PIXEL_FORMAT_YCBCR_420_888 dependendo do tamanho da imagem.
  • O codec do tipo HEIC consome o formato IMPLEMENTATION_DEFINED com o uso de GRALLOC_USAGE_HW_IMAGE_ENCODER .

Câmera

Nos metadados estáticos, defina ANDROID_HEIC_INFO_SUPPORTED como true e ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT com um valor entre [1, 16] , indicando o número de segmentos de aplicativo JPEG.

Para cada combinação de stream obrigatória, seu dispositivo de câmera deve suportar a troca de um stream JPEG por um stream HEIC do mesmo tamanho.

Para um fluxo de saída HEIC na API pública, o serviço de câmera cria dois fluxos internos HAL:

  • Um fluxo BLOB com o JPEG_APPS_SEGMENT uso JPEG_APPS_SEGMENT para armazenar segmentos de aplicativo, incluindo EXIF ​​e segmentos de miniatura
  • Um fluxo IMPLEMENTATION_DEFINED ou YCBCR_420_888 do tamanho do fluxo HEIC dependendo do codec de destino e do tamanho do fluxo HEIC

Com base em ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT , a estrutura da câmera aloca buffers grandes o suficiente para o HAL da câmera preencher os segmentos do aplicativo JPEG. O APP1 segmento é necessária, mas a segmentos seguintes APP1 segmento ( APP2 e acima) são opcionais. A estrutura da câmera substitui as tags EXIF ​​no segmento APP1 que podem ser derivadas dos metadados do resultado da captura ou estão relacionadas ao fluxo de bits da imagem principal e os envia ao MediaMuxer .

Como o codificador de mídia incorpora a orientação nos metadados das imagens de saída, para garantir uma orientação consistente entre a imagem principal e a miniatura, o HAL da câmera não deve girar a imagem em miniatura com base em android.jpeg.orientation. A estrutura grava a orientação nos metadados EXIF ​​e no contêiner HEIC.

As tags de metadados estáticos, de controle e dinâmicos relacionadas ao formato JPEG também se aplicam ao formato HEIC. Por exemplo, o android.jpeg.orientation e android.jpeg.quality tags de metadados no pedido de captura são usados para controlar a orientação e qualidade de imagens HEIC.

Para usar o formato HEIC em um aplicativo, use a API pública HEIC .

Para obter mais informações, consulte as seguintes fontes.

Câmera HAL

Espaço de dados do buffer gráfico

Espaço de uso do buffer gráfico

Validação

Para validar se sua implementação oferece suporte a imagens HEIC, use o aplicativo de teste TestingCamera2 e execute os seguintes testes de câmera CTS e VTS.

Testes de câmera CTS

Testes de câmera VTS