feat: initial commit - Carinha Control Panel v1.0 com UI glassmorphism, watch-bar, emojis, braco robotico e conversa IA

This commit is contained in:
julio
2026-10-05 16:21:57 -03:00
commit 8217292893
114 changed files with 13145 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
# Vídeo contínuo com qualidade automática
Desenho aprovado em 05/10/2026: vídeo contínuo, qualidade automática como padrão, buscando 30 fps. Boca e sobrancelhas com controles independentes.
## Integração
O painel recebe uma faixa de vídeo via WebRTC. O servidor Python troca apenas sinalização (`/rtc/session`, `/rtc/send`, `/rtc/poll`); o vídeo comprimido passa diretamente pela rede local entre Android e navegador. Sem serviços externos de STUN/TURN e sem gravação. Cada vez há um painel receptor ativo; abrir outro substitui a sessão anterior.
O Android usa uma WebView auxiliar com página embutida `transmissao.html`, em contexto `file://` já usado no app para câmera. Ela permanece anexada à Activity atrás do rosto e recebe somente a permissão de vídeo. A ponte Java fornece sinalização HTTP, telemetria e movimento; não há permissão de acesso remoto a arquivos pela WebView.
Durante a transmissão, o detector Camera2 anterior é suspenso para liberar a lente. A página de vídeo calcula movimento numa amostra 176×132, dez vezes por segundo, e manda o mesmo sinal à carinha. Sem transmissão, o detector nativo volta. Microfone, rosto e economia de brilho continuam funcionando. Sair do primeiro plano para câmera e conexão.
## Qualidade
Captura solicitada: até 1280×720 a 30 fps; fallback por restrição de formato em 640×480. O codec é negociado pelo WebRTC entre as capacidades dos aparelhos (não é forçado H.264). Prioridade `maintain-framerate`; os fps efetivos aparecem no painel.
Controle automático usa estatísticas reais do emissor. Congestionamento, atraso elevado ou fps baixo reduzem resolução/bitrate. Só sobe após quatro leituras estáveis, evitando oscilações. Tetos de bitrate: 2,5 / 1,3 / 0,6 Mb/s; fatores de escala: 1 / 1,5 / 2. A taxa de quadros alvo permanece 30. Esses valores são tetos, não garantia de resultado em qualquer rede/aparelho.
## Validação
- Testes HTTP verificam isolamento de sessão, mensagens preservadas por cursor e rejeição de sessões antigas.
- Teste Node verifica redução automática e subida após estabilidade.
- Teste `test_rtc_browser.py` usa câmera simulada de 30 fps e conexões WebRTC reais entre duas páginas Chromium. Resultado observado: 63 quadros em 2,2 segundos, painel 30 fps, 640×360.
- Teste de navegador verifica ativação/desativação independente de boca e sobrancelhas.
- Compilação/verificação da assinatura Android necessárias antes de atualizar.
- Validação no S10 exige reabrir o app após a instalação e recarregar o painel.
## Referências técnicas
- [RTCRtpSender.setParameters](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters): bitrate, escala e prioridade de degradação.
- [RTCPeerConnection.getStats](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getStats): estatísticas da conexão.
## Arquivos
`sinalizacao.py`: sessões e mensagens. `painel-video.js`: receptor e fps. `transmissao.html`: captura/emissor e detector. `qualidade-auto.js`: decisão automática. MainActivity/PonteRTC: ciclo de vida, câmera exclusiva e comunicação com Java.