HbbTV架構瀏覽器應用層,解析接收的DSM-CC事件的呈現是採用JavaScript的API,因此底下介紹TS 102 796使用到的相關JavaScript API,包含增加和移除串流事件聆聽者(event listener)、Carousel物件存取XMLHttpRequest和內容購買之延伸application/oipfDrmAgent嵌入物件。
其中[內容購買之延伸application/oipfDrmAgent嵌入物件]應用操作程序部分由下集介紹 :P
定義JavaScript的API – 獲取DSM-CC事件串流
1. 增加和移除串流事件聆聽者(event listener)
Void addStreamEventListener(String targetURL, String eventName, EventListener listener) | ||
描述 | 為特定DSM-CC串流事件,加入listener。當發現此事件,StreamEvent事件發送(dispatch)和傳遞(pass)StreamEvent類型給事件listener,且如果發生錯誤時應發送事件。 當廣播傳送搭載相同事件(event)之MPEG私有資料段(含版本號),只有只有單純一個事件應被傳送。而當廣播傳送使用相同事件名稱的不同事件(也就是使用不同版本號),事件應根據每個不同接收事件而發送。 | |
參數 (arguments) | targetURL | 為URL,用來敘述事件表示DSM-CC StreamEvent物件或事件描述檔 |
eventName | 加入事件名稱(指DSM-CC StreamEvent 物件) | |
listener | 該事件的listener | |
Void removeStreamEventListener(String wvwntURL, String eventName, EventListener listener) | ||
描述 | 為特定DSM-CC串流事件名稱,移除串流事件listener。 | |
參數 (arguments) | targetURL | 為URL,用來敘述事件表示DSM-CC StreamEvent物件或事件描述檔 |
eventName | 移除事件名稱(指DSM-CC StreamEvent 物件) | |
listener | 該事件的listener |
(資料來源:ETSI)
表 2 DSM-CC StreamEvent事件的操作程序
Interface StreamEvent : Event{ readonly attribute String name; readonly attribute String data; readonly attribute String text; readonly attribute DOMString status; } | ||
性質 (properties) | Name | DSM-CC StreamEvent的事件名稱 |
data | DSM-CC StreamEvent的事件 - 16進位編碼數據 例如: 0A10B81033(長度為5 bytes) | |
text | DSM-CC StreamEvent的事件- 文本數據,如:UTF-8編碼之DSM-CC StreamEvent的事件字串,不能略過轉碼字元 | |
status | 當錯誤發生,發送trigger事件回應error串流,也就是為不存在的事件增加一個listener,或者當一個StreamEvent物件於註冊的listener,並從carousel移除的時候。 可能發送錯誤狀況的事件, A. 指StreamEvent物件,從carousel或透過寬頻連結皆找不到targetURL B. 指StreamEvent物件的targetURL,沒有包含特定事件的eventName參數 C. Carousel不能掛載(mount) D. 基本串流含StreamEvent事件表示,沒有常常被監控,是因為被另一個監測要求或從PMT內消失 一旦發送錯誤,listener自動透過終端註銷。 |
(資料來源:ETSI)
表 3 內部事件onStreamEvent對照使用到的DOM2事件與性質
內部事件 (intrinsic event) | 相關的DOM2事件 | DOM2事件性質(properties) |
onStreamEvent | StreamEvent | Bubbles: NO Cancelable: NO Context Info: name, data, text, status |
(資料來源:ETSI)
2. Carousel物件存取XMLHttpRequest
為了存取carousel file的內容,XMLHttpRequest物件採取下列的限制:
- 通過open()方法的參數:
- method: 應設為GET
- url:相關(在carousel檔案系統的目前所在頁面)或絕對的dvb:URL
- async:應設為true
- user和password:為忽略(Ignored)
- status:當發現DSM-CC物件設為200,若設為404,表示沒有出現在carousel或已註銷carousel(因另一個要求)
- statusText:設為空字串
- 檔頭沒有關聯於carousel存取:
- 忽略呼叫setRequestHeader()
- getResponseHeader()和getAllResponseHeaders()回傳一個空字串
- responseText和responseXML數值顯示於下表
表 4 responseText和responseXML數值
DSM-CC物件 | URL例子 | responseText | responseXML |
File | /weather/data.xml | 回傳test response entity body [3] | 若副檔名已存在.xml,則回傳XML response entity body [3] |
Directory | /weather | 字典內逗號分隔的物件清單 | null |
Stream Event | /weather/main/streamEvt1 | 逗號分隔的事件清單 | null |
(資料來源:ETSI)
舉例dvb:URL使用XMLHttpRequest物件/weather/data.xml:
dvb://tf1.B8/weather/data.xml (0xB8是個元件標籤(component tag)
1. ETSI TS 102 796 (V1.1.1) Hybrid Broadcast Broadband TV
2. Open IPTV Forum Release 2 specification, volume 5 (V2.0): “Declarative Application Environment”. NOTE: Available at http://www.openiptvforum.org/specifications.html
3. W3C Working Draft 19 November 2009: "XMLHTTPRequest". NOTE: Available at http://www.w3.org/TR/XMLHttpRequest/.
沒有留言:
張貼留言