Resumen
- La RFC 9628 define un modo flexible, que transporta hasta tres referencias relativas por imagen predicha, y un modo no flexible, que declara un Picture Group periódico dentro de la estructura de escalabilidad.
- Los campos de capa, Picture ID,
P_DIFF,SS, inicio, fin y Marker describen la estructura anunciada. No prueban que todos los fragmentos llegaran, que las referencias sigan disponibles ni que el decodificador mostrara la imagen. - Una evidencia completa enlaza la negociación SDP, la época de modo y estructura, la cobertura RTP, el cierre real de referencias, la validación del bitstream, la salida del decodificador y la presentación.
El incidente parecía sencillo: el SFU había enviado una capa compatible, el Picture ID avanzaba y el paquete final llevaba Marker. El panel declaró la imagen completa. En la pantalla quedaba una congelación de varios segundos.
La palabra equivocada era «completa». El sistema había observado el cierre de una unidad declarada, no la llegada de todo lo necesario para reconstruirla.
La RFC 9628 resuelve un problema importante: cómo transportar VP9 por RTP y hacer visibles sus capas temporales y espaciales. Para ello separa dos formas de describir las referencias entre imágenes. Esa claridad no elimina la pérdida, la selección intermedia, el estado oculto del codec ni la política de playout.
Flexible significa que la referencia viaja con la imagen
Cuando F=1, el Picture ID debe estar presente. Si la imagen es predicha, el descriptor lleva al menos un P_DIFF y como máximo tres. Cada valor resta una distancia al PID actual, módulo siete o quince bits, para nombrar una imagen anterior. Un cero no es válido.
El beneficio es adaptabilidad. El encoder puede cambiar su jerarquía temporal sin esperar a que una tabla periódica se sustituya. Un receptor que conserva el paquete puede leer las dependencias declaradas de esa imagen concreta.
Pero la lista no contiene la disponibilidad. Una referencia puede haber sido perdida, descartada de forma legítima por un intermediario o expulsada del búfer. Tampoco contiene la integridad de todos los fragmentos de la imagen actual. El grafo cierra en el papel aunque uno de sus nodos no exista en el receptor.
Por eso el verificador debe consultar dos conjuntos: referencias declaradas y referencias realmente retenidas. Confundirlos convierte la intención del emisor en estado del destinatario.
No flexible significa que el pasado está compartido
Con F=0, la economía de bytes depende de una memoria común. Los datos SS pueden declarar un grupo periódico de imágenes. Para cada posición registran el TID, si es un punto de subida y los P_DIFF aplicables. El PID de la imagen clave inaugura la primera posición; los PIDs siguientes recorren el grupo módulo N_G.
TL0PICIDX añade otra coordenada: se incrementa en imágenes de capa temporal cero y, para capas superiores, identifica la base temporal de la que dependen. También vuelve a cero después de 255.
Un observador que entra a mitad de sesión no puede deducir la fase con seguridad a partir de un paquete aislado. Necesita el bloque SS, el key picture que lo ancló, la longitud del grupo y la secuencia de cambios. Si un SFU reinicia sólo su memoria estructural, puede reenviar paquetes válidos usando una interpretación antigua o desplazada.
La RFC restringe el cambio de modo a la primera trama de una imagen clave y limita cuándo se sustituye SS. Esas reglas deberían convertirse en eventos de auditoría. Un bloque SS sin su frontera temporal es una tabla sin fecha de vigencia.
El contador puede saltar sin pérdida y continuar con pérdida
Picture ID no es un identificador global. Puede tener siete o quince bits, comienza aleatoriamente, se envuelve y puede cambiar de ancho. Al ampliar se rellena con ceros; al reducir se trunca. El receptor no puede asumir que el tamaño permanece estable.
Todas las capas espaciales de una misma imagen comparten PID. Incluso una imagen con show_frame=0, creada para actualizar referencias y no para aparecer, recibe un PID distinto. El número sigue la unidad de transporte, no lo que vio el usuario.
Además, un intermediario puede eliminar imágenes según la estructura, de modo que los PIDs recibidos no tienen por qué ser consecutivos. Un hueco no prueba pérdida. A la inversa, recibir PIDs adyacentes no demuestra que cada fragmento RTP dentro de una imagen estuviera presente.
La clave de investigación debe incluir SSRC, timestamp, ancho y valor del PID, modo, época SS, capa y punto de captura. La cifra sola se recicla demasiado pronto para sostener una conclusión.
B, E y Marker dibujan límites, no rellenan huecos
Una trama VP9 empieza en un paquete con B=1 y termina con E=1. El Marker RTP corresponde al último paquete de la capa espacial más alta del cuadro. Si el intermediario elimina capas superiores, debe mover el Marker a la última capa que conserva.
Estas señales son indispensables para montar unidades. No son un checksum de presencia. Puede llegar E aunque falte un paquete intermedio. Puede llegar Marker aunque la capa inferior requerida por D=1 esté dañada. Puede reescribirse correctamente el final de cuadro y mantenerse una referencia temporal ausente.
La RFC no ofrece acceso granular a una parte de una trama VP9. La prueba necesita la cobertura de números de secuencia desde B hasta E, un timestamp coherente, orden espacial y el Marker correcto después de cualquier selección. «Vi el final» no equivale a «recibí el todo».
El grafo visible no incluye todas las dependencias del codec
VP9 conserva tablas de probabilidad usadas por la codificación entrópica y de árboles. Una trama puede depender de ese estado aunque el grafo de imágenes no lo muestre. error_resilient_mode reinicia esa memoria adicional.
En un flujo escalable, el encoder debe evitar que una trama posterior use estado procedente de otra que pueda eliminarse legítimamente. De ahí las reglas específicas para la capa espacial base y para capas superiores con dependencia inter-capa.
Este punto impide declarar éxito sólo con un recorrido de P_DIFF. La estructura RTP puede ser coherente y el bitstream quedar ligado a un estado ausente. La especificación de VP9 y un decodificador real son autoridades posteriores. La primera dice qué debería significar la carga; el segundo muestra qué pudo reconstruir.
Cada bit concede una inferencia pequeña
TID y SID identifican capas. D afirma dependencia respecto de la capa espacial inmediatamente inferior del mismo cuadro. U marca un punto desde el cual las capas temporales superiores no dependerán de ciertas imágenes anteriores. Z avisa que las capas espaciales superiores no necesitan la trama actual y permite descartarla en una selección adecuada.
Ninguno es una nota de calidad. U=1 no prueba que el punto llegó. Z=1 no demuestra que descartarlo respetó la política comercial o la preferencia del usuario. SID=2 no fija por sí solo la resolución visible. D=0 elimina una relación espacial y deja intactas las temporales.
El SFU necesita registrar su propia acción: regla de selección, capa objetivo, paquetes omitidos, Marker reescrito y razón de congestión. Si sólo guarda el bit que le permitía actuar, conserva la autorización técnica y pierde la decisión operativa.
RPSI acerca la evidencia al receptor, no al ojo
RPSI permite que un receptor devuelva el Picture ID de una golden frame o altref frame correctamente decodificada, o que prefiera una referencia conocida tras una pérdida. Es un dato más fuerte que la mera presencia del PID: habla desde el lado que intentó decodificar.
Aun así, no certifica que todas las capas del cuadro fueran utilizables, que el playout eligiera esa salida ni que llegara dentro de su ventana temporal. FIR solicita un refresco total y LRR uno limitado. El artículo anterior sobre RFC 9627 estudia la distancia entre esa orden y la recuperación. Aquí, RPSI sirve para mostrar que incluso un acuse de decodificación tiene un objeto más estrecho que la imagen vista.
La cadena debe nombrar cada transición: estructura emitida, paquete transportado, referencia conservada, frame validado, imagen decodificada y salida presentada.
SDP define el diccionario antes que el paquete
VP9 se anuncia con un payload type dinámico y un reloj de 90 kHz. profile-id es una configuración simétrica; si falta, se infiere Profile 0. max-fr y max-fs expresan capacidades del receptor, no resultados medidos.
La propia RFC contempla que contenido pregrabado o un relay selectivo no disponga de una versión dentro de esos límites. Una respuesta SDP aceptada no prueba el comportamiento posterior. Si la negociación cambia y el observador sigue interpretando el mismo número de payload type con el diccionario anterior, todos los campos siguientes pueden parecer bien formados y pertenecer al contrato equivocado.
Por ello el recibo comienza en oferta y respuesta: versión, mapeo, perfil, capacidades, SSRC y renegociaciones. La dependencia no tiene significado operativo fuera de esa época.
Fuentes
- Heng Lu — Minimum Initial Specification
- Heng Lu — Running-Code Primacy
- IETF Datatracker — historia de RFC 9628
- Especificación del bitstream y decodificación VP9 v0.6
- IANA — parámetros RTP
- RFC 3264 — Offer/Answer
- RFC 3550 — RTP
- RFC 4585 — feedback RTP/AVPF
- RFC 5104 — control de codec
- RFC 7667 — topologías RTP
- RFC 8866 — SDP
- RFC 9626 — Video Frame Marking
- RFC 9627 — Layer Refresh Request
- RFC 9628 — estado
- RFC 9628 — HTML
- RFC 9628 — texto canónico
- RFC 9628 — XML canónico
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance

