throbber

`

`

`

`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket