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 Camera ITS para o Android 13. As mudanças se enquadram em sete categorias amplas:
- Versões do Python e do pacote
- Adições de arquivos de configuração
- Mudanças de teste
- Novos testes baseados em tablets
- Teste de vídeo
- Atualizações e adições de hardware
- Suporte a testes dobráveis
Versões do Python e do pacote
O Android 13 oferece suporte às seguintes versões do Python, além das versões e bibliotecas do Python com suporte no Android 12:
- Python 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- Pillow 8.3.1
- PyYAML 5.4.1
- Mobly 1.11
- FFmpeg 4.4.1
Adições de arquivos 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, na sigla em inglês) é dobrável ou não, o arquivo config.yml exige um terceiro parâmetro adicional que precisa ser adicionado às seções de fusão de sensores e baseadas em tablets.
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
Mudanças de teste
scene1_1/test_black_white.py
O teste test_black_white tem uma 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 não 16:9 ou 4:3 para oferecer melhor suporte a RAW. Se o teste não encontrar um formato comum entre o formato RAW do sensor e os formatos de captura YUV, ele vai comparar a captura RAW com a maior captura YUV, mesmo que as proporções sejam diferentes.
scene2_a/test_faces.py
O test_faces é 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 faciais 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 é refatorado para facilitar o teste de sistemas de três e quatro câmeras. Se os testes de câmera forem feitos corretamente em um intervalo de proporção de 10x no zoom, o teste será encerrado corretamente. Isso permite que o teste de zoom seja realizado em uma única distância de gráfico.
scene_change/test_scene_change.py
O teste test_scene_change foi descontinuado no Android 13.
Novos testes baseados em tablets
O Android 13 inclui dois novos testes baseados em tablets. Os dois testes são obrigatórios para dispositivos lançados com o Android 13, mas são ignorados 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 se cenas escuras acionam o flash automático. |
| 2_b | test_yuv_jpg_capture_sameness | 33 | Confirma se as capturas de imagem estática YUV e JPEG são idênticas bit a bit. |
scene2_a/test_auto_flash.py
O Android 13 adiciona o teste test_auto_flash.
Parâmetros
flash: ignora 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 uma cena escura para o algoritmo de exposição automática. O teste configura uma sequência de capturas NUM_FRAMES com o flash automático ativado. Se a configuração AE_STATE retornar FLASH_REQUIRED, o teste vai verificar se um flash é disparado nas capturas.
A iluminação pode ser controlada manualmente quando solicitado ou automaticamente com um controlador 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 em 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 do stream.android.jpeg.quality: define a qualidade JPEG como 100.
Método
Esse teste captura duas imagens usando os maiores formatos YUV e JPEG comuns com a mesma proporção que o maior formato JPEG, sem exceder uma resolução de 1920 x 1440. O teste define jpeg.quality como 100 e captura uma solicitação de superfície dupla. Em seguida, ele converte as duas imagens em matrizes RGB e calcula a diferença da raiz quadrada média (RMS, na sigla em inglês) 3D entre as duas imagens. A tolerância de diferença é definida como 1%.
Teste de vídeo
O Camera ITS 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 | test_preview_stabilization_fov | 33 | Confirma se a visualização do vídeo não corta muito com a estabilização ativada. |
| 4 | test_video_aspect_ratio_and_crop | 33 | Confirma o campo de visão, a proporção e o corte dos formatos de vídeo. |
| sensor_fusion | test_preview_stabilition | 33 | Confirma se a estabilização da visualização funciona. |
| sensor_fusion | test_video_stabilition | 33 | Confirma se 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 com suporte para garantir que o campo de visão não seja cortado 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 campo de visão 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:
- A redondeza do círculo permanece constante.
- O centro do círculo permanece estável.
- O tamanho do círculo muda em no máximo 20%, o que significa que o campo de visão muda no máximo 20%.
scene4/test_video_aspect_ratio_and_crop.py
O Android 13 adiciona o teste test_video_aspect_ratio_and_crop. Semelhante ao teste test_aspect_ratio_and_crop para capturas de imagem estática, esse teste verifica os formatos de vídeo com suporte para garantir que os frames de vídeo não sejam esticados ou cortados de forma inadequada.
Todas as qualidades de vídeo auto-declaradas são testadas. Além disso, se a câmera oferecer suporte a vídeos HLG10, o vídeo de 10 bits será testado.
O Android 13 adiciona o método get_available_video_qualities ao its_session_utils. Para compartilhar código comum
com testes atuais, o Android 13 também inclui duas novas
funções de utilitário, 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 maior resolução, se o RAW não for compatível. Na imagem de referência, o tamanho e a localização do círculo são determinados. Em seguida, vídeos curtos são feitos com todas as qualidades de vídeo com suporte. O frame de referência final é extraído de cada qualidade de vídeo. No frame de referência, o campo de visão (FoV), a centralização (corte) e a proporção são calculados para cada qualidade de vídeo.
Para o cálculo do campo de visão, o teste compara o tamanho do círculo do frame de vídeo com o tamanho do círculo calculado nas imagens de referência e nos tamanhos de formato de vídeo. Para a verificação de corte, o teste compara a centralização do frame de vídeo com a centralização da imagem de referência. Para a verificação da 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 adiciona o teste test_preview_stabilization, que testa todas as qualidades de visualização com suporte até 1920 x 1080. O teste usa
o equipamento de teste de 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 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. 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 as qualidades de vídeo com suporte até 1920 x 1080. A qualidade de vídeo de baixa resolução QCIF é excluída. O teste usa o
equipamento de teste de 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 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 de sensores da revisão 2 baseado em Arduino . Esse upgrade inclui mudanças de hardware e firmware. O upgrade permite que o controlador defina a velocidade de rotação e o controle de iluminação. O upgrade também inclui um novo shield (mostrado na Figura 1), que oferece três canais de rotação e três canais de controle de iluminação.
Figura 1. Shield Arduino rev2.0 com controle de rotação e iluminação
Além disso, para o Android 13, o firmware dos controladores atuais precisa ser atualizado para ativar o controle de velocidade de rotação. Esse firmware pode ser baixado 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
para 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 seguinte comando adb depois que o DUT estiver conectado ao host.
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier