Cargando...
Cargando...
Cada decisión, propuesta y corrección importante que dio forma a la especificación — directamente de las discusiones cerradas del grupo de trabajo en GitHub. Despliega cualquier entrada para leer el hilo original.
36
Resueltas
17
Publicadas
2025–2026
Periodo
6
Grafismos
5
Manifiesto
5
GDD / Datos
4
Correcciones
16
Otros
El logo de Matrox en el sitio oficial se cambió por la marca actual, Matrox Video.
¿Qué debe hacer el servidor con datos que no cumplen el schema del manifiesto? PUEDE validarlos, pero la respuesta queda a criterio de la implementación — sin error ni código de estado obligatorio.
HDR (CICP, SMPTE ST 2094-50) quedó fuera del alcance: OGraf no es un sistema de renderizado. Un campo mínimo de espacio de color en renderRequirements sigue en discusión en la #98.
Matrox pidió que Matrox ORIGIN figurara como renderizador OGraf comercial, y se añadió al sitio oficial.
Falcon Graphics, un animador gratuito en el navegador que exporta OGraf, se presentó al grupo de trabajo y se invitó a sus creadores a participar.
La documentación legible de la Server API se bloqueaba al expandir RenderTargetSchema, porque los esquemas del GDD son recursivos. La página Swagger se rehízo para mostrarlos.
La Server API ahora devuelve las miniaturas que declara el grafismo, y el controlador puede mostrar vistas previas sin abrir el paquete.
Parecía que GET /graphics/{graphicId} no devolvía los parámetros. Sí lo hace: el manifiesto completo, con el schema; era la documentación la que no lograba mostrarlo (ver #44).
No hay discrepancia: 'properties' en el manifiesto es JSON Schema estándar para los campos de un objeto, y los datos que envía la Server API son una instancia de ese schema.
Los manifiestos ahora pueden declarar cuánto dura la animación de cada acción — por step en playAction — para que editores no lineales como DaVinci Resolve inicien la salida a tiempo de terminar en el último frame del clip.
El GDD ganó el tipo select-multiple: el controlador puede mostrar una lista de opciones en la que el operador marca ninguna, una o varias.
La Server API puede vivir bajo cualquier prefijo de URL. El /ograf/v1 de los ejemplos es una convención, no un requisito, así que un servidor puede exponer OGraf dentro de una API mayor.
¿Debería OGraf tener un transporte en tiempo real (WebSockets / AsyncAPI) para actualizaciones fotograma a fotograma? Cerrado sin cambios: la API REST cubre el 80 % de los casos, y la idea solo vuelve con un caso de uso real sólido.
Los steps no tienen por qué ser lineales. El grupo de trabajo acordó que la especificación no define qué significa un step; cómo pasa el grafismo de un step a otro queda en manos de quien lo crea.
Un almacén de datos con nombre en el servidor, al estilo de CasparCG, se consideró útil pero demasiado difícil de especificar de forma genérica. Queda como función propia de cada fabricante, fuera de OGraf.
Los grafismos ya pueden declarar una imagen en miniatura opcional en su manifiesto, lo que da a controladores y editores una vista previa de cada grafismo.
Los manifiestos ya pueden declarar qué versión del motor de renderizado necesitan, de modo que los servidores pueden rechazar grafismos pensados para un runtime incompatible.
Se añadió una indicación opcional de orden de propiedades a los schemas del manifiesto para que las interfaces muestren los campos en un orden predecible y decidido por el diseñador.
Los diseñadores ya pueden marcar qué campos del manifiesto forman el nombre visible de un grafismo — así es más fácil identificar las instancias en las playlists.
La especificación OGraf tiene oficialmente licencia MIT — lo que despeja cualquier duda sobre uso comercial, forks y obras derivadas.
Los manifiestos ya pueden agrupar propiedades relacionadas del schema para que los formularios las muestren en secciones con título en lugar de una lista plana.
Se añadieron metadatos de posición a los tipos GDD para que los grafismos sensibles a la composición (rótulos inferiores, moscas, tickers) lleven su ubicación prevista en pantalla.
Los grafismos que necesitan acceso a internet (datos en directo, fuentes remotas, APIs externas) ahora lo declaran de antemano — así los operadores pueden ejecutarlos con seguridad en entornos aislados de la red.
Se eliminó el número de fotogramas que devolvía goToTime(). Los grafismos simplemente saltan al tiempo indicado y retornan — menos ceremonia, menos casos límite.
GDD incorporó un tipo de entrada con texto enmascarado para campos sensibles como contraseñas, claves de API o cualquier dato que no deba verse en texto plano en la interfaz del controlador.
Graphics Data Definition (GDD), que antes era una especificación aparte, se integró en el propio OGraf — una especificación, una única fuente de verdad, un solo lugar donde consultar.
GDD incorporó un tipo de entrada desplegable para que los manifiestos limiten un campo a un conjunto fijo de opciones sin lógica de validación propia.
Se aclaró exactamente cuándo debe resolver su promise playAction() — eliminando la ambigüedad entre 'ha empezado a reproducirse' y 'ha terminado de reproducirse'.
Se precisó en la especificación cómo se exponen los grafismos OGraf como Web Components — lo que hace las implementaciones más coherentes entre renderizadores.
Se documentaron las implicaciones de AdditionalProperties: false en los schemas — es estricto a propósito, pero te pilla si no lo esperas durante la validación.
Se aclaró la diferencia entre los grafismos basados en pasos (etapas discretas) y los grafismos gobernados por updateAction (actualizaciones continuas de datos). Dos patrones, dos casos de uso.
Los archivos de manifiesto usan ahora la convención de extensión *.ograf.json — así los grafismos OGraf se reconocen al instante en un sistema de archivos o un repositorio.
Marcó el rumbo de cómo deben cargar y referenciar fuentes los grafismos OGraf — reconociendo las fuentes como una cuestión de primer orden para una tipografía con calidad de broadcast.
Se concluyó que GDD sigue siendo necesario — lo que abrió el camino a su posterior integración en el propio OGraf (ver #24).
Se corrigieron los manifiestos de ejemplo para que referenciaran correctamente sus implementaciones en JavaScript — de lo contrario, los ejemplos ni siquiera funcionaban.
Las discusiones abiertas, las propuestas y el trabajo en curso están en el repositorio OGraf de la EBU. Cualquiera puede leer, comentar y contribuir.
Únete a la discusión en GitHub