A versão do Android 13 inclui várias mudanças no Camera ITS. Além de mudanças incrementais, como versões atualizadas do Python e do pacote e atualizações de hardware de teste, o Android 13 oferece suporte a testes de vídeo.
Esta página resume as mudanças do ITS da câmera para o Android 13. As mudanças se enquadram em sete categorias amplas:
- Versões do Python e do pacote
- Adições ao arquivo de configuração
- Testar mudanças
- Novos testes com tablet
- Testes de vídeo
- Atualizações e adições de hardware
- Suporte a testes de dispositivos dobráveis
Versões de pacote e Python
O Android 13 oferece suporte às seguintes versões do Python, além das versões e bibliotecas do Python compatíveis com o Android 12:
- Python 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3 (link em inglês)
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- Pillow 8.3.1 (link em inglês)
- PyYAML 5.4.1 (link em inglês)
- Mobly 1.11
- FFmpeg 4.4.1
Adições ao arquivo de configuração
Devido à adição do controle de iluminação para o teste test_auto_flash.py
, o
arquivo config.yml
precisa de dois parâmetros adicionais para o controlador e
o canal de iluminação. Para identificar se o dispositivo em teste (DUT) é dobrável
ou não, o arquivo config.yml
requer um terceiro parâmetro adicional que precisa
ser adicionado às seções de fusão de sensores e baseadas em tablet.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
Testar mudanças
scene1_1/test_black_white.py
O teste test_black_white
tem a verificação de saturação de canal
consistente com versões anteriores do Android, o que significa que o primeiro
nível da API necessário para a verificação de saturação de canal é o Android
10.
scene1_2/test_yuv_plus_raw.py
O teste test_yuv_plus_raw
processa sensores que não são 16:9 ou 4:3 para oferecer
melhor compatibilidade com RAW. Se o teste não encontrar um formato comum
entre o formato RAW do sensor e os formatos de captura YUV, o teste vai comparar
a captura RAW com a captura YUV maior, mesmo que as proporções sejam
diferentes.
scene2_a/test_faces.py
O test_faces
foi refatorado em test_num_faces
.
scene2_a/test_num_faces.py
O teste test_num_faces
processa o corte do sensor e coloca os
retângulos do rosto corretamente nas capturas da câmera UW que são cortadas.
scene3/test_lens_position.py
O teste test_lens_position
foi descontinuado no Android
13.
scene6/test_zoom.py
O teste test_zoom
foi refatorado para facilitar o teste de sistemas de três e quatro
câmeras. Se a câmera realizar o teste corretamente em um intervalo de proporção de 10x com zoom,
o teste será encerrado corretamente. Isso permite que o teste de zoom seja realizado em uma única
distância do gráfico.
scene_change/test_scene_change.py
O teste test_scene_change
foi descontinuado no Android
13.
Novos testes baseados em tablet
O Android 13 inclui dois novos testes baseados em tablet. Ambos os testes são obrigatórios para dispositivos lançados com o Android 13, mas são pulados para dispositivos que fazem upgrade para o Android 13.
Scene | Nome do teste | Primeiro nível da API | Descrição |
---|---|---|---|
2_a | test_auto_flash | 33 | Confirma que as cenas escuras acionam o flash automático. |
2_b | test_yuv_jpg_capture_sameness | 33 | Confirma que as capturas YUV e JPEG são idênticas em bit a bit. |
scene2_a/test_auto_flash.py
O Android 13 adiciona o teste test_auto_flash
.
Parâmetros
flash
: pula o teste se o flash não estiver disponível.
Método
O teste configura a solicitação de captura para flash automático e apresenta uma cena
que exige um evento de flash. A iluminação no equipamento de teste e no tablet é
desativada para apresentar um cenário escuro para o algoritmo de exposição automática. O teste
configura uma sequência de capturas de NUM_FRAMES
com o flash automático ativado. Se a
configuração AE_STATE
retornar FLASH_REQUIRED
, o teste vai verificar se um flash foi
disparado nas capturas.
A iluminação pode ser controlada manualmente, quando solicitado, ou automaticamente, com um
controle Arduino com controle de iluminação adicionado para testes automatizados. Uma nova
pasta de utilitários lighting_control_utils
centraliza o código para controlar a
iluminação nos testes.
scene2_a/test_yuv_jpeg_capture_sameness.py
O Android 13 adiciona o teste
test_yuv_jpeg_capture_sameness
.
Parâmetros
streamUseCase
: determina se a câmera oferece suporte ao caso de uso de streaming.android.jpeg.quality
: define a qualidade JPEG como 100.
Método
Esse teste captura duas imagens usando os formatos YUV e JPEG mais comuns com
a mesma proporção do formato JPEG mais amplo, sem exceder uma resolução de
1920x1440. O teste define jpeg.quality
como 100 e captura uma solicitação de
duas superfícies. Em seguida, ele converte as duas imagens em matrizes RGB e calcula a raiz quadrada
média (RMS) 3D entre as duas imagens. A tolerância de diferença
é definida como 1%.
Testes de vídeo
O ITS da câmera adiciona suporte a testes de vídeo no Android 13.
O Android 13 adiciona os seguintes testes:
Scene | Nome do teste | Primeiro nível da API | Descrição |
---|---|---|---|
4 | estabilização_da_visualização_teste | 33 | Confirma que a visualização do vídeo não é cortada demais com a estabilização ativada. |
4 | test_video_aspect_ratio_and_crop | 33 | Confirma o FoV, a proporção e o corte dos formatos de vídeo. |
fusão_do_sensor | test_preview_stabilition | 33 | Confirma que a estabilização da visualização funciona. |
sensor_fusion | test_video_stabilition | 33 | Confirma que a estabilização de vídeo funciona. |
scene4/test_preview_stabilization_fov.py
O Android 13 adiciona o teste
test_preview_stabilization_fov
. Esse teste verifica os tamanhos de visualização compatíveis para garantir que o FoV não seja
recortado de forma inadequada.
Método
O teste captura dois vídeos, um com a estabilização de visualização ativada e outro com a estabilização de visualização desativada. Um frame representativo é selecionado em cada vídeo e analisado para garantir que as mudanças de FoV nos dois vídeos estejam dentro das especificações.
Especificamente, o teste verifica os seguintes parâmetros com e sem estabilização de visualização:
- O arredondamento do círculo permanece constante.
- O centro do círculo permanece estável.
- O tamanho do círculo muda em até 20%, o que significa que o FoV muda até 20%.
scene4/test_video_aspect_ratio_and_crop.py
O Android 13 adiciona o teste
test_video_aspect_ratio_and_crop
. Assim como o teste test_aspect_ratio_and_crop
para capturas de fotos, esse teste verifica os formatos de vídeo compatíveis
para garantir que os frames de vídeo não sejam esticados ou cortados de forma inadequada.
Todas as qualidades de vídeo informadas pelo usuário são testadas. Além disso, se
a câmera oferece suporte a vídeo HLG10
, o vídeo de 10 bits é testado.
O Android 13 adiciona o método get_available_video_qualities
ao its_session_utils
. Para compartilhar o código comum
com os testes existentes, o Android 13 também inclui duas novas
funções utilitárias, image_fov_utils
e video_processing_utils
.
Método
O teste captura uma imagem de referência com o formato RAW ou o formato JPEG de resolução mais alta, se o RAW não for compatível. Com a imagem de referência, o tamanho e a localização do círculo são determinados. Vídeos curtos são gravados com todas as qualidades de vídeo compatíveis. O frame de referência final é extraído de cada qualidade de vídeo. A partir do frame de referência, o campo de visão (FoV), o centro (recorte) e a proporção são calculados para cada qualidade de vídeo.
Para o cálculo do FoV, o teste compara o tamanho do círculo do frame do vídeo com o tamanho do círculo calculado dos tamanhos de formato de vídeo e da imagem de referência. Para a verificação de corte, o teste compara a centralização do frame do vídeo com a centralização da imagem de referência. Para a verificação de proporção, usando a cena, que é um grande círculo preto em um fundo branco, o teste determina a proporção do círculo e verifica se o frame não está distorcido.
sensor_fusion/test_preview_stabilization.py
O Android 13 adicionou o teste test_preview_stabilization
,
que testa todas as qualidades de visualização com suporte até 1920x1080. O teste usa
o equipamento de teste de fusão do sensor e
exige o novo controlador de fusão do sensor da revisão 2 ou um upgrade de firmware das
versões anteriores do controlador Arduino. Para mais detalhes sobre o novo controlador,
consulte Atualizações e adições de hardware.
Método
O smartphone é movido lentamente em um ângulo de aproximadamente 15 graus com a estabilização de visualização ativada. Em seguida, a rotação das imagens é comparada à rotação do giroscópio.
sensor_fusion/test_video_stabilization.py
O Android 13 adiciona o teste test_video_stabilization
,
que testa qualidades de vídeo com suporte a até 1920 x 1080. A qualidade de vídeos de baixa resolução
do QCIF foi excluída. O teste usa o
equipamento de teste da fusão de sensores e
exige o novo controlador de fusão de sensores da revisão 2 ou um upgrade de firmware de
versões anteriores do controlador Arduino. Para ver mais detalhes sobre o novo controlador,
consulte Atualizações e adições de hardware.
Método
O equipamento de teste move o smartphone lentamente em um ângulo de aproximadamente 15 graus com a estabilização de visualização ativada. A rotação das imagens é comparada à rotação do giroscópio.
Atualizações e adições de hardware
O Android 13 inclui um upgrade para o controlador de fusão do sensor de revisão 2 baseado em Arduino. Esse upgrade inclui mudanças de hardware e firmware. A atualização permite que o controlador defina a velocidade de rotação e o controle de iluminação. O upgrade também inclui um novo escudo (mostrado na Figura 1), que fornece três canais de rotação e três de controle de iluminação.
Figura 1. Arduino shield rev2.0 com controle de rotação e iluminação
Além disso, para a versão 13, o firmware dos controladores atualizados precisa ser atualizado para ativar o controle de velocidade de rotação. É possível fazer o download desse firmware em:
Para mais informações sobre o novo controlador, consulte Controlador de fusão de sensores do Android 13.
Suporte a testes dobráveis
O Android 13 inclui suporte a testes para dispositivos
dobráveis. Para ativar a
API de várias câmeras
em dispositivos dobráveis, o estado do smartphone
(Folded
ou Unfolded
) é necessário durante o teste.
Para ativar a pesquisa do estado do smartphone para todos os DUTs, incluindo smartphones
não dobráveis, execute o comando adb abaixo depois que o DUT for conectado ao host.
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier