`
`
`
`Supporting Common Interactive Television Functionality
`through Presentation Engine Syntax
`
`Alain Delpuch
`
`James Whitledge
`
`Jean-Rene Menand
`
`Emmanuel Barbier
`
`Kevin Hausman
`
`Debra Hensgen
`
`Danny Su
`
`Page 1
`
`NFLE 1003 - Page 3
`
`
`
`
`
`3 Current support within DASE and DVB MHP .............................................................. 86
`3.1 Support within DASE ............................................................................................. 86
`3.2 Support within DVB-MHP ..................................................................................... 86
`4 Proposal for authoring .................................................................................................... 87
`4.1 Showstoppers .......................................................................................................... 87
`4.1.1 Minimal proposal ............................................................................................. 87
`4.1.2 Additional proposed enhancements ................................................................. 87
`4.2 Prefetch prioritization ............................................................................................. 88
`ANNEXE: Extended Uniform Resource Identifiers for Television Broadcasts .............. 89
`
`Page3
`
`NFLE 1003 - Page 5
`
`
`
`
`
`
`
`single application can run at a time, having the application declare its own color palette
`works well. However, in a system where multiple applications can run simultaneously, if
`each application declares its own color palette the viewer experience can be disturbing,
`particularly if both applications attempt to use different parts of the screen at the same
`time. In a system where there is sufficient memory to support true color, multiple
`applications can share the screen with no problem because the fixed color palette is large
`enough to accommodate the multiple different hues required by each application.
`Therefore, HTML user agents should support, when possible, true color. When memory
`constraints are such that true color is not supportable, they may support a combination
`fixed-variable palette, where the variable components are specified by the application.
`Depending upon the implementation, the first m of n colors may be fixed, with the 01
`h
`color being fully transparent. When there are 8 bits available for color (256 color
`palette), the first 188 colors may be as specified in the DVB MHP color palette. The
`remaining colors may be taken from the first colors specified by the color palette
`accompanying the image; hence an application content designer may ensure that the most
`important colors are placed first into the palette. If it is necessary to support multiple
`applications, each of which brings its own color palette, then the system may choose to
`place into the palette a mixture of the first colors in each of the application/image specific
`palettes. Therefore, pop-up applications, for example, may be written using only the
`fixed colors. Similarly, any time it is expected that multiple images will be sharing the
`screen, the author of those applications may get best results by using only the fixed colors
`in one of the images or the same palette for both of the images. The description of how
`an application identifies its palette is provided in the next sub-section entitled "The clut
`property."
`
`Transparency between the graphics and video plane is extremely important in interactive
`television, as the viewer often wants to be able to see the video that is running under the
`interactive text or images. Since the underlying video is opaque, if the Porter-Duff rule
`were used for composing the graphics and video plane, the video would show through the
`graphics when the graphics are transparent. The Porter-Duff SRC rule is easy to compute
`because the transparency of one object over top of another chooses the alpha
`(transparency) value of the object on top as the transparency of the composed objects.
`This result in some cases may appear somewhat un-natural looking; however, graphic
`artists are accustomed to planning their layout with this rule in mind.
`
`Standards such as DVB MHP specify that the SRC-Over rule is the default rule for
`composing graphics over video; however, because it is computationally complex to
`compute the resulting alpha value, DVB MHP receivers are permitted to approximate the
`SRC-Over rule using the SRC rule (unless the object [or part thereof] on the top is
`completely transparent, in which case, they are not supposed to apply the pixel values for
`the transparent object [or part thereof]). It appears as though evolving W3C standards
`are leaning toward specifying SRC-Over as the default composition rule also. Therefore
`HTML tv user agents may use the defaults specified by the latest standards; however, in
`many cases receivers may not have sufficient computational power to actually compute
`the SRC-Over composition; hence, in those boxes, HTML user agents may be permitted
`to approximate SRC-Over using, for example, the Porter-Duff SRC rule. The palette
`
`Page6
`
`NFLE 1003 - Page 8
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`The "broadcast:" URL's syntax is defined formally in Annex A of this document. The
`syntax of this form of URL is partially informally described in this section and examples
`of its use for tuning and stream selection are presented here as well.
`
`In MPEG broadcast environments, it is possible to associate a globally (or at least
`network) unique identifier with a broadcast stream. Use of such a unique identifier within
`a URL scheme, as shown informally below, may allow the unique identification of
`resources within that stream.
`
`broadcast: { / /<service_address>{; <component_list>}}
`
`A service address is defined as follows:
`
`service address
`
`. .
`
`channel_ name I
`current
`
`where:
`
`channel name
`and
`current
`
`specifies a DNS-style name that uniquely identifies the channel,
`
`specifies the service currently selected.
`
`The component _list is a comma-separated list identifying specific components in the
`stream. The component_list is defined as follows:
`
`component _list
`component
`stream_ type
`
`..
`component *(","component)
`stream_type "=" ( track_tag I "default") I
`"video" I "audio" I ...
`
`This section mostly describes the semantics associated with the video and audio stream
`types, even though other stream types are permitted within the URL. The complete
`semantics associated with the other types are documented in the section entitled
`"Obtaining Applications and Data" below.
`
`A track_ tag is an ASCII string of arbitrary length, typically between 1 and 4 bytes. A
`track_tag of "O" is equivalent to the default component of the specified stream type. For
`example, the URL "broadcast://tfl .fr;video=O,audio=eng" identifies the default video
`stream and the English audio stream on the channel named "tfl.fr".
`
`3.2.1 A/V MIME types associated with the broadcast: url
`When no component list is specified, the MIME type corresponding to the broadcast:
`URL is application/mpeg.service and this type corresponds to a service as defined in
`MPEG-2. Hence, such a MIME type would contain not only video, audio, and subtitles,
`but also the data that is multiplexed on the same service with them, e.g., html and/or
`procedural code applications.
`
`Page 15
`
`NFLE 1003 - Page 17
`
`
`
`When a video component is specified, the MIME type corresponding to the broadcast:
`URL is video/mpeg.
`
`Similarly, when an audio component is specified, the MIME type corresponding to the
`broadcast: URL is audio/mpeg.
`
`As shown in the examples below, it is possible to refer to multiple elementary streams in
`a single URL; when such is the case, ifthe streams referred to include only a single video
`stream and a single audio stream which is synchronized with that video stream, then the
`resulting streams may be considered to be of type video/mpeg; otherwise, the type of the
`multiple streams may be type application/mpeg.service.
`
`3.2.2 Examples
`
`The next section gives one complete example of how tuning and service selection could
`be accomplished within HTML. This section simply explains the meaning of several
`example URLs, which, in some cases, if used as in the complete example shown in the
`next section, could result in tuning and/or stream selection.
`
`broadcast:
`Identifies the currently tuned service_address and component_ list for the primary
`pipe (see below). This usage is similar to "tv:" in the DASE specification and
`"dvb://current.av" in the MHP specification. So, for example, this may be used
`within an HTML element to re-size and re-locate the currently playing video.
`
`broadcast://cnn.com
`Identifies the CNN TV channel and all of its component streams. This form of
`the URL can be used to request that the TV tuner switch channels. This URL in a
`service selection context causes the automatic selection of the default streams.
`That is, when used in a service selection context, the user-agent will (if the
`application is appropriately authorized) tune to the new channel and automatically
`select the default video stream, select the default audio stream (based on the
`preferred language), select the default sub-titles and teletext if identified in the
`user's current preferences, and select the default data carousel.
`
`broadcast://cnn.com;audio=eng
`Identifies the CNN TV channel and explicitly selects only the English audio
`stream. Documents use this form of the URL to explicitly reference a specific
`elementary stream.
`
`broadcast://current;audio=eng,video=current
`Selects the English audio stream on the current service. This URL allows the
`author to switch the current audio stream without explicitly knowing the current
`service address, and without changing the currently selected video stream.
`
`Page 16
`
`NFLE 1003 - Page 18
`
`
`
`
`
`any resources that are required between the source and destination (e.g., CA hardware,
`I/O buffers).
`
`Before the user agent starts up, a set of pipes are defined. This set of pipes represent all
`of the possible connections between stream sources and destinations that could be
`represented on a particular hardware platform. However, because these are abstractions,
`it is possible to have a defined pipe without having all of the hardware required by the
`pipe to be currently allocated to that particular pipe. A defined pipe where all of the
`hardware has not been allocated to it is said to be in an "unrealized" state. A pipe is
`"realized" when all required hardware has been allocated to that pipe.
`
`The JS programmer can use the pipes array to:
`•
`select a pipe
`•
`set the source of a pipe
`•
`set the destination of a pipe if it is a file
`•
`control the speed of a pipe, if the source is thus
`controllable, and also be able to set the location when
`such is possible
`select the components of a stream that will be sent to
`the destination
`add or remove event listeners
`and request that a new pipe be started for recording
`purposes.
`
`•
`•
`
`•
`
`The JS programmer can easily determine which pipe is being used for a given image by
`using the id associated with that image. For example, ifthere is an HTML snippet
`included that states
`<img id= 'foo" src= "tv:cnn.com ">
`
`then, the JS programmer may refer to Joo.pipe and may thus invoke any methods which
`are described below and may read/write the values in the attributes as permitted by the
`definition below.
`
`3.4.1 The Pipes Collection
`
`Object Model Reference:
`[window] .navigator. tv. pipes[ i]
`[window] .navigator. tv. pipes. primary
`
`The pipes array above is a collection ofTvPipe objects that are described below. The
`primary object is a reference to a pipe object that can be settable or gettable injavascript.
`
`Page 18
`
`NFLE 1003 - Page 20
`
`
`
`The TvPipe object
`The TvPipe object has the following properties, methods, and collections.
`
`Properties:
`
`name
`src
`
`realized
`status
`
`destination
`
`type
`position
`
`speed
`
`event info
`
`String that identifies this pipe in the pipes[] array. (Read-only)
`URL corresponding to the current channel (read/write)
`-- may correspond to either a file: or broadcast: url
`"true" I "false" (read-only)
`"connected" I "connecting" I "disconnected" I "disconnecting"
`-- (read-only)
`only if pipe is currently being used for recording (read/write)
`-- url corresponding to file:
`"record" I "display" (read-only)
`unsigned int
`(read-write)
`-- # of ms into the event
`(read-write)
`-- 100 is normal speed
`-- 0 is still
`-- 500 is 5 times normal speed
`-- -100 is normal speed, backwards
`-- -500 is 5 times normal speed, backwards
`-- 50 is half speed, forwards, etc.
`name-value pairs about the current event (read-only)
`
`int
`
`Collections:
`Components[] array of component objects (see below),
`-- indicating those which are currently selected
`
`Methods:
`
`record(component[], uri)
`Starts the recording of the associated components to the file named
`in the uri if sufficient resources exist.
`addEventListener()
`removeEventListener()
`dispatchEvent()
`
`3.4.2 The TvComponent object
`
`A TvComponent object represents a data stream carrying possible video, audio,
`interactive data, subtitles, or other content types.
`
`Page 19
`
`NFLE 1003 - Page 21
`
`
`
`Object Model Reference:
`[window ].navigator.tv.pipes[i]. components[i]
`
`Properties:
`name
`
`selected
`
`type
`
`String that represents the name (i.e., the value of the track_ tag)
`-- of the component (read-only)
`"true" I "false" (read/write)
`-- Boolean indicating that this component has been selected
`"audio"j"video"j"data"j"subtitles"j"teletext" ... (read-only)
`
`Page 20
`
`NFLE 1003 - Page 22
`
`
`
`
`
`
`
`
`
`can send an HTTP request for the specified URL. In order to allow proper cache
`behavior the broadcast provides expiration dates and other cache control information that
`are found in HTTP headers:
`
`1. Cache-Control (HTTP 1.1) header information that specifies the maximum
`amount of time that a particular page should be considered to be fresh.
`
`2. In a response to either the head-end or the client, the origin server may add the
`following headers in order to allow efficient and accurate caching:
`- expires, indicating time at which the page should be considered stale
`- last-modified, indicating the last time the data was modified at the origin server
`- ETag (HTTP 1.1) that gives value specifically indicative of the current page
`(some generation number or checksum), for use with a conditional request.
`
`3. Conditional get requests that require the set-top-box to verify either the last(cid:173)
`modified value or the ETag value may result in an appropriate request to the origin
`server, which may return the Not Modified status code if the data is still valid. The set(cid:173)
`top box however "believes" the expiration time provided in a header; the server-side may
`modify the actual expiration time from the value to which it was set by the Origin Server.
`
`Since network congestion can (and often will) delay a response as much as the broadcast
`manager does, ifthe data becomes obsolete during the transit, HTTP 1.1 specifies that the
`response should not be revalidated in order to avoid infinite loops. This rule should be
`followed whether the data comes from the broadcast or directly from the origin server.
`
`4.1.3 Relative URLs
`
`The use ofrelative URLs, which specify neither "http:" nor "broadcast:" may
`transparently work with either protocol. The OpenTV HTML/JS product may
`automatically translate the relative URL with one containing the same prefix that was
`used to obtain the page which contained the reference. Therefore, if a page was obtained
`using the "broadcast:" URL, then all relative references within that page may also be
`obtained using the "broadcast:" URL. Because it is possible that initial pages of an
`application can be downloaded via "broadcast:" for example, it is possible to author
`applications which never explicitly specify either "broadcast:" or "http:" yet may perform
`correctly with any user agent.
`
`4.1.3.1 Caching Hints
`
`There are two important clues that can be present within an HTML application to aid the
`HTML/JS client-side product in determining which resources have high priority for
`caching. The two clues are represented by the pre-requisite meta data in the header and
`
`Page 24
`
`NFLE 1003 - Page 26
`
`
`
`the link style which is used to indicate which pages may, though not needed immediately,
`soon be requested by the application.
`
`Pre-Requisite Meta header
`
`As explained above in section 2.2, it is typically required that all resources that are
`labeled as a pre-requisite, as in:
`
`<META name="prerequisite" content="http://www.cnn.com/background.mpg">
`
`be available prior to the rendering of a page for presentation. Therefore, resources which
`have been labeled as prerequisites for the current page, or for pages that are indicated as a
`link (see below), have a high priority for caching.
`
`Using the Link data for pre-fetching
`
`The link element, which, when present, must always appear in the <head> portion of the
`page, indicates the resources that might be desired by the viewer of the current page.
`Therefore, resources listed in this element are good candidates for pre-fetching into the
`cache. However, if a CSS document, for example is listed in the link element, it becomes
`possible that it may be applied to the current document rather than to a document which
`would be cached for later use. In order to avoid such a possibility, user agents should
`recognize the new value, prefetch, for the rel attribute. Therefore, if a resource is
`indicated in a link statement in the head, and it is identified as having a prefetch
`relationship, then the set-top box may know that it is a good candidate for caching and
`that it should not be applied immediately to the current page.
`
`4.2 Modem Control
`In Europe, and elsewhere, local communications are still expensive and it might be
`necessary to warn the user and perhaps display the communication price. It is up to the
`system to actually open and close connections; however, it is useful for the application to
`notify the system when it is finished with a system. Also, in many networks, it is
`common for different applications to require connections to different phone numbers,
`rather than to a single phone number associated with a particular ISP. In such systems it
`is common for the different numbers to be associated with a single modem bank; the
`different numbers are often used for accounting and other information. Hence, the
`HTML/JS application needs to notify the system when it finishes using a connection and
`needs to be able to request a connection, providing appropriate parameters. Therefore,
`user agents may support the following methods on the navigator.modem object.
`
`navigator.modem.disconnect()
`indicates to the system that the application has
`
`finished
`
`using the connection. There are no events associated with completion.
`In fact, if an application invokes this method
`navigator.modem.connect( string parameter, int ms_timeout)
`
`Page 25
`
`NFLE 1003 - Page 27
`
`
`
`-- the string parameter could contain, for example, a phone number to
`which the system should connect. The ms_ timeout parameter
`indicates how long, in ms, the system should try to connect.
`
`The 'modem' object provides the connection status as a read-only property.
`
`The system automatically generates connection events when something happens on the
`modem.
`
`The following connection events are possible:
`( success, failure, disconnect_ occurred)
`
`Page26
`
`NFLE 1003 - Page 28
`
`
`
`
`
`
`
`
`
`5.4 Key Input
`
`In Open TV products, applications specify sets of keys for which they request notification
`by the system. HTML applications written for OpenTV products can specify for which
`keys they wish to receive notification by stipulating sets of key groups shown in the key(cid:173)
`list property below. If the system grants the key group request, then notification of the
`key press is given only to the requesting application and hence may not be delivered to
`the system. For example, an application may know that a viewer should only be entering
`digits between 1 and 8, yet wants to be forgiving enough so that if the viewer should
`enter a 0 or a 9, the channel will not change. In this case, the application can request
`notification of all of the numeric keys, ignoring anything except the digits between 1 and
`8.
`
`It is possible that in some networks there may be a pre-defined set of keys that all pages
`which do not specify otherwise, will receive.
`
`It was decided that this CSS property only applies to the body element - this was already
`agreed. Can also do something different on an on-focus usingjavascript, but there's no
`sense in making this easy because it is not recommended.
`
`5.5 Key codes
`There are two major groups of key events. The first contains the text Event event. The
`textEvent event indicates that text information has been entered, either in the form of
`printable characters or non-printable text information such as modifier keys. text Event
`events are sometimes but not necessarily accompanied by the events of the second major groups
`of key events, keydown and keyup.
`
`TextEvent
`
`This event indicates that text information has been entered. The text information
`entered can originate from a variety of sources. It could, for example, be a
`character resulting from a keypress. It could also be a string resulting from an
`input method.
`
`The keydown and keyup events comprise the second group of key events. These events are
`fired to indicate the physical motion of the keys on the character generation device. Depending on
`the input system being used, textEvent events may or may not be generated for each pair of
`keydown and keyup events.
`
`key down
`
`keyup
`
`The keydown event occurs when a key is pressed down.
`
`Page 30
`
`NFLE 1003 - Page 32
`
`
`
`The keyup event occurs when a key is released.
`
`All those events share the following attributes:
`
`TextEvent,keydown,keyup:
`bubbles: yes
`cancelable: yes
`context info: O
`context outputString: output generated by the key event or null.
`context keyVal: Unicode character generated by the key event, or 0.
`context virtkeyVal:
`virtual key code generated by the key event if the key
`event has not a Unicode value, or DOM VK UNDEFINED. Here
`is the list of virtual key codes:
`
`const
`const
`const
`const
`canst
`const
`const
`const
`const
`canst
`canst
`const
`canst
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`const
`canst
`const
`const
`const
`canst
`canst
`canst
`canst
`const
`const
`con st
`con st
`const
`const
`const
`const
`con st
`
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`unsigned
`
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`long
`
`DOM VK UNDEFINED = OxO;
`DOM_VK_RIGHT_ALT = OxOl;
`DOM_VK_LEFT_ALT = Ox02;
`DOM_VK_LEFT_CONTROL = Ox03;
`DOM_VK_RIGHT_CONTROL = Ox04;
`DOM_VK_LEFT_SHIFT = OxOS;
`DOM_VK_RIGHT_SHIFT = Ox06;
`DOM_VK_LEFT_META = Ox07;
`DOM_VK_RIGHT_META = OxOB;
`DOM_VK_CAPS_LOCK = Ox09;
`DOM VK DELETE = OxOA;
`DOM VK END = OxOB;
`DOM VK ENTER = OxOC;
`DOM VK ESCAPE = OxOD;
`DOM VK HOME = OxOE;
`DOM VK INSERT = OxOF;
`DOM_ VK_ NUM _LOCK = Oxl 0;
`DOM VK PAUSE = Oxll;
`DOM_VK_PRINTSCREEN = Oxl2;
`DOM_VK_SCROLL_LOCK = Oxl3;
`DOM VK LEFT = Ox14;
`DOM VK RIGHT = OxlS;
`DOM VK UP = Ox16;
`DOM VK DOWN= Oxl7;
`DOM_VK_PAGE_DOWN = OxlB;
`DOM_VK_PAGE_UP = Ox19;
`DOM VK Fl
`OxlA;
`DOM VK F2
`OxlB;
`DOM VK F3
`OxlC;
`DOM VK F4
`OxlD;
`DOM VK FS
`OxlE;
`DOM_VK_F6
`OxlF;
`DOM VK F7
`Ox20;
`DOM VK F8
`Ox21;
`DOM_VK_F9
`Ox22;
`DOM VK FlO
`Ox23;
`DOM VK Fll
`Ox24;
`DOM_VK_Fl2
`Ox25;
`DOM VK F13
`Ox26;
`DOM VK F14
`Ox27;
`DOM_VK_FlS
`Ox28;
`DOM VK F16
`Ox29;
`DOM VK F17
`Ox2A;
`DOM_VK_F18
`Ox2B;
`DOM VK F19
`Ox2C;
`DOM_VK_F20
`Ox2D;
`DOM_VK_F21
`Ox2E;
`
`Page 31
`
`NFLE 1003 - Page 33
`
`
`
`Ox2F;
`Ox30;
`Ox31;
`
`const unsigned long DOM_VK_F22
`const unsigned long DOM VK F23
`const unsigned long DOM VK F24
`context inputGenerated:
`false if the key event does not generate any visible
`output, such as the use of a function key or the
`combination of certain modifier keys used in conjunction
`with another key, true if the key event normally causes
`visible output. The value of inputGenerated does not
`guarantee the creation of a character, as the event may be
`canceled.
`Context numPad:
`If the number pad was used to generate the key event the
`value is true, otherwise the value is false.
`
`Key event methods
`
`checkModifier
`The CheckModifier method returns true or false, depending on
`whether a single modifier key is associated with a KeyEvent. The
`list of keys below represents the allowable modifier parameters
`for this method.
`
`DOM VK LEFT ALT
`-
`-
`-
`DOM VK RIGHT ALT
`-
`-
`-
`DOM VK LEFT CONTROL
`-
`-
`-
`DOM VK RIGHT CONTROL
`-
`-
`-
`DOM VK LEFT SHIFT
`-
`-
`-
`DOM VK RIGHT SHIFT
`-
`-
`-
`DOM VK META
`
`Parameters
`modi fer of type unsigned long The modifier which the user wishes to
`query.
`
`Return Value
`Boolean
`
`No Exceptions
`
`5.6 Event handlers
`
`The status of the modifier represented as a boolean.
`
`In addition to the DOM Level 2 listeners, Key events may be directed to the legacy key
`handlers:
`onKeyDown, onKeyPress, onKeyUp, plus onFocus, onBlur, onChange and onClick,
`onSubmit.
`
`Page 32
`
`NFLE 1003 - Page 34
`
`
`
`
`
`
`
`
`
`
`
`
`
`example, the initial state of an application is determined by broadcast signaling. A button
`press is used to cause an application to move from the minimized state to the maximized
`state. The application itself decides when to transition to the terminated state and when
`to transition to the minimized state. The system may suspend an application, due to the
`need to execute a pop-up application. Finally, signaling can cause the system to request
`that an application exit.
`
`As Core was originally designed to support only a single concurrent ( o-code) application,
`the above-defined life cycle is fairly simple. Also, the life cycle defined above is the
`default life cycle defined by Core; calls are provided that allow appropriate modifications
`by the network provider through their control task. For example, one of Open TV's
`customers does not even load any application until the viewer responds with an
`appropriate button selection once an icon is presented. Finally, some of the minor details
`were omitted from the above discussion in order to simplify it. For example, if an
`application is signaled to be started in maximized mode, the system will save key press
`information while the application is loading and deliver notification of the key presses, in
`the order made, to the application once it begins executing.
`
`The evolving interactive television specifications, most of which purport to support a
`multi-application environment, have similar states to those described above. similar to
`the Core ( o-code) application life cycle environment, changes between states are caused
`by broadcast signaling or the system or applications themselves. However, because these
`specifications support multiple applications concurrently, their application model
`definition and life cycle definition are necessarily more complex. For example, priorities
`can be signaled so that the implementation may determine which applications may
`execute in the case that the hardware is not capable of supporting all of the signaled
`applications simultaneously.
`
`2.1 HTML Application Model and Life Cycle
`
`The life cycle of the HTML application is complicated by several factors. First, the
`HTML/JS content is more dynamic than persistent. For example, currently an o-code
`application may only execute code or use data that is packaged within the carousel in the
`same directory as the first o-code module. Hence, the directory contents clearly define the
`application boundary, so, for example, the permissions signaled within the directory for
`security reasons may be applied to the entire contents of the directory. However,
`HTML/JS content may refer to other content that is to be acquired from some location
`other than the carousel. And, the content that is referred to may replace the initial content.
`It is not clear that it is safe in this case to apply security permissions to such replacing
`content. Therefore, due to this dynamic nature, it is more difficult to define an
`"application boundary." Secondly, it is expected that, where there are sufficient set-top
`box resources, OpenTV HTML products will support multiple concurrent HTML/JS
`applications.
`
`Page 38
`
`NFLE 1003 - Page 40
`
`
`
`However, even when an OpenTV HTML product does not support multiple concurrent
`applications and restricts the application to only that content carried within the same
`directory in the carousel, there are the life cycle issues that affect the way that a content
`author designs the HTML/JS content. For example, if it is determined that, as in both
`core and most of the evolving standards, the broadcaster can signal that an application
`may quit, it may be useful to invoke a handler written by the content author to respond to
`such an event. Similarly, there are other states, such as the DVB pause state, which
`might best be handled by an application-specific handler. For example, ifthe viewer is in
`the middle of a transaction involving an application, that application may wish to delay
`its termination until the transaction completes.
`
`Therefore, at a minimum, an application will be notified by the system when a
`broadcaster signals a new application available in the broadcast. The application will be
`notified via the O_exit event identified below. An application that determines that it does
`not want to exit immediately may extend its life by calling the event function
`preventDefault().
`
`0 exit
`bubbles: yes
`cancelable: yes
`context info: the reason for exiting.
`
`The application boundary will be formally defined in a later version of this document, as
`it will be needed for security. That is, ifsignaling indicates that a particular HTML
`application may have certain permissions, it is necessary to determine exactly which
`HTML pages may be granted those permissions. Most of the evolving television
`specifications define a way to determine which pages may be associated together to
`define this application boundary.
`
`j~J
`
`Page 39
`
`NFLE 1003 - Page 41
`
`
`
`
`
`i ~;¥
`
`each application declares its own color palette the viewer experience can be disturbing,
`particularly if both applications attempt to use different parts of the screen at the same
`time. In a system where there is sufficient memory to support true color, multiple
`applications can share the screen with no problem because the fixed color palette is large
`enough to accommodate the multiple different hues required by each application.
`Therefore, OpenTV's HTML products will support, when possible, true color. When
`memory constraints are such that true color is not supportable, they will support a
`combination fixed-variable palette, where the variable components are specified by the
`application. Depending upon the implementation, the first m of n colors will be fixed,
`with the oth color being fully transparent. When there are 8 bits available for color (256
`color palette), the first 188 colors will be as specified in the DVB MHP color palette.
`The remaining colors will be taken from the first colors specified by the color palette
`accompanying the image; hence an application content designer may ensure that the most
`important colors are placed first into the palette. If it is necessary to support multiple
`applications, each of which brings its own color palette, then the system may choose to
`place into the palette a mixture of the first colors in each of the application/image specific
`palettes. Therefore, pop-up applications, for example, may be written using only the
`fixed colors. Similarly, any time it is expected that multiple images will be sharing the
`screen, the author of those applications may ge