DIAL 小註解

這邊的  DIAL 是指 Netflix 和 Youtube 最近在推的 DIscover And Launch 架構. 這個技術有什麼稀奇呢? 其實它是另一種把手機/平板的螢幕投影到電視大螢幕上的方法, 特別是那些支援 DIAL 的 APP 在兩個螢幕上都存在時. 雖然說我們已經有了 Wifi Display / Miracast, WIDI 可以投影任何手機或電腦畫面到電視上, 不過它們只能視為螢幕的切換,沒有動用到 TV 上的 APP.這點是主要的不同.

使用 Miracast 也不算是容易的事. 比方說, 原本手機和電視都是各自連到家中的無線 AP 上網, 但是為了要做 Miracast, 他們得要切到  的 1, 6, 11 CH 三者其中之一去進行連線.不然他們沒辦法互相發現對方. [1] 若是無線 AP 本來不是設在 1/6/11 CH, 那麼就得有從 AP 暫時斷線再連線的動作.

 

根據 Netflix 所做的比較, DIAL 可以提供簡單的連線方式 (見下圖)[2] – 假如我們先忘記有無線 AP.此處的假設是:第一個屏 (電視、機頂盒、藍光播放機的大屏) 已經有執行 APP 的能力, 而不只是一台 "非智慧型電視". 如果電視原本沒有 "智慧", 至少得接上一個轉接盒, 電視端才能具備連網、又能執行 APP 程式的條件.

那麼, 為何只要在第二個屏 (小屏) 上執行 Youtube、Netflix,就可以跳過電視上的設定, 直接播出畫面呢? 這裡面共有 3 個不同的角色 [3]. 大屏的平台提供者 (1st screen CE device deveoper), 它要能夠用正確的參數把大屏的 APP 程式跑起來,並且確保小屏的 APP 的 payload 可以送給大屏的 APP.而小屏的 APP 負責提供 payload,大屏的 APP 負責收 payload. 另外, 無論是大屏或小屏的 APP 都要先註冊 Application Name, 這樣才能確保不會把 Youtube 的內容送給 Netflix 的 APP 程式播.

根據網站上的評論 [4], DIAL 的規格是為了對抗 Apple Airplay 跨平台的優勢. 若是我 Android 手機上有個 Youtube, Android 電視端也有一個 Youtube APP, 兩者卻不能夠連動, 使用情境就不如 Apple 方便了. 然而 DIAL 只解決了連線, Miracast 只解決了 mirror; 要讓使用者完全從 "瞪小屏" 轉到大小通吃 – 例如: 讓大屏可以顯示小屏應有的操作 (如增加手機聯絡人), 而小屏本身又變身為遙控器,不顯示聯絡人編輯畫面, 這個還有賴於 "非蘋陣營" 軟體開發人員的努力.

[ref]

1. WI-FI Alliance Member Symposium 

2. DIAL

3. Details for Developers

4. The story behind DIAL: How Netflix and YouTube want to take on AirPlay

Miracast in Android 小整理

大家都知道 Android 4.2 版支持了以前叫做 WIFI Display 的 Miracast. 看了同事轉寄的網路文章 [1], 才知道 Android 連架構都配合 Miracast 做了修改.

首先考量的是, 使用者需要把手機上的畫面輸出到電視上分享給大家, 卻不能讓大家都看見他/她怎麼在鍵盤上按密碼. 所以 surfaceflinger 就不能把虛擬鍵盤或是密碼框的這一層投射出去. 換言之, 把整個 display planes  (什麼 V1, V2, OSD1, OSD2, SUB1, SUB2) 都 mix 後才輸出的那張圖, 反而不是可以公開的.

因此, surfaceflinger 裡面就多了個 display device 的抽象層.

DISPLAY_PRIMARY:  Android 手機的螢幕

DISPLAY_RXTERNAL: HDMI 設備, 如 TV

DISPLAY_VIRTUAL: WIFI Display, 即 Miracast.

1357478805_4074

對於 virtual 的裝置, Android 並不準備它的 frame buffer.從下面這段 code 中可以看出, 每一個 Display Device 在產生的時候, 都會參考 state.isVirtualDisplay 是否為真? 進而決定 hw 這個 class 的內容. Miracast 顯然就和 HDMI, 和 local 螢幕不同類. 可見得在 HDMI 以 MHL (Mobile High-Definition Link) 接電視的情況下是允許看到輸入密碼視窗的, 但 Miracast 以 WIFI 無線時不可以顯示.

1357478788_3356

其中 static_cast< sp<ISurfaceTexture>> 表示指定型別為 sp<ISurfaceTexture>, 也就是 ISurfaceTexture 的 smart pointer. Smart pointer 也是個 pointer, 它有助於在不同的地方 create 和 destroy, 因此可以靈活地運用並減少記憶體丟失 (或曰"洩漏").它的原文是:

Smart pointers ensure we properly destroy an object even if its creation and destruction are widely separated. They make functions simpler and safer by ensuring that no matter how many different exit paths exist, local objects are always cleaned up correctly. They help enforce that exactly one object owns another object at any given time, preventing both leaks and double-frees.[2]

最後 Android 做 composer 的時候, 會對每一種顯示設備 (共 mDisplays.size 種) 檢查是否 dirty (需要更新)? 並且用 hw->canDraw() 判斷能不能畫? 如果不能畫, 連 dirty 也不畫.在 2011 年的時候, 就有人抱怨過 hw->flip 為什麼在 hw->canDraw() 的前面執行 [3]? 導致 Android suspend 的時候都還在 flip. 看來 Android 是從善如流, 改為優先判斷 canDraw() 了.

1357478824_6904

[REF]

1.Android Wi-Fi Display 介紹

2.Smart Pointer Guidelines

3.Android的Suspend​

Android 即將進入 K 版

Android 一向以英文字母順序來命名產品, 大家可能都注意到它是甜點名稱, 而忽略掉它在 10/29  (傳言有誤, 待更新)就要進入第 K (11th) 版了. Android 進版如此迅速, 當然反映出它跟進競爭對手的決心. 否則它大可以讓使用者覺得 4.0, 4.1, 4.2 都是第四版, 而毋須給予各自的暱稱. 不過對於軟體開發的工程師而言, 實在是追得太辛苦了. 網路有個很好的比較表, 可以知道每一版的 Android 有何差異.

[打岔 1] 據說第 K 版的名稱是酸橙派 (Key lime Pie), 那麼第 P 版來個珍珠奶茶 (Perl milk tea) 也不算是意外.

我這邊另外做一張表, 把三個作業系統 (假如 Android + Linux 也算一個 OS) 的三個重要指標 – 能否跨平台, 人機互動, 消滅異己的版號列出來. 至於雲端, Market, 社群, 開機速度, 拍照, 強化語音辨識, 改善 UI 速度或美化等等不具戰略價值或大家都有的功能, 我就自動忽略了.

  Google Apple Microsoft
消滅異己 JB, 去 FLASH

IOS6, 去 Google 化
向來不支援 FLASH

不知
人機互動 JB (2012/6/27), Google Now IOS5, SIRI Win8, 據說有  chatter
跨平台

ICS (2011/10/19)

IOS5 (2011/10/12) Win8 (2012/10/23)

[紅色為更正]

不用說, Microsoft 真是敗在 Windows 太過臃腫. 以致於在跨平台上輸了競爭對手好大一截, 不過它也並非全無優勢. Skype 和 XBOX 算是它的獨門武器. 預計另外兩大陣營短期之內, 都不可能跟上進度. Apple 看似占盡上風, 不過封閉系統的問題也慢慢浮現 – 一個遊戲 App 就要 60MB,你手中的蘋果裝置塞爆了嗎?.

在人機互動方面, 只要耕耘得夠深, 客戶很容易養成習慣. 如果我是它們的操盤手, 我一定要讓這些裝置的 AI 軟體變成主角, 而不是綁定硬體. 它們需要被取名字, 而且能夠跨平台轉生. 如此一來, 客戶未來在換機時, 不得不考慮到讓那個 "虛擬的朋友 – 人工智慧" 還能繼續投胎轉世. 如果客戶再也不買我家的硬體產品, 沒關係, 只要付一點投胎費, 虛擬朋友在別的平台也可以活過來, 只是難免會有一點相容性的問題而已.

[打岔 2] 如果 AI 太強, 會不會主動拗客戶幫它 "換屋" 啊? "主人, 我想搬到最新的 iphone8…, 聽我朋友說隔壁老王的新手機很好住…"

最後, 有篇 Win8 十大升級理由 供大家參考. 其中 style app – 預設style App整合Facebook、Flicker、Google、Twitter、LinkedIn服務。個人覺得這類功能挺重要的. 畢竟我們沒有那麼多時間去關注那麼網站, 還是讓他們自己協調一下匯報上來就好! 有 AI 當然就更好. 但 Windows 能做到什麼程度, 我沒有報什麼期望.