DVBProject / DVB-I-Reference-Client

DVB-I Reference Client being developed by Sofia Digital
MIT License
51 stars 20 forks source link

support &inlineImages= query parameter #87

Open paulhiggs opened 1 year ago

paulhiggs commented 1 year ago

Provide support for the &inlineImages query parameter in the service lisr requstry request and response.

if &inlineImages=true, then only those service offerings that use RFC 2397 data: URL in the relavant <ServiceListOffering><RelatedMaterial@HowRelated="*1001.1">

As an enhancement, the SLR could process the HTTPS based service list logo, converting it to a data: URI.

Mini SLR provided in backend/servicelist_registry.php to be supported. Equivelant update in the DVB-I Reference CSR is optional.

sofia-tsa commented 9 months ago

Do we need to support hexBinary inline images? The base64 encoded inline image is easy to implement but the hex binary seems to require additional processing in the client. I couldn't find a way to use hex data directly in the img src attribute.

sofia-tsa commented 9 months ago

Just noticed that the Icon element in the Provider element that is used for service provider logo uses the "urn:tva:mpeg7:2008" namespace but the RelatedMaterial element for the service list logo uses "urn:tva:metadata:2023" namespace

Icon element in the Provider Element:

<sld:Provider>
 <mpeg7:Icon>
  <mpeg7:MediaUri>https://sofiadigital.com/wp-content/uploads/2022/08/sofiadigital_logo_vertical_rgb_whitetxt-300x100.png</mpeg7:MediaUri>
 </mpeg7:Icon>
 <mpeg7:Icon>
  <mpeg7:InlineMedia type="image/x-png">
   <mpeg7:MediaData64>iVBORw0KGgoAA...</mpeg7:MediaData64>
  </mpeg7:InlineMedia>
 </mpeg7:Icon>

RelatedMaterial-element in the ServiceListOffering-element:

<sld:RelatedMaterial>
 <tva:HowRelated href="urn:dvb:metadata:cs:HowRelatedCS:2020:1001.1"/>
 <tva:MediaLocator>
  <tva:MediaUri>https://sofiadigital.com/wp-content/uploads/2022/08/sofiadigital_logo_vertical_rgb_whitetxt-300x100.png</tva:MediaUri>
 </tva:MediaLocator>
 <tva:MediaLocator>
 <tva:InlineMedia type="image/x-png">
   <mpeg7:MediaData64>iVBORw0KGgoAA...</mpeg7:MediaData64>
  </tva:InlineMedia>
 </tva:MediaLocator>
</sld:RelatedMaterial>

The Icon element is defined in the mpeg7:AgentType from which the Provider-element is extended, so that is the reason for this but still, slightly confusing using the same elements for same purpose but with a different namespace.

paulhiggs commented 9 months ago

Given that this is how XML extensibility works, I am not sure if there is any other way (unless we change to elementFormDefault="unqualified"

paulhiggs commented 9 months ago

Do we need to support hexBinary inline images? The base64 encoded inline image is easy to implement but the hex binary seems to require additional processing in the client. I couldn't find a way to use hex data directly in the img src attribute.

Base64 should be sufficient. The reference client does not need to offer 100% coverage