MS 11 簡介

MS10 是 Dolby 先前推出的 broadcast 解碼標準, 可以解兩路的 audio, 並且

(1) primary 5.1 CH 送去 re-encoder, 也就是 AAC 變 Dolby.

(2) primary down-mix 成 2 CH 輸出

(3) secondary  (Audio Description) down-mix 成 2-CH 和 (2) mix, 給盲人用

MS11 增加了對 media playback 的支援, 而且輸出可以包括 media playback / 2-CH in 的結果.

(1) primary 5.1 CH 送去 re-encoder.

(2) primary 5.1 CH  輸出.

(3) secondary  (Audio Description) 和 (2) 的  mix 成 5.1 CH

(4) 外部的 media playback 5.1 CH decode 後和 (3) 或 (5) mix  成 5.1 CH

(5) 外的 2-CH PCM (比方說麥克風, DVD AO) 和 (3) 或 (4) mix  成 5.1 CH

(6) 最後有一個 2-CH down-mix, 可以輸出 (2) or (3) or (4), 包含了各種可能的選擇.

簡而言之, MS11 把原先放在 MS10 外部的 2CH mix module 移到架構當中, 而內部均保有 5.1 CH 的形態.

MS11 的變化形還包括把後處理的 Dolby Volume (恆定音量之用) 放在 5.1 CH down-mix 後面.

MS11 還沒有出台, 大約在 2010 的 8 月才會出 SDK.

基本上, 大多數的國家都是用 Dolby Digital (AC3) 或是 HE-AAC (Dolby Pulse) 在做音訊的數位廣播. DTS 雖然在藍光的世界占了一席之地, 講到廣播還是得臣服於 Dolby. 因此 Dolby 的架構對 STB 自然是很重要.

1-Seg and Full-Seg

最近遇到播巴西電視節目沒有聲音的 bug. 解這個問題的時候, 我發現巴西的規格很多都是葡萄牙文寫的, 雖然規格也有英文版, 但是想要看到英文版的討論區就比較難了.

巴西的數位電視規格採用日本的 ISDB-T, 將每個頻道的頻帶分為 13 段, 其中的 S0 (或是 ‘A’) 頻段用於 one-seg (1-seg), 主要是給 portable 的裝置, 例如手機來看 DTV.

剩下的 12 個 seg, 可以放一個 HDTV 或是多個 SDTV. 能夠接收完整 seg 的接收器 (STB or DTV) 稱為 full seg receiver. 只能收中間那個 seg 的, 稱為 one-seg receiver.

規格上說, full seg receiver 也可以選擇播 one-seg 裡面的 audio. 其實 one seg 的 audio 是比較高難度的 HE-AAC, 而 full seg 裡面反而是比較簡單但是有多聲道的 LC AAC.

[圖片修改自 wiki]

書到用時方恨少之 speech review

回想很多年以前, 我在做 speech 的時候, 曾經和成大的王駿發教授, 交大的吳炳飛教授學過很多東西. 不過現在連王教授的弟子吳宗憲教授都升任副院長了, 可見得真是光陰似箭…. 我不免又想到當時做 internet 的時候, 也曾經和張系國教授一起開過會. 只可惜我沒有買過他的書, 我看的那些都是從交大圖書館借的或是看報紙連載的, 雖然他的著作我每一本都讀過, 但是我並沒有甚麼 "皮牧師正傳" 之類的書可以請他簽名, 想想真是殘念啊! 總之, 白頭工男話當年, 當初腦海中的知識, 似乎也俱往矣囉!

千金難買早知道, 現在我們又要做 speech 的東西了. 稍微 survey 一下, 現下的 speech 演算法還是免不了要用 LPC (linear-predictive coding) 與 LSFs (line-spectral frequencies). 過去從語音訊號中取得 LPC, 我只知道要先做 autocorrelation , 然後用 Levinsion -Durbin recursion 找出 LPC. 剛才看了一下, 還有個沒啥印象的 Yule-Walker method. 既然後者比前者晚了 10 年才推出 (2003 vs 1993), 不知道是否有比較厲害?!

得到 LPC 係數之後, 再轉到 frequency doamin,  其特性會比較'穩定. 所以 LPC 會轉成 LSP (line specttral pair) 或 LSF. 一般而言, LSP 會被量化, 就像 video coding 的 DCT 係數也要量化一樣. 接下來也和 video coding 一樣, 量化的結果再反量化, 補上一些內插值, 和原來的訊號計算求得殘餘量 (residual),  Residual 的部分就可以查表編碼了.

其中, 可以把先前獲得的資訊拿去動態建立 code book, 若是沿用固定的 code book 則可以省略這一步, 根據量化後的 LSP 和 residual, 我們可以從 code book 中找到最適當的 code 來代表這個 sub-block 或是 sub-frame. 當然, 此時多半會運用均值化 (normalization) 的技巧, 使得 11111 和 99999 都對應到一樣的 code, 只不過它們的 gain 不相同而已. 

複習起來, 差不多就是這樣了. 以後有想到什麼再來補充.

[note]

再看了一下, Levinson-Durbin 可以用來解 Yule-Walker equation. Yule-Walker method 本身是輸入 autocorrelation 數列, 輸出 PSD (power spectral density). 所以兩者之間沒有誰優誰劣的問題.

[ref]

1.  http://thesis.lib.cycu.edu.tw/ETD-db/ETD-search-c/getfile?urn=etd-0714105-140440&filename=9278046.pdf

2.  http://thesis.lib.ncu.edu.tw/ETD-db/ETD-search/getfile?URN=89521046&filename=89521046.pdf

Linux 下的 object 與 library 檔

從客戶那邊拿到一個 Linux 下的源代碼, 例行 ./config, ./make 之後, 在我的 Cygwin 底下生出很多檔案, 但是並沒有一個執行檔, 倒是有很多 .lo 和 .la, 這是平常我們用自家開發的 embedde system tool chain 所不會遇到的. 這些是甚麼東西呢?

首先我們要瞭解為何需要 L 字頭的檔案, 而不是 .o 或 .a 就好? 原因在於要支持動態連結 (dynamic link). Libtool 就是這樣的一個工具, 以便產生出有益於 dynamic link 的 .o 與 .a, 也就是 .lo 與 .la.

.la 檔是一個文字檔, 裡面描述了此 library 的 version, name 等等, 當然也定義了 dlopen, dlpreopen 要去開哪個 library. 靜態連結與動態連結的 library 分別記錄在 old_libaray = 'libxxx.a' 與 library_names = ' ' 的條目之下. 據說 .la 檔也可以包含另一個 .la 檔, 但我沒看過實例.

.lo 檔也是文字檔, 裡面大概包含 PIC object 和 non-PIC object 的 object name. 所謂 PIC 就是 position-independent code 的意思. 如果程式碼與 position 相關, 當然就不容易動態連結囉!

既然 .la 和 .lo 都是文字檔, 因此它們只是 libtool 底下的溝通工具, 透過 libtool 做 link 的時候, 它們便擔任把真正的 .a 和 .o 傳給 gcc 給工具. 

.so 這東西就是指 shared object, 適用於動態連結, 而 .o 就適合靜態連結, .a 則是 .o 的集合, 也就是靜態的 library.

[ref]

1. http://www.eetop.cn/blog/html/40/202640-8862.html (簡體)

SIP 小檔案

SIP 是指 Session Initiation Protocol, 規格可以從 RFC 3261 查到. 它是 application layer 的 protocol, 位在 OSI [ref 2] 的最上層, 需要建立在底層的 protocol (TCP / UDP) 才能運作.

另一方面, SIP 又只管通訊的建立, 實際上還要再搭配 RTP (Real-time Transport Protocol; RFC 1889)、RTSP(Real-Time Straming Protocol;RFC 2326 等通訊協定. [ref 1]

SIP 的功能包括下面五件事: [ref 1]

(1) User location:透過系統可以確認目前使用者的終端設備位置,以便邀請使用者加入多媒體會議或者是與使用者建立連線。可以想像類似目前手機定位功能。

(2) User availability:決定使用者是否有權限可以加入特定多媒體會議或族群。

(3) User capabilites:決定使用時的媒體型態與媒體參數。

(4) Session setup:建立呼叫端與被呼叫端之間的多媒體連線與連線參數設定功能。

(5) Session management:包含資料傳輸與結束連線、修改連線參數與服務要求等相關功能。

至於 SIP 的指令有六個: [ref 3]

SIP 標準中定義的六種方法
方法 說明
INVITE 初始化
ACK 初始化確定
BYE 要求會議終止
OPTION 功能查詢
CANCEL 取消
REGISTER 提供 location server 使用者位置

因為 user 的位置可能不固定, 所以在查詢對方位置時 (可能透過 proxy), 必須去定位伺服器 (location server) 詢問對方的 URL.

在 [ref 3] 的表 4.2 有一個超讚的 SIP 與 H.323 比較表, 由它可以得知, 雖然 SIP 只負責建立連線, 但是具有簡單, 模組化, 與網路相容, 即時等優點, 所以在 video conference 的規格競賽中, 有日漸重要的趨勢.

[ref]

1.  http://justblogger.pixnet.net/blog/post/387757

2. OSI model

      from http://www.tomax7.com/aplus/osi_model.htm

3. http://eshare.stut.edu.tw/Etd/2005_3/etd-0407109-183704-224-001.pdf (日文, 圖表是中文)