ATSC 3.0 小整理

ATSC 3.0 的消息愈來愈多, 在此整理一下. 首先補充 ATSC 2.0 發生了什麼事? 由於 2.0 的主旨只在於提升解析度, 因此還來不及推廣就被格局更大的 ATSC 3.0 取代了.

參考下圖 (取自 [2]), ATSC 3.0 除了可以走 broadcast (廣播), 也可以走 broadband (寬頻). Broadband 意味著可以用 USB 或是 HDMI dongle 透過 WIFI 路由器播放 ATSC 3.0 而不用換電視或是 tuner. 當然, 我們可以看到若走 broadcast 這路, 3.0 和 1.0 的差異甚大. 

Figure_1ns_790_605_70

在 IP 層以上, broadband 和 broadcast 只有 TCP 和 UDP 的不同. 再往上, 就沒有分別了. 這裡有幾個縮寫要注意. ROUTE 不是路由器那個 route, 而是 Real-Time Object Delivery over Unidirectional Transport (那 E 呢? 去哪裡了?), MMTP 是指 MPEG Media Transport Protocol, HTTP 是 hypertext transfer protocol; 後兩者沒有搞怪, 就是大家平常知道的那個. 資料路徑如下:

MPEG-DASH –> IP –> ROUTE –> HTTP Proxy –>  MPU (Media Processing Unit)

MPU 負責解碼 (decode) 和播放. 上圖的 MPU 兩層之中有個 EME, 負責解密 (decrypt) 的部分. 播放當中可能頭端還會推送一些資料, 它們會走上圖的 NRT (Non-Real-Time) file delivery. 基本的 ATSC 播放規格如下:

  • Transfer rate: Up to 57 Megabits per second on a 6 MHz channel (up from ATSC 1.0 19.4 Mbit/s)
  • Video Codec: HEVC/H.265 (ATSC 1.0 used MPEG-2)
  • Progressive Video: Up to 4K UHD or 3840 X 2160 resolution at 120 FPS
  • High Dynamic Range (HDR) imaging
  • 3D TV compatible – just in case it makes a comeback
  • Dolby AC-4 & MPEG-H 3D Audio
  • Multi-audio track by program
  • Dynamic range control
  • Audio / video water mark
  • Adaptable single frequency network transmission systems for improved over-air reception from ATSC 1.0

顯而易見地, 音視頻的水準都大幅提高了. 另外值得一提的是, ATSC 號稱改善了 AV sync. 對嘴的效果會比以前更好. ( ATSC improves lip-sync so that in any kind of delivery scenario lip-sync is maintained to a very tight tolerance.)

既然可以透過網路, 當然就可以支援手機播放 (multi-screen). 所有的內容都廣播出去之後, 接受者若在不同的區域收看, 就可以根據地理資訊 (如 GPS) 或個人喜好篩選其內容, 比方說天氣、交通資訊等等. 當然, 大家也可以對廣告投票, 反映自己的意見. 

當然, broadcast 這路也不是什麼事都沒做. 據稱 ATSC 改善了訊號強度. 我想這一部分是 OFDM (Orthogonal frequency division multiplexing) 所貢獻的. 它的目標是像手機一樣在室內也可以收到訊號 ( allowing signals to travel further and to penetrate deeper into buildings and basements within range) [1].

最後提一下 ATSC 賺錢模式, 前面講到會播廣告. 但他們更想做的是 on line shopping, 看到電視上有什麼好東西都可以直接點下去就下單. 這個夢想在 BD (藍光光碟) 已經提過一次, 但 BD 不普及, 這想法就沒有發展成功.  Netflix 的商業模式也被討論到 [1], 不過我對 Netflix 的模式除了包月之外, 認識不多.

[REF]

  1. http://www.audioholics.com/editorials/atsc-3.0-cord-cutter2019s-dream-to-tiered-internet-nightmare
  2. https://www.thebroadcastbridge.com/content/entry/6229/atsc-3.0-details-explained-part-4
  3. https://www.thebroadcastbridge.com/home/category/transmission-encoding-mux/entry/6139/atsc-3.0-mysteries-explained-part-1
  4. https://www.thebroadcastbridge.com/home/category/distribution-and-delivery/entry/6200/atsc-3.0-explained-part-2
  5. https://www.thebroadcastbridge.com/home/category/transmitters-and-rf-components/entry/6275/atsc-3-0-details-explained-part-3

MSE 小筆記

MSE 是指 Media Source Extensions.

傳統的 HTML 網頁就支援 audio, video 的 tag, 然後將它送給 player 播放. Web-based 的 Jave script Applications 透過 MSE, 就能將片段的 media 送給 player, 因此可以實現 adaptive streaming, 例如 MPEG-DASH.

video-blob-768x468

既然要支援隨時變化的片源, MSE 的特色之一就是支援 multiple SourceBuffer objects. 當然, 普通 SourceBuffer 一定也支援. 以下是它的定義:

SourceBuffer

Represents a chunk of media to be passed into an HTMLMediaElement via a MediaSource object.

可以想像, 支援 multiple SourceBuffer 要有一個清單. 所以 MSE 也支援 SourceBufferList 這個 interface.

SourceBufferList

A simple container list for multiple SourceBufferobjects.

MediaSource 是一個 object [2], Sourcebuffer 是它的實體. 圖示如下 [3]:

HTML_MediaSource_SourceBuffer

由這張圖也可以看到 MediaPlayer 會負責處理播放. 由於可播放的格式相當多, 每個 browser 能支援的 audio/video formats 都有所差異. 像是 Chrome 當然要挺自家的 WebM, VP9…等等. 以 Webkit 為例, 透過 MediaPlayerPrivateInterface 就可以把 mediaSourcePrivate/SourbufferPrivate 的內容送給真正的 player.

若使用 gstreamer 來當 player, 它有特別的 WebkitMediaSrc 這個 element, 資料由這邊進去 gstreamer 的 pipeline  就可以做後續的解碼 [3].

mse3-768x530 [REF]

  1. https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API
  2. https://developer.mozilla.org/en-US/docs/Web/API/MediaSource
  3. http://eocanha.org/blog/2016/02/18/improving-media-source-extensions-on-gstreamer-based-webkit-ports/

Westeros 小註解

關於這個題目, 可以依據過去的歷史, 看出發展的軌跡.

    1. STB/OTT box 需要一個 browser.
    2. 過去常用的 qtwebkit 已經不 maintain 了. 下一代是 Blink 或是 Webkitgtk+.
    3. 將 Wbkitgtk+ 中的gtk+ 拔掉, X server 換成 Wayland, 就得到 Wayland for Webkit. 架構圖如下 [from igalia]:webkitgtkJPG
    4. X server 哪裏不好?因為它不是 client-server 的架構, 所以彈性較差.
    5. Wayland 就是 client-server 的 protocol. 下圖取材自 WIKI [1].
    6. Weston 是一種 Wayland Compositor 的架構 (reference design). 其他架構包括: Lipstick、EnlightenmentKWinMutterClayland...等等. [1]
    7. Westeros 是擴充的 Weston 版本.

    Wayland_display_server_protocol.svg_

    Westeros 有什麼不一樣呢?在 github  [2] 上說了:

    Wayland Compositor

    Westeros is a light-weight Wayland compositor library. It uses the Wayland protocols, and is designed to be compatible with applications built to use Wayland compositors. It implements a library that enables an application to create one or more Wayland displays. It supports the creation of normal, nested, and embedded wayland compositors. A normal compositor displays its composited output to the screen, while a nested compositor sends its composited output to another compositor as a client surface. An embedded compositor allows the application that has created the embedded Wayland compositor to incorporate its composited output into the applications UI. This allows for easy integration of the UI of external third party applications into an applications’s UI.

    關鍵字是可以產生多個 display. 正常的 display 就是一路 UI. nested 版本可以把一個 compositor 做出的 display 加到另外一個 compositor. embedded 版本做出的 display 可以加到 APP 的 UI, 也就是 APP 的 UI 不用完全透過 Wayland 來畫圖. 這樣看來, Westerns 比普通版的 Weston 要有彈性多了.

    [REF]

    1. https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Weston
    2. https://github.com/rdkcmf/westeros

DiskPart 小註解

昨天晚上電腦有點卡卡的, 仔細一瞧有個目錄底下的子目錄不見了 ? 看看已使用的大小還是沒變, 於是就用 Windows 10 內建的 “檔案總管 -> 滑鼠右鍵 -> 內容 -> 工具 -> 檢查錯誤" 來確認. 發現果然硬碟是有問題了.

大概 Linux 用多了, 我突發奇想, 想來個 unmount 再 mount. 所以在磁碟管理裡面對這顆硬碟下 “離線". 沒想到離線之後就沒辦法連線了, 有一次算是成功, 系統問我這顆硬碟是 MRT 還是 GPT? 哦…我哪記得啊? 乾脆重新開機, 接著整台都開不起來了, 宣布倒站一天!

我想大概是硬碟太多顆要檢查, 先全部拔光光再重開, 果然十分鐘之內就開完了, 剩下 RAID 還再慢慢自我修復. 只是這樣一開一關, 磁碟的主人就換成陌生的一串機碼了. 整顆硬碟變成 readonly, 想重設擁有者也沒辦法.

上網查到 Win 10 內建就有個強大 (但是難用) 的 diskpart 命令列指令可以去除 readonly 屬性. 微軟的官網只列出指令, 沒有 step by step 範例 [1]. 網友的文章 [2] 寫得比較清楚, 但沒有把關鍵的指令寫出來. 實際上在終端機裡面, 看到的是這樣:


H:>diskpart

Microsoft DiskPart 版本 10.0.14393.0
Copyright (C) 1999-2013 Microsoft Corporation.
在電腦: CASHBANK
DISKPART>

…然後咧? 然後可以打 dir 或是 help, 打what…什麼都可以, 指令就會列出來, 但是按 enter 沒用,只是一直換行..

Microsoft DiskPart 版本 10.0.14393.0

ACTIVE – 將選取的磁碟分割標記為使用中。
ADD – 新增一個鏡像到一個簡單磁碟區。
ASSIGN – 指派一個磁碟機代號或掛接點到選擇的磁碟區。
ATTRIBUTES – 操縱磁碟區或磁碟屬性。
ATTACH – 連結虛擬磁碟檔案。
AUTOMOUNT – 啟用和停用基本磁碟區的自動掛接。
BREAK – 中斷一個鏡像組。
CLEAN – 從磁碟上清除設定資訊或所有資訊。

COMPACT – 嘗試縮小檔案的實體大小。
CONVERT – 轉換不同的磁碟格式。
CREATE – 建立一個磁碟區、磁碟分割或虛擬磁碟。
DELETE – 刪除一個物件。
DETAIL – 提供一個物件的詳細資料。
DETACH – 中斷連結虛擬磁碟檔案。
EXIT – 結束 DiskPart。
EXTEND – 延伸一個磁碟區。
EXPAND – 擴充虛擬磁碟上的最大可用空間。
FILESYSTEMS – 顯示磁碟區上目前及受支援的檔案系統。
FORMAT – 格式化磁碟區或磁碟分割。
GPT – 指派屬性給選取的 GPT 磁碟分割。
HELP – 顯示一個命令清單。
IMPORT – 匯入磁碟群組。
INACTIVE – 將選取的磁碟分割標記為非使用中。
LIST – 顯示物件的清單。
MERGE – 合併子磁碟與其父系。
ONLINE – 把目前標記為離線的物件設成連線。
OFFLINE – 把目前標記為連線的物件設成離線。
RECOVER – 重新整理選取封裝中所有磁碟的狀態。
嘗試在無效封裝中的磁碟復原,並重新同步具有過時網狀
磁碟區或同位檢查資料的鏡像磁碟區與 RAID5 磁碟區。
REM – 不做任何事。這是用來註解指令碼。
REMOVE – 移除磁碟機代號或掛接點指派。
REPAIR – 用失敗成員修復 RAID-5 磁碟區。
RESCAN – 重新掃描電腦來尋找磁碟和磁碟區。
RETAIN – 在簡單磁碟區下放置一個保存磁碟分割。
SAN – 顯示或設定目前開機之 OS 的 SAN 原則。
SELECT – 移動焦點到物件。
SETID – 變更磁碟分割類型。
SHRINK – 縮小有選取的磁碟區。
UNIQUEID – 顯示或設定 GUID 磁碟分割表格 (GPT) 識別碼或
磁碟的主開機記錄 (MBR) 簽章。

左看右看, 我應該打 list

DISKPART> list

Microsoft DiskPart 版本 10.0.14393.0

DISK – 顯示磁碟清單。例如,LIST DISK。
PARTITION – 顯示所選取磁碟上的磁碟分割清單。
例如,LIST PARTITION。
VOLUME – 顯示磁碟區清單。例如,LIST VOLUME。
VDISK – 顯示虛擬磁碟清單。

還差一點點, 我應該要打 list disk, 這樣所有的硬碟就列出來了.

DISKPART> list disk

磁碟 ### 狀態 大小 可用 Dyn Gpt
——– ————- ——- ——- — —
磁碟 0 連線 1863 GB 0 B *
磁碟 1 連線 931 GB 0 B *
磁碟 2 沒有媒體 0 B 0 B
磁碟 3 沒有媒體 0 B 0 B
磁碟 4 連線 3726 GB 7168 KB
磁碟 5 連線 3726 GB 7168 KB
磁碟 6 沒有媒體 0 B 0 B
磁碟 7 沒有媒體 0 B 0 B
磁碟 8 連線 2794 GB 0 B *
磁碟 9 沒有媒體 0 B 0 B
磁碟 10 連線 2794 GB 0 B *

然後我就選 disk 9, 怎麼知道是 9 號呢? 要到 “電腦管理" 底下去選 “磁碟管理". 這個電腦管理本來在控制台, 但 Win 10 把它藏起來了.  我是到 “設定" 裡面搜尋 “控制台", 等它出來之後, “釘選到工作列". 以後就可以直接點.

後面就跟網路上說的一樣. 確實能消除 readonly 屬性. 也能把磁碟的擁有者改回自己了.

DISKPART> select disk 9

磁碟 9 是所選擇的磁碟。

DISKPART> att disk clear readonly

磁碟屬性已順利清除。

[REF]

  1. https://technet.microsoft.com/zh-tw/library/cc766465(v=ws.10).aspx
  2. https://read01.com/6PMy6k.html

 

Rec. ITU-R BT.2100 小註解

又來一個新的 HDR 規格 – BT.2100 [1]. 難道它能讓我們看到更多顏色?不!比較 WIKI 2020 和 WIKI 2100 的 CIE 1931 chromaticity diagram, 兩者可是長得一模一樣.

Chroma那是有更多 bit ?也不是, 兩者都可以到 12 bit. 主要的差異是 BT. 2020 只定義了色域, 沒有定義 HDR 的 OTP (optical transfer function). 而 BT. 2100 明定了 HDR, 因此也有人說 BT. 2100 = BT. 2020 + HDR [2].

BT. 2100 的 HDR 有兩種選擇:

  1. PQ (Perceptual Quantization), 用於 HDR10 和 Dolby Vision.
  2. HLG (Hybrid Log-Gamma)

在 resolution 的方面, 它定義了 1080, 4K, 8K. Frame rate 則支持常用的幾種. 24, 25, 30, 50, 60, 100 and 120 fps (frames per second).

回過頭來看什麼是 PQ? PQ 是SMPTE ST 2084 中所描述的 HDR transfer function.一如它的名稱, perceptual 是感知的, quantization 是量化. 因此這條轉換曲線是根據人的視覺所覺能力所決定的. 在 ref [1] 裡面可以查到 OETF (Optical to Electro transfer function), EOTF 和 OOTF.

HLG 比較著重和 SDR 的相容性, 在 SDR 這段區間裡, 兩者沒有太大的差異. 因此公式也簡單多了. 這樣的好處是 HDR 的片子放在 SDR 的電視上看也不容易失真 [4]. 若是用 PQ 的HDR 播在 SDR TV 上就會變成慘白狀.

hlg-at-sdr-tv

[Note] 上圖擷取自 WIKI [3].

再來解釋 PQ10 和 HLG10, 它和 HDR10 有何不同呢? HDR10 是完整的規格, 所以有色域 (BT. 2020), 有 EOTF (也就是 PQ),  有 10 bit, 有 metadata (BT. 2086, MaxCLL, MaxFALL). PQ10 和 HLG10 就只是 PQ 和 HLG 在 10 bit 的 EOTF/OETF 轉換方式.

其中, MaxCLL, MaxFALL 定義於 Blu-ray Disc 規格, 由於在後製的時候才能算出整個 program 的最大亮度, 故現場直播 (live program) 時, 這兩個值是 0.

  • MaxxFALL – Maximum Frame Average Light Level; this is the largest average pixel light value of any video frame in the program
  • MaxCLL – Maximum Content Light Level: this is the largest individual pixel light value of any video frame in the program

[REF]

  1. https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.2100-0-201607-I!!PDF-E.pdf
  2. http://www.flatpanelshd.com/news.php?subaction=showfull&id=1467719709
  3. https://en.wikipedia.org/wiki/Hybrid_Log-Gamma
  4. https://tech.ebu.ch/docs/events/IBC2015/IBC_Fact_Sheet_HDR_Demo_Final.pdf