<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.meego.com/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.meego.com/index.php?title=Special:Contributions/Liushouqun&amp;feed=atom&amp;limit=50&amp;target=Liushouqun&amp;year=&amp;month=</id>
		<title>MeeGo wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.meego.com/index.php?title=Special:Contributions/Liushouqun&amp;feed=atom&amp;limit=50&amp;target=Liushouqun&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Liushouqun"/>
		<updated>2013-05-22T21:18:02Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-07-04T01:07:12Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 3, Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
== 1, Short expression of the need ==&lt;br /&gt;
&lt;br /&gt;
The TV industry, and in particular IPTV, has used browsers for years to create TV portals. In IPTV, specialized companies, such as ANT (Cambridge, UK), Opera (Oslo, Norway), or Access (Tokyo, Japan) have created specialized browsers for these use cases.&lt;br /&gt;
These specialized browsers were optimized for TV, at the detriment of their potential to surf the open internet.&lt;br /&gt;
Today, the requirement to browse the open internet are imposed on TV, so there is a need to provide an “open internet” capable browser, which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which runs locally on the device and is written in AJAX. To enable the control of the TV and Media Center, an API accessible from JavaScript must be added to the browser.&lt;br /&gt;
&lt;br /&gt;
== 2, Purpose/audience ==&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
== 3, Overview ==&lt;br /&gt;
The internet world has created browsers for the PC. Assuming not only a mouse and a keyboard, but also 50 cm viewing with a multiple window presentation layer and a skilled human driving the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept, and the Live TV presentation remains in control of the UI all the time. The TV needs a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf OpenIPTV Forum DAE specification])&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV Forum DAE video playback control API (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
== 4, Documentation ==&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
== 5, Where is the code ==&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6, How to Build the MeeGo TV browser with UMMS support ==&lt;br /&gt;
Visit the &amp;quot;How to build&amp;quot; wiki page to build the browser&lt;br /&gt;
http://wiki.meego.com/TV_Browser_How_to_Build&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T01:01:38Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 1. Tuner and Broadcasting API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[File:TV-Channel-Seq.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T01:01:14Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* Tizen TV Browser Web API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[File:TV-Channel-Seq.png {{#if:476px||600px}}]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T00:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 1. Tuner and Broadcasting API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[File:TV-Channel-Seq.png {{#if:476px||600px}}]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T00:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 1. Tuner and Broadcasting API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[File:TV-Channel-Seq.png]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T00:48:55Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 1. Tuner and Broadcasting API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[TV-Channel-Seq.png]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/File:TV-Channel-Seq.png</id>
		<title>File:TV-Channel-Seq.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/File:TV-Channel-Seq.png"/>
				<updated>2012-07-04T00:48:40Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_Javascript_API</id>
		<title>TV Browser Javascript API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_Javascript_API"/>
				<updated>2012-07-04T00:45:50Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: /* 1. Tuner and Broadcasting API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tizen TV Browser Web API =&lt;br /&gt;
The [[TV Browser | Tizen TV Browser]] API refers and follows to the Open IPTV DAE ( [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1] ) specification&lt;br /&gt;
&lt;br /&gt;
== 1. Tuner and Broadcasting API ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.13&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
* '''Overview''':&lt;br /&gt;
The broadcasting API describes the video/broadcast embedded object needed to support display and control by a DAE application of scheduled content received over local tuner functionality available to an OITF, including the conveyance of the channel list to the server. The term “tuner” is used here to identify a piece of functionality to enable switching between different types of scheduled content services that are identified through logical channels. This includes IP broadcast channels, as well as traditionalbroadcast channels received over a hybrid tuner.&lt;br /&gt;
&lt;br /&gt;
[[File:MeGoTVChannel.jpg]]&lt;br /&gt;
&lt;br /&gt;
* ''' Implementation '''&lt;br /&gt;
The implementation is based on NPAPI. And the channel scan uses w-scan as the low-level scan library, the w-scan is wrapped into D-Bus service. The playback is based on UMMS, which is also D-Bus service.&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoTV-Impl.png]]&lt;br /&gt;
&lt;br /&gt;
* ''' Sequence '''&lt;br /&gt;
[[File:TV Channel Seq.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== 1.1 &amp;lt;video/broadcast&amp;gt; Embedded Object ===&lt;br /&gt;
MIME Type: &amp;quot;video/broadcast&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;video/broadcast&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| width || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| height || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| fullscreen || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| currentChannel || Property Channel || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelChangeError || Event (Channel channel, Number errorState) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayStateChange || Event (Number state, Number error) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannenChangeSucceeded || Event (Channel channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| FullscreenChange || Event () || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelConfig || Method ChannelConfig () || ||&lt;br /&gt;
|+&lt;br /&gt;
| bindToCurrentChannel || Method Channel (Channel) || ||&lt;br /&gt;
|+&lt;br /&gt;
| createChannelObject || Method Channel (Integer idType, String dsd, Integer id)|| ||&lt;br /&gt;
|+&lt;br /&gt;
| setChannel || Method void (Channel channel, Boolean trickplay, String contentAccessDescriptorURL) || ||&lt;br /&gt;
|+&lt;br /&gt;
| prevChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| nextChannel || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void () || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method Boolean (Integer volume) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer () || ||&lt;br /&gt;
|+&lt;br /&gt;
| release || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 ChannelConfig Class ===&lt;br /&gt;
The ChannelConfig object provides the entry point for applications to get information about available channels&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelList || Property ChannelList || the list of all available channels ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelScan || Event (Integer type, Integer progress, Integer frequency,Integer signalStrength, Integer channelNumber, Integer channelType, Integer channelCount,Integer transponderCount) || ||&lt;br /&gt;
|+&lt;br /&gt;
| ChannelListUpdate || Event (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| startScan || Method Integer (ChannelScanOptions options, ChannelScanParameters scanParameters) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stopScan || Method void () || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 ChannelList Class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''ChannelList class''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannel || Method Channel (String channelID) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelByTriplet || Method Channel (Integer onid, Integer tsid, Integer sid) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getChannelBySourceID || Method Channel (Integer sourceID) || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.4 Channel Class ===&lt;br /&gt;
{|&lt;br /&gt;
| ''' Channel class ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || ''' Type ''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| idType || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| ccid || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tunerID || Property String || optional ||&lt;br /&gt;
|+&lt;br /&gt;
| onid || Property Integer || DVB or ISDB original network ID ||&lt;br /&gt;
|+&lt;br /&gt;
| tsid || Property Integer || DVB or ISDB transport stream ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sid || Property Integer || DVB or ISDB service ID (for channels of type ID_DVB_* and ID_ISDB_*) ||&lt;br /&gt;
|+&lt;br /&gt;
| sourceID || Property Integer || ATSC source_ID value ||&lt;br /&gt;
|+&lt;br /&gt;
| freq || Property Integer || For analogue channels, the frequency of the video carrier in kHz ||&lt;br /&gt;
|+&lt;br /&gt;
| cni || Property Integer || For analogue channels, the VPS/PDC confirmed network identifier ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || The name of the channel. Can be used for linking analog channels without CNI ||&lt;br /&gt;
|+&lt;br /&gt;
| majorChannel || Property Integer || The major channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_*. ||&lt;br /&gt;
|+&lt;br /&gt;
| minorChannel || Property Integer || The minor channel number, if assigned. Value undefined otherwise. Typically used for channels of type ID_ATSC_* ||&lt;br /&gt;
|+&lt;br /&gt;
| dsd || Property String || this property defines the delivery system descriptor (tuning parameters) as defined by DVB-SI ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.5 ChannelScanOptions class ===&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' ChannelScanOptions ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| channelType || Property Integer || The types of channel that should be discovered during the scan. Valid values are TYPE_TV(0), TYPE_RADIO(1), or TYPE_OTHER(2)||&lt;br /&gt;
|+&lt;br /&gt;
| replaceExisting || Property Boolean || If true, any existing channels in the channel list managed by the OITF SHALL removed||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.6 ChannelScanParameters class ===&lt;br /&gt;
ChannelScanParameters is base of other channel scan parameters type&lt;br /&gt;
&lt;br /&gt;
* DVBTChannelScanParameters class&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| ''' DVBTChannelScanParameters ''' || || ||&lt;br /&gt;
|+&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| startFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| endFrequency || Property Integer || The start frequency of the scan, in kHz. ||&lt;br /&gt;
|+&lt;br /&gt;
| ofdm|| Property String || The Orthogonal Frequency Division Multiplexing (OFDM) for the indicating frequency ||&lt;br /&gt;
|+&lt;br /&gt;
| modulationModes || Property Integer || The modulation modes to be scanned. ||&lt;br /&gt;
|+&lt;br /&gt;
| bandwidth || Property String || The expected bandwidth ||&lt;br /&gt;
|}&lt;br /&gt;
=== 1.7 Sample Code ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3 &amp;lt;head&amp;gt;&lt;br /&gt;
 4 &amp;lt;script&amp;gt;&lt;br /&gt;
 5 function start_scan() {&lt;br /&gt;
 6 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 7 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 8 channelConfig.addEventListener(&amp;quot;onChannelScan&amp;quot;, function (channel) {&lt;br /&gt;
 9 // do your callback&lt;br /&gt;
 10 });&lt;br /&gt;
 11 channelConfig.startScan();&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 function stop_scan() {&lt;br /&gt;
 15 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 16 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 17 channelConfig.stopScan();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function prevChannel() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 22 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 23 channelConfig.prevChannel();&lt;br /&gt;
 24 }&lt;br /&gt;
 25 &lt;br /&gt;
 26 function nextChannel() {&lt;br /&gt;
 27 var plugin = document.getElementById(&amp;quot;broadcast_object&amp;quot;);&lt;br /&gt;
 28 var channelConfig = plugin.getChannelConfig();&lt;br /&gt;
 29 channelConfig.nextChannel();&lt;br /&gt;
 30 }&lt;br /&gt;
 31 &lt;br /&gt;
 32 &amp;lt;/script&amp;gt;&lt;br /&gt;
 33 &amp;lt;/head&amp;gt;&lt;br /&gt;
 34 &lt;br /&gt;
 35 &amp;lt;body&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 38 &amp;lt;object type=&amp;quot;video/broadcast&amp;quot; width=600 height=400 id=&amp;quot;broadcast_object&amp;quot;&amp;gt;&lt;br /&gt;
 39 the broadcast video window&lt;br /&gt;
 40 &amp;lt;/object&amp;gt;&lt;br /&gt;
 41 &lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;start_scan()&amp;quot;&amp;gt;Start Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_scan()&amp;quot;&amp;gt;Stop Scan&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &lt;br /&gt;
 45 &amp;lt;button onclick=&amp;quot;nextChanel()&amp;quot;&amp;gt;Next Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 46 &amp;lt;button onclick=&amp;quot;prevChanel()&amp;quot;&amp;gt;Prev Channel&amp;lt;/button&amp;gt;&lt;br /&gt;
 47 &amp;lt;/div&amp;gt;&lt;br /&gt;
 48 &amp;lt;/body&amp;gt;&lt;br /&gt;
 49 &lt;br /&gt;
 50 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration and setting APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.3&lt;br /&gt;
* '''Status''': Under development&lt;br /&gt;
=== 2.1 application/oipfConfiguration embed object ===&lt;br /&gt;
MIME type: &amp;quot;application/oipfConfiguration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''&amp;lt;application/oipfConfiguration&amp;gt; Object''' ||&lt;br /&gt;
|+&lt;br /&gt;
| Name || Type || Notes ||&lt;br /&gt;
|+&lt;br /&gt;
| configuration || Property Configuration || ||&lt;br /&gt;
|+&lt;br /&gt;
| localSystem || Property LocalSystem || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.2 Configuration class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredAudioLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredSubtitleLanguage || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| countryId || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| regionId || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrPolicy || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveEpisodes || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSaveDays || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrStartPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEndPadding || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| preferredTimeShiftMode || Property Integer|| ||&lt;br /&gt;
|+&lt;br /&gt;
| getText || Method String (String key) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setText || Method void (String key, String value) ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.3 LocalSystem class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| deviceID || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| systemReady || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| vendorName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| modelName || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| softwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hardwareVersion || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| serialNumber || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| releaseVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| majorVersion || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| minorVersion|| Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| oipfProfile|| Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| ciplusEnabled|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| standbyState|| Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| powerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| previousPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| timeCurrentPowerState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| volume || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| mute || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| outputs || Property AVOutputCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| networkInterfaces || Property NetworkInterfaceCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tuners || Property TunerCollection || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvStandard || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| pvrSupport || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setScreenSize || Method Boolean (Integer width, Integer height) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPvrSupport || Method Integer(Integer state) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setPowerState || Method Boolean (Integer type) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setDigestCredentials || Method Boolean (String protocol, String domain, String username, String password) || ||&lt;br /&gt;
|+&lt;br /&gt;
| clearDigestCredentials || Method Boolean (String protocol, String domain) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PowerStateChange || Event (Integer powerState) || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.4 NetworkInterface class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| ipAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| macAddress || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| connected || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled|| Property Boolean || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.4 AVOutput class ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| name || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| type || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| enabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| subtitleEnabled || Property Boolean || ||&lt;br /&gt;
|+&lt;br /&gt;
| videoMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| digitalAudioMode || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| audioRange || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| hdVideoFormat || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| tvAspectRatio || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedVideoModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedDigitalAudioModes || Property String || ||&lt;br /&gt;
|+&lt;br /&gt;
| supportedAudioRanges|| Property String || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 2.5 Sample code ===&lt;br /&gt;
Sample code of using configuration APIs&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function start_scan() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;config_object&amp;quot;);&lt;br /&gt;
 6 &lt;br /&gt;
 7 var configuration = plugin.configuration;&lt;br /&gt;
 8 &lt;br /&gt;
 9 console.log(configuration.countryId);&lt;br /&gt;
 10 &lt;br /&gt;
 11 var localSystem = plugin.localsystem;&lt;br /&gt;
 12 &lt;br /&gt;
 13 console.log(localSystem.deviceID);&lt;br /&gt;
 14 console.log(localSystem.vendorName);&lt;br /&gt;
 15 console.log(localSystem.softwareVersion);&lt;br /&gt;
 16 }&lt;br /&gt;
 17 &amp;lt;/script&amp;gt;&lt;br /&gt;
 18 &amp;lt;/head&amp;gt;&lt;br /&gt;
 19 &lt;br /&gt;
 20 &amp;lt;body&amp;gt;&lt;br /&gt;
 21&amp;lt;nowiki&amp;gt; &amp;lt;div id=&amp;quot;pluginContainer&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 22 &amp;lt;object type=&amp;quot;application/oipfConfiguration&amp;quot; id=&amp;quot;config_object&amp;quot; visible=false&amp;gt;&lt;br /&gt;
 23 The system configuration object&lt;br /&gt;
 24 &amp;lt;/object&amp;gt;&lt;br /&gt;
 25 &lt;br /&gt;
 26 &amp;lt;button onclick=&amp;quot;get_config()&amp;quot;&amp;gt;Get Configuration&amp;lt;/button&amp;gt;&lt;br /&gt;
 27 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 28 &amp;lt;/body&amp;gt;&lt;br /&gt;
 29 &lt;br /&gt;
 30 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Media Playback APIs ==&lt;br /&gt;
* '''Reference''': Open IPTV DAE specfication Section 7.14&lt;br /&gt;
* '''Status''': Already ready in MeeGo 1.2, need some effot to port to Tizen&lt;br /&gt;
=== 3.1 A/V control embed object ===&lt;br /&gt;
{|&lt;br /&gt;
| '''Name''' || '''Type''' || '''Notes''' ||&lt;br /&gt;
|+&lt;br /&gt;
| speed || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playPosition || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| playState || Property Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| setSource || Method Boolean (String uri) || ||&lt;br /&gt;
|+&lt;br /&gt;
| play || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| pause || Method void (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| stop || Method void (void ) || ||&lt;br /&gt;
|+&lt;br /&gt;
| seek || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| setVolume || Method void (Integer) || ||&lt;br /&gt;
|+&lt;br /&gt;
| getVolume || Method Integer (void) || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayerStateChanged || Event Integer || ||&lt;br /&gt;
|+&lt;br /&gt;
| PlayPositionChanged || Event Integer || ||&lt;br /&gt;
|}&lt;br /&gt;
=== 3.2 Sample Code ===&lt;br /&gt;
Sample code of using media APIs&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 1 &amp;lt;html&amp;gt;&lt;br /&gt;
 2 &amp;lt;head&amp;gt;&lt;br /&gt;
 3 &amp;lt;script&amp;gt;&lt;br /&gt;
 4 function play_function() {&lt;br /&gt;
 5 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 6 plugin.play();&lt;br /&gt;
 7 }&lt;br /&gt;
 8 &lt;br /&gt;
 9 function set_uri() {&lt;br /&gt;
 10 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 11 plugin.setSource(&amp;quot;file:///home/meego/Videos/sintel_trailer-240p.ogv&amp;quot;);&lt;br /&gt;
 12 }&lt;br /&gt;
 13 &lt;br /&gt;
 14 &lt;br /&gt;
 15 function stop_function() {&lt;br /&gt;
 16 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 17 plugin.stop();&lt;br /&gt;
 18 }&lt;br /&gt;
 19 &lt;br /&gt;
 20 function pause_function() {&lt;br /&gt;
 21 var plugin = document.getElementById(&amp;quot;plugin_id&amp;quot;);&lt;br /&gt;
 22 plugin.pause();&lt;br /&gt;
 23 }&lt;br /&gt;
 24 &lt;br /&gt;
 25 function player_state_changed(state) {&lt;br /&gt;
 26 console.log(&amp;quot;player state changed&amp;quot;);&lt;br /&gt;
 27 document.getElementById(&amp;quot;state&amp;quot;).innerHTML = &amp;quot;&amp;lt;b&amp;gt;State: &amp;quot; + state + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
 28 }&lt;br /&gt;
 29 &lt;br /&gt;
 30 function onload_function() {&lt;br /&gt;
 31 document.getElementById(&amp;quot;page&amp;quot;).innerHTML = &amp;quot;Loaded&amp;quot;;&lt;br /&gt;
 32 document.getElementById(&amp;quot;plugin_id&amp;quot;).addEventListener(&amp;quot;PlayStateChanged&amp;quot;, player_state_changed ,false );&lt;br /&gt;
 33 }&lt;br /&gt;
 34 &amp;lt;/script&amp;gt;&lt;br /&gt;
 35 &amp;lt;/head&amp;gt;&lt;br /&gt;
 36 &lt;br /&gt;
 37 &amp;lt;body onload=&amp;quot;onload_function()&amp;quot; &amp;gt;&lt;br /&gt;
 38 &amp;lt;embed type=&amp;quot;application/x-oipf&amp;quot; width=600 height=400 id=&amp;quot;plugin_id&amp;quot;&amp;gt;&lt;br /&gt;
 39 media playback window&lt;br /&gt;
 40 &amp;lt;/embed&amp;gt;&lt;br /&gt;
 41 &amp;lt;button onclick=&amp;quot;set_uri()&amp;quot;&amp;gt;SetUri&amp;lt;/button&amp;gt;&lt;br /&gt;
 42 &amp;lt;button onclick=&amp;quot;play_function()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
 43 &amp;lt;button onclick=&amp;quot;stop_function()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
 44 &amp;lt;button onclick=&amp;quot;pause_function()&amp;quot;&amp;gt;pause&amp;lt;/button&amp;gt;&lt;br /&gt;
 45 &lt;br /&gt;
 46 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;state&amp;quot;&amp;gt;&amp;lt;b&amp;gt;State&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 47 &amp;lt;/body&amp;gt;&lt;br /&gt;
 48 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/File:TV_Channel_Seq.jpg</id>
		<title>File:TV Channel Seq.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/File:TV_Channel_Seq.jpg"/>
				<updated>2012-07-04T00:44:54Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:25:51Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
== 1, Short expression of the need ==&lt;br /&gt;
&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
== 2, Purpose/audience ==&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
== 3, Overview ==&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf OpenIPTV Forum DAE specification])&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV video DAE playback control (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4, Documentation ==&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5, Where is the code ==&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6, How to Build the MeeGo TV browser with UMMS support ==&lt;br /&gt;
Visit &amp;quot;How to build&amp;quot; wiki page to build browser&lt;br /&gt;
http://wiki.meego.com/TV_Browser_How_to_Build&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:23:41Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf OpenIPTV Forum DAE specification])&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV video DAE playback control (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  6 How to Build the MeeGo TV browser with UMMS support&lt;br /&gt;
------------------&lt;br /&gt;
Visit &amp;quot;How to build&amp;quot; wiki page to build browser&lt;br /&gt;
http://wiki.meego.com/TV_Browser_How_to_Build&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_How_to_Build</id>
		<title>TV Browser How to Build</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_How_to_Build"/>
				<updated>2012-04-19T13:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to Build MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
== Get the Source Code ==&lt;br /&gt;
Checkout the browser source code from gitorious:&lt;br /&gt;
   $git clone git://gitorious.org/meego-middleware/meego-tv-browser.git&lt;br /&gt;
   $git checkout -b 874-base-webkit origin/874-base-webkit&lt;br /&gt;
&lt;br /&gt;
== Sync with 'gclient' ==&lt;br /&gt;
The MeeGo TV browser is based on Chromium, the third party dependency packages need to be sync with gclient tool.&lt;br /&gt;
&lt;br /&gt;
*Install depot_tool&lt;br /&gt;
 Follow the chromium [http://dev.chromium.org/developers/how-tos/install-depot-tools Install the depot_tool] guide to install depot_tool&lt;br /&gt;
&lt;br /&gt;
* rename the browser source folder “meego-tv-browser” to “src” &lt;br /&gt;
   $mv meego-tv-browser src&lt;br /&gt;
&lt;br /&gt;
* edit the &amp;quot;.gclient&amp;quot; file in the parent folder of browser source tree, add the following content in to .gclient:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       solutions = [&lt;br /&gt;
         { &amp;quot;name&amp;quot;        : &amp;quot;src&amp;quot;,&lt;br /&gt;
           &amp;quot;url&amp;quot;         : &amp;quot;http://src.chromium.org/svn/trunk/src&amp;quot;,&lt;br /&gt;
           &amp;quot;custom_deps&amp;quot; : {&lt;br /&gt;
             &amp;quot;src/third_party/WebKit&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/LayoutTests&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/Source&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/Tools/DumpRenderTree&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/Tools/Scripts&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/Tools/gdb&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/WebKit/WebKitLibraries&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/chrome/tools/test/reference_build/chrome&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/chrome_frame/tools/test/reference_build/chrome&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/chrome/tools/test/reference_build/chrome_linux&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/chrome/tools/test/reference_build/chrome_mac&amp;quot;: None,&lt;br /&gt;
             &amp;quot;src/third_party/hunspell_dictionaries&amp;quot;: None,&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;safesync_url&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
         },&lt;br /&gt;
       ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* run &amp;quot;gclient sync --force&amp;quot; in src directory&lt;br /&gt;
     $gclient sync --force&lt;br /&gt;
&lt;br /&gt;
== Build the browser ==&lt;br /&gt;
Build the browser with following commands:&lt;br /&gt;
   $./build/gyp_chromium -D component=shared_library -D disable_nacl=1&lt;br /&gt;
   $ make -j6 chrome BUILDTYPE=Release &amp;quot;CXXFLAGS +=-D_UMMS_&amp;quot; V=1&lt;br /&gt;
Need to add &amp;quot;CXXFLAGS +=-D_UMMS_&amp;quot; to enable UMMS support.&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser_How_to_Build</id>
		<title>TV Browser How to Build</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser_How_to_Build"/>
				<updated>2012-04-19T13:14:08Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: Created page with &amp;quot;= How to Build MeeGo TV Browser =   1 Get the Source Code -------------------------------- Checkout the browser source code from gitorious:    $git clone git://gitorious.org/meeg...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to Build MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
 1 Get the Source Code&lt;br /&gt;
--------------------------------&lt;br /&gt;
Checkout the browser source code from gitorious:&lt;br /&gt;
   $git clone git://gitorious.org/meego-middleware/meego-tv-browser.git&lt;br /&gt;
   $git checkout -b 874-base-webkit origin/874-base-webkit&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf OpenIPTV Forum DAE specification])&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV video DAE playback control (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:09:31Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to OpenIPTV Forum DAE specification)&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV video DAE playback control (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:07:22Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to OpenIPTV Forum DAE specification)&lt;br /&gt;
** Open IPTV Forum DAE configuration API (section 7.3)&lt;br /&gt;
** Open IPTV Forum DAE broadcasting API (section 7.13)&lt;br /&gt;
** Open IPTV video DAE playback control (section 7.14)&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser   git branch 874-base-webkit &amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T13:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to OpenIPTV OIPF DAE specification)&lt;br /&gt;
** Open IPTV broadcasting API&lt;br /&gt;
** Open IPTV video playback control API&lt;br /&gt;
** Open IPTV system configuration API&lt;br /&gt;
* Remote control integration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf Declarative Application Environment V2.1]&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T08:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Asset browsing&lt;br /&gt;
* Web API for TV (conform to OpenIPTV OIPF DAE specification)&lt;br /&gt;
** Open IPTV broadcasting API&lt;br /&gt;
** Open IPTV video playback control API&lt;br /&gt;
** Open IPTV system configuration API&lt;br /&gt;
* Remote control integration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T07:59:34Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Give access to all the TV features from Javascript&lt;br /&gt;
** System configuration&lt;br /&gt;
** Asset browsing&lt;br /&gt;
** Video and Audio&lt;br /&gt;
** PVR and Pause live TV.&lt;br /&gt;
** Video and Audio output &lt;br /&gt;
** Input devices&lt;br /&gt;
* Web API for TV&lt;br /&gt;
** Open IPTV broadcasting API&lt;br /&gt;
** Open IPTV video playback control API&lt;br /&gt;
** Open IPTV system configuration API&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/TV_Browser</id>
		<title>TV Browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/TV_Browser"/>
				<updated>2012-04-19T02:59:12Z</updated>
		
		<summary type="html">&lt;p&gt;Liushouqun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo TV Browser =&lt;br /&gt;
&lt;br /&gt;
  1 Short expression of the need&lt;br /&gt;
--------------------------------&lt;br /&gt;
TV industry and in particular IPTV has used browsers for years to create TV portals. In IPTV specialised companies such as ANT (Cambridge, UK), Opera (Oslo, Norway) or Access (Tokyo, Japan) have created specialised browser for these use cases.&lt;br /&gt;
These specialised browsers were optimized for TV at the detriment of their possibility to surf the open internet.&lt;br /&gt;
As today the requirement to browse the open internet is imposed on TV, there is a need to provide an “open internet” capable browser which can be integrated in a TV and can be used to create TV portals.&lt;br /&gt;
These portals are commonly used to provide the business logic which run locally on the device an is written in AJAX. To enable the control of the TV and Media Centre an API accessible from JavaScript must be added to the Browser.&lt;br /&gt;
&lt;br /&gt;
  2 Purpose/audience&lt;br /&gt;
--------------------&lt;br /&gt;
The purpose of this document is to provide an understanding of the solution which has been developed by the MeeGo TV project. It addresses the developers who will have to deliver a working implementation.&lt;br /&gt;
&lt;br /&gt;
  3 Overview&lt;br /&gt;
-------------&lt;br /&gt;
The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast.&lt;br /&gt;
Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues.&lt;br /&gt;
Controllable by an external application.&lt;br /&gt;
* Instant start&lt;br /&gt;
* Accept alternative input method&lt;br /&gt;
* Support HW accelerated Video&lt;br /&gt;
* Give access to all the TV features from Javascript&lt;br /&gt;
** System configuration&lt;br /&gt;
** Asset browsing&lt;br /&gt;
** Video and Audio&lt;br /&gt;
** PVR and Pause live TV.&lt;br /&gt;
** Video and Audio output &lt;br /&gt;
** Input devices&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  4 Documentation&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
* [[File:Meego TV JavaScriptAPI requirement.pdf | Requirement for a TV Javascript API]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[File:Meego TV Browser V0.2.odt | Requirement for TV Browser]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
User Manual&lt;br /&gt;
* [[TV Browser Control API]]&lt;br /&gt;
* [[TV Browser Javascript API]]&lt;br /&gt;
* [[TV Browser Video HW acceleration]]&lt;br /&gt;
* [[TV Browser Transparency Management]]&lt;br /&gt;
&lt;br /&gt;
Related Topics&lt;br /&gt;
* Universal Multi Media Service [[umms | UMMS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  5 Where is the code&lt;br /&gt;
-----------------&lt;br /&gt;
Visit MeeGo OBS and search for meego-tv-browser &lt;br /&gt;
https://build.meego.com&lt;br /&gt;
&lt;br /&gt;
or directly in the GIT repo&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/meego-tv-browser&amp;lt;br&amp;gt;&lt;br /&gt;
http://meego.gitorious.org/meego-middleware/mutter-meego-tv&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liushouqun</name></author>	</entry>

	</feed>