• NCL Users API: gingaf Support and New Proposed User Attribute for <rule>

    Alan L. V. Guedes, Paulo Victor Borges, Daniel Moraes, Sergio Colcher
    University of Reading, UK | PUC-Rio, BR

    XXXII Simpósio Brasileiro de Sistemas Multimídia e Web (WebMedia 2026)

    Website do Artigo (slides, código, demo):
    https://alanlivio.github.io/paper-webmedia26-multiuser/

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Agenda

  • Contexto e Definição do Problema
  • Funcionalidades e Demo do gingaf
  • Suporte Multiusuário no gingaf
  • Extensão Proposta para NCL
  • Considerações Finais
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Contexto e Definição do Problema

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Contexto: A Mudança de Paradigma da TV 3.0

De STBs de telespectador único para salas de estar multiusuário

  • Convergência broadcast-broadband, dispositivos de segunda tela e TV personalizada.
  • Múltiplos membros da família assistem à tela principal compartilhada acompanhados por smartphones e tablets.

Limitação do Ginga-NCL Legado (TV 2.0 / 2.5)

  • Contexto gerenciado unicamente por variáveis globais de system (system.language, system.caption).
  • Modificações afetam todos os telespectadores globalmente, impedindo a personalização individualizada.
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Padrão TV 3.0: A API de Usuários do NCL

Padronização

  • Padronizada na norma SBTVD ABNT 25608 para a TV Digital de Nova Geração.

Novos Elementos XML

  • <userBase>: Contêiner para definições de perfis de usuários ativos.
  • <userProfile>: Representa perfis de telespectadores; suporta consultas JSON externas via src.
  • <settings user="...">: Vincula atributos de perfil de usuário específicos a propriedades NCL.
  • Links com avaliação causal: Avaliam atributos de usuário (ex.: gender, age) para conduzir a apresentação.
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Funcionalidades e Demo do gingaf

NCL Users API & Rule Extension — WTVDI / WebMedia 2026
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

NCLua, HTML+CCWS, HTML Embutido e Multiusuário

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

NCL Multiusuário

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Suporte Multiusuário no gingaf

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Mídia Setting de Usuário: currentUser

Atualiza automaticamente propriedades <media> do tipo Settings para o usuário

<media id="uSettings" type="application/x-ncl-user-settings" user="currentUser">
  <property name="id"/>
  <property name="name"/>
  <property name="gender"/>
  <property name="age"/>
</media>
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Mídia Setting de Usuário: currentUser

Exemplo de NCLua reativo ao usuário:

<link xconnector="onBeginOrAttributionSet">
  <bind role="onBegin" component="mVideo"/>
  <bind role="onEndAttribution" component="uSettings" interface="id"/>
  <bind role="get1" component="uSettings" interface="id"/>
  <bind role="get2" component="uSettings" interface="name"/>
  <bind role="get3" component="uSettings" interface="gender"/>
  <bind role="get4" component="uSettings" interface="age"/>
  <bind role="set" component="mUserLua" interface="userId">
    <bindParam name="var" value="$get1"/>
  </bind>
  <bind role="set" component="mUserLua" interface="userName">
    <bindParam name="var" value="$get2"/>
  </bind>
  <bind role="set" component="mUserLua" interface="userGender">
    <bindParam name="var" value="$get3"/>
  </bind>
  <bind role="set" component="mUserLua" interface="userAge">
    <bindParam name="var" value="$get4"/>
  </bind>
</link>
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Exemplo de NCLua reativo ao usuário:

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Base de Usuários e Perfis Declarativos

  • Registro Centralizado: Máquina de estados headless resolve e armazena em cache os perfis ativos.
  • Seleção Dinâmica via JSON: Avaliação de consultas declarativas (adult_query.json).
<userBase>
  <userProfile id="pAdult" src="adult_query.json" max="1"/>
</userBase>

...

<media id="uSettings" type="application/x-ncl-user-settings" user="currentUser">
  <property name="id"/>
  <property name="name"/>
  <property name="gender"/>
  <property name="age"/>
</media>
<media id="uAdult" type="application/x-ncl-user-settings" user="pAdult">
  <property name="gender"/>
</media>
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Caso de Uso: Publicidade Direcionada

Adaptação Personalizada de Conteúdo: exibe o anúncio geral (ad_general.png) sem usuário adulto masculino ativo, ou o anúncio direcionado (ad_male.png) quando ativo.


  • (a) Sem usuário adulto masculino (anúncio geral)


  • (b) Com usuário adulto masculino (anúncio direcionado)

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Caso de Uso: Publicidade Direcionada

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Extensão Proposta para NCL

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Limitação da Abordagem com Links Causais

  • Conectores customizados com <compoundCondition> e <assessmentStatement> para cada teste.
  • Exige múltiplos <link> para apresentação condicional.
<connectorBase>
  <causalConnector id="onBeginTestVarStart">
    <compoundCondition operator="and">
      <simpleCondition role="onBegin"/>
      <assessmentStatement comparator="eq">
        <attributeAssessment role="var" attributeType="nodeProperty" eventType="attribution"/>
        <valueAssessment value="$value"/>
      </assessmentStatement>
    </compoundCondition>
    <simpleAction role="start"/>
  </causalConnector>
</connectorBase>
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Solução Proposta: Atributo user para <rule>

Estendendo Regras Declarativas Nativas do NCL

  • O NCL suporta nativamente <switch> e <rule> para adaptação de conteúdo.

  • Proposta: Adicionar o atributo user aos elementos <rule>:

    <rule id="rAdultMale" user="pAdult" var="gender" comparator="eq" value="male"/>
    

Seleção Declarativa via <switch>

  • Agrupa nós de mídia alternativos diretamente dentro de um único <switch>.
  • Elimina definições de conectores e vinculações complexas com múltiplos links.
  • Aprimora drasticamente a ergonomia de autoria e a manutenibilidade.
NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Considerações Finais

NCL Users API & Rule Extension — WTVDI / WebMedia 2026

Considerações Finais

Contribuições Principais:

  • Implementação da API de Usuários NCL (TV 3.0): Suporte arquitetural em código aberto no gingaf com resolução dinâmica de perfis e vinculação reativa de propriedades.
  • Extensão da Linguagem NCL: Proposta do atributo user para o elemento <rule>, permitindo apresentação adaptativa e concisa via <switch>.

Validação: Casos de testes automatizados e validação em cenários de aplicações multiusuário.

Obrigado!