Draft 1, 19 Aug 99
Ted Wugofski, Gateway
[ted.wugofski@gateway.com]
This document begins to explore what might be found in an XHTML document profile. The case of a digital television content specification was studied.
This document does not propose a specific naming convention or syntax; the use of XML is provided purely for the sake of clarity.
Examples of how the sections of a profile are used is provided in Appendix B and Appendix C, where a "minimum profile" and "main profile" are suggested.
This document was written in support of the W3C HTML Working Group and the ATSC T3/S17 specialist group. It is a working draft and may be modified or made obsolete at any time.
The <tuner>
section refers to the tuners
required to be in the receiver. This may affect what interfaces
are available to scripts within the document and the number of
media elements that can be supported simultaneously in the
document.
<num-required> {1 | 2} default=1
The <applications>
section refers to
support for broadcast applications (not applications that are
native to the receiver).
<per-channel>
{ 1 | 2 | 3 | 4 } default=1
<num-active>
integer default=1
<num-osd> integer
default=1
<num-bkgnd>
integer default=0
<num-persistant> integer default=0
<memory> integer
default=0
<storage> integer
default=0
The <external-interfaces>
section refers to
the ability for broadcast applications to access or be accessed
by external devices through physical interfaces. This often is
reflected in the availability of APIs, media types, and event
types.
<digital-baseband>
<input> boolean default=false
<output> boolean default=false
<pod> boolean
default=false
<return-channel>
<full-time> boolean default=false
<on-demand> boolean default=false
<batch> boolean default=false
<bandwidth> integer default=9600
<downstream-channel>
<bandwidth> integer default=9600
<input-devices>
<pointing> { none | discrete | point }
default=discrete
none
discrete
point
<alphanumeric> boolean default=true
<doubleclick> boolean default=false
<eia-775>
<source> boolean default=false
<sink> boolean default=false
The <video>
section refers to the ability
of the receiver to render video content. In a typical set-top
box, the video processing is separate from the graphics
processing.
<multi-decode> integer default=1
<scaling> { none
| fixed | aspect | free } default=none
none
fixed
<layout>
section.aspect
free
<positioning> { none | fixed | free }
default=none
none
fixed
<layout>
section.free
<layout> { none |
"name" } default=none
none
"name"
The <graphics>
section refers to the
ability of the receiver to render graphical content. In a typical
set-top box, the video processing is separate from the graphics
processing.
<osd-res>
<horiz> integer default=640
<vert> integer default=480
<aspect> boolean default=true
<color-depth> integer
default="16"
<alpha-channel>
integer default=0
The <decoders>
section refers to the
ability of the receiver to decode media types.
<video-atsc> boolean
default=true
<img-png>
<grayscale> boolean default="true"
<indexed> boolean default="true"
<truecolor> boolean default="true"
<pixel-depth> integer default="4"
Specifies the required PNG pixel depth.
<background-color> boolean
default=true
<alpha-channel> boolean default=false
<progressive-coding> boolean
default=true
<non-progressive-coding> boolean
default=true
<text> boolean default=true
<non-square-pixels> boolean
default=false
<gamma-correction> boolean
default=false
<chroma-correction> boolean
default=false
<img-jpeg>
<text/html>
<html>
<version> { none | 3.2 | 4.0 | 4.1 }
default=none
<dtd> { frameset | transitional | strict }
default=frameset
<xhtml>
<version> { 1 } default=1
<applet> boolean default=false
<base> boolean default=false
<bdo> boolean default=false
<editing> boolean default=false
<forms-basic> boolean default=false
<forms> boolean default=false
<frame> boolean default=false
<hypertext> boolean default=false
<image> boolean default=false
<image-map> boolean default=false
<intrinsic-events> boolean
default=false
<link> boolean default=false
<list> boolean default=false
<metainformation> boolean
default=false
<object> boolean default=false
<presentation> boolean default=false
<scripting> boolean default=false
<structure> boolean default=false
<stylesheet> boolean default=false
<tables-basic> boolean default=false
<tables> boolean default=false
<text> boolean default=false
<atsc-conditional-content> boolean
default=false
<atsc-event> boolean default=false
<text/css>
<css-1> boolean default=true
<css-2>
<aural> boolean default=false
<visual> boolean default=true
<paged> booleand default=true
<font-name-matching> boolean
default=true
<intelligent-font-matching> boolean
default=false
<font-downloading> boolean
default=false
<font-synthesis> boolean
default=false
<atsc-navigation> boolean
default=false
<atsc-synchronization> boolean
default=false
<text/plain> boolean
default=true
The <fonts>
section refers to the ability
of the receiver to support fonts.
<font-set>
The <native-apps>
section refers the
applications embedded in the receiver. The
<decoder>
section could be considered as a subset of
the <native-apps>
section, but native
applications are typically software and decoders may be
implemented in hardware or software.
<pe>
Specifies whether the presentation engine is
required.
<level> { none | base | main | high }
default=none
<version> integer default=1
<later-ok> boolean default=true
<dase-api>
<level> { none | base | main | high }
default=none
<version> integer default=1
<later-ok> boolean default=true
An example of a document profile for a "minimum profile" digital television receiver:
<document-profile>
<tuners>
<num-required>1</num-required>
</tuners>
<applications>
<per-channel>1</per-channel>
<num-active>1</num-active>
<num-osd>1</num-osd>
<num-bkgnd>0</num-bkgnd>
<num-persistant>0<num-persistant>
<memory>1</memory>
<storage>0</storage>
</applications>
<external-interfaces>
<digital-baseband>
<input>false</input>
<output>false</output>
</digital-baseband>
<pod>false</pod>
<return-channel>
<full-time>false</full-time>
<on-demand>false</on-demand>
<batch>false</batch>
<bandwidth>14400</bandwidth>
</return-channel>
<downstream-channel>
<bandwidth>14400</bandwidth>
</downstream-channel>
<input-devices>
<pointing>discrete</pointing>
<alphanumeric>false</alphanumeric>
<doubleclick>false<doubleclick>
</input-devices>
<eia-775>
<source>true</source>
<sink>false</sink>
</eia-775>
</external-interfaces>
<video>
<multi-decode>0</multi-decode>
<scaling>fixed</scaling>
<positioning>fixed</positioning>
<layout>fullscreen</layout>
<layout>pip</layout>
</video>
<graphics>
<osd-res>
<horiz>640</horiz>
<vert>480</vert>
<aspect>true</aspect>
</osd-res>
<color-depth>4</color-depth>
<alpha-channel>0</alpha-channel>
</graphics>
<decoders>
<video-atsc />
<img-png>
<grayscale>true</grayscale>
<indexed>true</indexed>
<truecolor>true</truecolor>
<pixel-depth>5</pixel-depth>
<background-color>true</background-color>
<alpha-channel>false</alpha-channel>
<progressive-coding>true</progressive-coding>
<non-progressive-coding>true</non-progressive-coding>
<text>true</text>
<non-square-pixels>false</non-square-pixels>
<gamma-correction>false</gamma-correction>
<chroma-correction>false</chroma-correction>
</img-png>
<img-jpeg />
<text/html>
<xhtml>
<version>1.0</version>
<applet>false</applet>
<base>false</base>
<bdo>false</bdo>
<editing>false</editing>
<forms-basic>true</forms-basic>
<forms>false</forms>
<frame>true</frame>
<hypertext>true</hypertext>
<image>true</image>
<image-map>true</image-map>
<intrinsic-events>false</intrinsic-events>
<link>true</link>
<list>true</list>
<metainformation>false</metainformation>
<object>true</object>
<presentation>false</presentation>
<scripting>true</scripting>
<structure>true</structure>
<stylesheet>true</stylesheet>
<tables-basic>true<tables-basic>
<tables>false</tables>
<text>true</text>
</xhtml>
<atsc-conditional-content>true</atsc-conditional-content>
<atsc-event>true</atsc-event>
</text/html>
<text/css>
<css-1 />
<css-2>
<aural>false</aural>
<visual>true</visual>
<paged>false</paged>
<font-name-matching>true</font-name-matching>
<intelligent-font-matching>false</intelligent-font-matching>
<font-downloading>true</font-downloading>
<font-synthesis>false</font-synthesis>
</css-2>
<atsc-navigation />
<atsc-synchronization />
</text/css>
<text/plain />
</decoders>
<fonts>
<font-set>atsc-font</font-set>
<font-set>atsc-bigfont</font-set>
</fonts>
<native-apps>
<pe>
<level>1</level>
<version>1.0</verison>
<later-ok>true</later-ok>
</pe>
<dase-api>
<level>1</level>
<version>1.0</version>
<later-ok>true</later-ok>
</dase-api>
</native-apps>
</document-profile>
<document-profile>
<tuners>
<num-required>1</num-required>
</tuners>
<applications>
<per-channel>4</per-channel>
<num-active>8</num-active>
<num-osd>4</num-osd>
<num-bkgnd>4</num-bkgnd>
<num-persistant>4<num-persistant>
<memory>10</memory>
<storage>1</storage>
</applications>
<external-interfaces>
<digital-baseband>
<input>false</input>
<output>true</output>
</digital-baseband>
<pod>true</pod>
<return-channel>
<full-time>false</full-time>
<on-demand>true</on-demand>
<batch>true</batch>
<bandwidth>14400</bandwidth>
</return-channel>
<downstream-channel>
<bandwidth>14400</bandwidth>
</downstream-channel>
<input-devices>
<pointing>discrete</pointing>
<alphanumeric>false</alphanumeric>
<doubleclick>false<doubleclick>
</input-devices>
<eia-775>
<source>true</source>
<sink>false</sink>
</eia-775>
</external-interfaces>
<video>
<multi-decode>0</multi-decode>
<scaling>fixed</scaling>
<positioning>fixed</positioning>
<layout>fullscreen</layout>
<layout>pip</layout>
</video>
<graphics>
<osd-res>
<horiz>800</horiz>
<vert>600</vert>
<aspect>true</aspect>
</osd-res>
<color-depth>16</color-depth>
<alpha-channel>0</alpha-channel>
</graphics>
<decoders>
<video-atsc />
<img-png>
<grayscale>true</grayscale>
<indexed>true</indexed>
<truecolor>true</truecolor>
<pixel-depth>5</pixel-depth>
<background-color>true</background-color>
<alpha-channel>false</alpha-channel>
<progressive-coding>true</progressive-coding>
<non-progressive-coding>true</non-progressive-coding>
<text>true</text>
<non-square-pixels>false</non-square-pixels>
<gamma-correction>false</gamma-correction>
<chroma-correction>false</chroma-correction>
</img-png>
<img-jpeg />
<text/html>
<xhtml>
<version>1.0</version>
<applet>false</applet>
<base>false</base>
<bdo>false</bdo>
<editing>false</editing>
<forms-basic>true</forms-basic>
<forms>false</forms>
<frame>true</frame>
<hypertext>true</hypertext>
<image>true</image>
<image-map>true</image-map>
<intrinsic-events>false</intrinsic-events>
<link>true</link>
<list>true</list>
<metainformation>false</metainformation>
<object>true</object>
<presentation>false</presentation>
<scripting>true</scripting>
<structure>true</structure>
<stylesheet>true</stylesheet>
<tables-basic>true<tables-basic>
<tables>false</tables>
<text>true</text>
</xhtml>
<atsc-conditional-content>true</atsc-conditional-content>
<atsc-event>true</atsc-event>
</text/html>
<text/css>
<css-1 />
<css-2>
<aural>false</aural>
<visual>true</visual>
<paged>false</paged>
<font-name-matching>true</font-name-matching>
<intelligent-font-matching>false</intelligent-font-matching>
<font-downloading>true</font-downloading>
<font-synthesis>false</font-synthesis>
</css-2>
<atsc-navigation />
<atsc-synchronization />
</text/css>
<text/plain />
</decoders>
<fonts>
<font-set>atsc-font</font-set>
<font-set>atsc-bigfont</font-set>
</fonts>
<native-apps>
<pe>
<level>1</level>
<version>1.0</verison>
<later-ok>true</later-ok>
</pe>
<dase-api>
<level>1</level>
<version>1.0</version>
<later-ok>true</later-ok>
</dase-api>
</native-apps>
</document-profile>