Você disse que existem algumas possibilidades que podem ocorrer com uma camera real que não são tão simples de replicar.
Pode citar alguns exemplos?
Alguns comportamentos:
- A câmera pode enviar alguns frames com problema ao realizar o encoding do vídeo. Ao fazer o decoding, a imagem vai vir com diversos artefatos de compressão, assim que chamamos. Isso é bem complicado de detectar, ao menos eu não conheço uma forma fácil. Até onde eu saiba é só possível de ver visualmente.
- A câmera pode não conseguir ler a imagem em um determinado momento. Agora, o que vai acontecer com a leitura é um processo complicado. Podem haver dois possíveis comportamentos: a thread de leitura de câmera vai ficar travado ao tentar ler o frame, ou ela pode jogar um frame vazio. Contudo, existe um terceiro comportamento que eu já observei alguns poucas vezes, que o leitor de video morre totalmente. Ele quebra e nada mais funciona. Nós utilizamos a OpenCV para realizar a leitura da câmera e esse problema é realmente difícil de detectar. Esse problema os desenvolvedores ainda não conseguiram resolver.
Cara, gostei do que você descreveu no item (1). Acho que um bom jeito é eu encarar isso com minha equipe como sendo um "projeto", em que a gente tem que levantar os requisitos e desenvolver código em cima.
Muito obrigado pela dica da lib, vou testar!
Entendi. Quando você diz que é dificil de detectar é pq pelo código não tem como detectar ou é algo que acontece esporádicamente e vocês não conseguem simular com a câmera ? Se o problema for simulação você não consegue injetar frames problemáticos em um arquivo de vídeo e assim criar um teste automatico para validar a correção? Ou se o drive retorna alguma exceção ou código de rro, você pode fazer seu objeto mock lançar essa mesma exceção (ou retornar o código de erro) para conseguir criar seus testes.