Google Code Prettify

星期六, 11月 13, 2010

HbbTV - JaveScript API 取得 DSM-CC stream events (上)

(以下資料歡迎轉載,請著名出處)
HbbTV架構瀏覽器應用層,解析接收的DSM-CC事件的呈現是採用JavaScript的API,因此底下介紹TS 102 796使用到的相關JavaScript API,包含增加和移除串流事件聆聽者(event listener)、Carousel物件存取XMLHttpRequest和內容購買之延伸application/oipfDrmAgent嵌入物件。


其中[內容購買之延伸application/oipfDrmAgent嵌入物件]應用操作程序部分由下集介紹 :P


定義JavaScriptAPI – 獲取DSM-CC事件串流
1. 增加和移除串流事件聆聽者(event listener)
下表在視訊/廣播物件(定義於OIPE DAE的規格書[2])增加的方法,應支援廣播同步事件。



增加與移除DSM-CC StreamEvent物件的操作程序


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)
NameDSM-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
  • userpassword:為忽略(Ignored)
  • status:當發現DSM-CC物件設為200,若設為404,表示沒有出現在carousel或已註銷carousel(因另一個要求)
  • statusText:設為空字串
  • 檔頭沒有關聯於carousel存取:
  • 忽略呼叫setRequestHeader()
  • getResponseHeader()getAllResponseHeaders()回傳一個空字串
  • responseTextresponseXML數值顯示於下表
  4 responseTextresponseXML數值


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)


HbbTV - JaveScript API 取得 DSM-CC stream events (下)
-------------------------------------------
參考文獻
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/.

沒有留言: