# Matriz de pruebas obligatoria

## Formatos y codecs

| Caso | Resultado esperado |
|---|---|
| MP4 H.264/AAC | Native/proxy seguro |
| MP4 HEVC/AAC | Native si navegador soporta; si no, HLS compatible |
| MKV H.264/AAC | Remux HLS si FFmpeg esta activo |
| MKV HEVC/DTS | Transcode HLS H.264/AAC |
| AVI antiguo | Transcode HLS |
| FLV | Transcode/remux segun ffprobe |
| MOV | Native si compatible; si no, transcode |
| WMV | Transcode HLS |
| MPEG/MPG | Transcode HLS |
| TS H.264/AAC | Remux HLS |
| M3U8 HLS | Shaka/hls.js/nativo via proxy |
| MPD DASH | Transcode por defecto en Entrega 1, DASH proxy completo queda pendiente |
| Stream caido | Error SOURCE_404/SOURCE_403/PROXY_ERROR |
| Stream lento | Error NETWORK_TIMEOUT o retry |
| CORS bloqueado | Proxy seguro evita exponer fuente directa |
| Audio AC3/EAC3/DTS | Transcode audio a AAC |
| Subtitulos SRT/ASS/SSA | Servicio de conversion preparado; integracion UI completa queda para siguiente entrega |

## Tipos de contenido

| Caso | Resultado esperado |
|---|---|
| Live TV | HLS proxy o modo compatible |
| VOD movie | Resolver + ffprobe + proxy/transcode |
| Episodio serie | Resolver usando `series_id` + `episode_id` |
| Multiscreen 2 | Dos instancias independientes |
| Multiscreen 3 | Tres instancias independientes |
| Multiscreen 4 | Cuatro instancias independientes |
| Cambio rapido | `destroy()` limpia Shaka/hls.js/video |
| Token expirado | TOKEN_EXPIRED y boton Reintentar |
| Credenciales invalidas | SOURCE_403/PROXY_ERROR |
| Upstream 404 | SOURCE_404 |

## Navegadores

- Chrome actual.
- Edge actual.
- Firefox actual.
- Safari macOS.
- Safari iOS.
- Android Chrome.
- Smart TV o emulador Tizen/WebOS.
