O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

HEIF Imaging

Dispositivos rodando o Android 10 suporte o formato de imagem comprimido HEIC, uma codificação de vídeo de alta eficiência (HEVC) marca específica do formato de arquivo de imagem de alta eficiência (heif), conforme especificado na ISO / IEC 23008-12 . Imagens com codificação HEIC oferecem melhor qualidade de imagem com tamanhos de arquivo menores em comparação com arquivos JPEG.

Imagens HEIC são gerados pelo quadro câmera solicitando uma imagem não compactada da câmera HAL e enviá-lo para o subsistema de mídia a ser codificado por um codificador HEIC ou HEVC.

Requisitos

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

Implementação

Para suportar o formato de imagem HEIC no seu dispositivo, implementar um HEVC codec / HEIC e fornecer suporte para as configurações de fluxo necessárias, que são a IMPLEMENTATION_DEFINED / YUV córregos e riachos segmento JPEG aplicativo.

meios de comunicação

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

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

Câmera

No metadados estática, definida ANDROID_HEIC_INFO_SUPPORTED a verdadeira, e ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT para um valor entre [1, 16] , indicando o número de segmentos de aplicações 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 de gota com o JPEG_APPS_SEGMENT bandeira uso para armazenar segmentos de aplicações incluindo EXIF e em miniatura segmentos
  • Um IMPLEMENTATION_DEFINED ou YCBCR_420_888 transmitir o tamanho da sequência de HEIC dependendo do codec de alvo e HEIC tamanho fluxo

Baseado em ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT , aloca-quadro da câmera buffers grande o suficiente para o HAL câmera para preencher os segmentos de aplicativos JPEG. O APP1 segmento é necessária, mas a segmentos seguintes APP1 segmento ( APP2 e acima) são opcionais. O quadro câmera substitui as tags EXIF na APP1 segmento que pode ser derivada a partir dos metadados resultado captura ou estão relacionados com a principal bitstream imagem e envia-los para MediaMuxer .

Uma vez que os meios do codificador incorpora o orientação nos metadados de imagens de saída, para assegurar uma orientação consistente entre a imagem principal e em miniatura, o HAL câmara não tem de rodar 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 na solicitação 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 que a sua implementação suporta imagens HEIC, utilize o TestingCamera2 aplicação de teste e execute os testes CTS e VTS seguinte câmera.

Testes de câmera CTS

Testes de câmera VTS