【译】PGS字幕
PGS(Presentation graphic stream):圖形字幕流,是用來(lái)顯示藍(lán)光電影中的字幕的流。當(dāng)藍(lán)光盤中的PGS格式的字幕被分離存儲(chǔ)的時(shí)候通常保存在一個(gè)以sup為擴(kuò)展名的文件中。(也可以以字幕流的形式封裝在TS文件的pes包中)。
PGS有一個(gè)個(gè)的功能片段組成,這些片段通常包含下面的頭部。
DTS用來(lái)指示何時(shí)開(kāi)始解碼字幕圖片,PTS用來(lái)指示何時(shí)將字幕圖片展示在屏幕上。實(shí)際上DTS通常為0,所以可以忽略該值。這些時(shí)間戳通常以90kHz為單位。例如一個(gè)值為0x0004c11c的PTS,如果要計(jì)算字幕圖像顯示時(shí),從電影開(kāi)始的毫秒值,應(yīng)當(dāng)把DTS值轉(zhuǎn)換為十進(jìn)制(311580)然后除以90,即為要得到的時(shí)間3462Ms(3.462秒)。
PGS片段的類型一共有5種:
Presentation Composition Segment(PCS)
Window Definition Segment(WDS)
Palette Definition Segment(PDS)
Object Definition Segment(ODS)
End of Disply Set Segment(END)
PCS片段也叫做控制片段,因?yàn)樗甘局粋€(gè)新的Display Set(DS)的開(kāi)始,之后是由WDS、PDS和ODS等片段組成的片段序列,知道END片段出現(xiàn)。
一個(gè)Display Set(DS)是一個(gè)如下所示的字幕圖像序列
在一個(gè)DS中,一般有多個(gè)window、palette以及object的定義,這個(gè)composition object定義了將要在屏幕中顯示的內(nèi)容。
1.Presentation Composition Segment
Presentation Composition segment用來(lái)合成一個(gè)字幕圖像,有以下內(nèi)容組成
composition狀態(tài)可以取以下值:
Epoch Start:定義了一個(gè)新的display。Epoch Start包含了用來(lái)在屏幕上顯示一個(gè)新的合成字幕圖像的所有的功能片段
Acquistion Point:定義了一個(gè)display refresh。用來(lái)在Epoch中期合成字幕圖像。它包含用于新的合成的帶有新對(duì)象的功能片段,替換相同Object ID的舊對(duì)象
Normal:定義了display update,僅包含于前面的合成具有不同的元素的功能片段。通常用來(lái)通過(guò)定義一個(gè)空的合成對(duì)象(a value of zero in the Number of Composition Objects flag)來(lái)停止屏幕上當(dāng)前顯示的對(duì)象,同時(shí)也用來(lái)定義一個(gè)新的合成使用新的對(duì)象和從Epoch Start開(kāi)始以來(lái)定義的對(duì)象
Composition object通常也被稱為window information objects,定義了將要顯示的字幕圖像在屏幕中的位置,它的結(jié)構(gòu)如下
當(dāng)Object Cropped Flag被設(shè)置為true(通常為0x40),字幕圖像將只顯示被裁減的一部分。通常用于不想在一開(kāi)始就顯示整個(gè)字幕,而是一部分一部分地顯示。
2.Window Definition Segment
該片段被用來(lái)定義屏幕上用來(lái)顯示字幕圖像的矩形區(qū)域,該矩形區(qū)域被稱為Window,它的結(jié)構(gòu)如下:
3.Palette Definition Segment
該片段被用來(lái)定義顏色轉(zhuǎn)換的調(diào)色板,它的組成結(jié)構(gòu)如下
由于可以有幾個(gè)不同ID的調(diào)色板,因此,最后5個(gè)字段可以重復(fù)
4.Object Definition Segment
該片段定義了圖形對(duì)象(一些將文字渲染在渲染在透明背景上的圖像),其結(jié)構(gòu)如下
Run-length編碼方法定義在US 7912305 B1 patent,下面是對(duì)改變嗎的簡(jiǎn)要說(shuō)明
5.End Segment
end segment的segment size通常為0,標(biāo)識(shí)著一個(gè)Display Set(DS)的結(jié)束,在一個(gè)DS中,它緊隨著最后一個(gè)ODS出現(xiàn)。
6.示例
下面是一段SUP 文件
這是一個(gè)完整的Display Set包含的各個(gè)片段如下
First Segment: PCS, offset 0x00348a10
Magic Number: “PG” (0x5047)
Presentation Time: 17:11.822 (92,863,980 / 90)
Decoding Time: 0
Segment Type:PCS(0x16)
Segment Size: 0x13 bytes
Width: 1920 (0x780)
Height: 1080 (0x438)
Frame rate: 0x10
Composition Number: 430 (0x1ae)
Composition State: Epoch Start (0x80)
Palette Update Flag: false
Palette ID: 0
Number of Composition Objects: 1
Object ID: 0
Window ID: 0
Object Cropped Flag: false
Object Horizontal Position: 773 (0x305)
Object Vertical Position: 108 (0x06c)
Second Segment: WDS (0x17), offset 0x00348a30
Magic Number: “PG” (0x5047)
Presentation Time: 17:11.822 (92,863,980 / 90)
Decoding Time: 0
Segment Type:WDS(0x17)
Segment Size: 0x13 bytes
Window ID: 0
Window Horizontal Position: 773 (0x305)
Window Vertical Position: 108 (0x06c)
Window Width: 377 (0x179)
Window Height 43 (0x02b)
Third Segment: PDS (0x14), offset 0x00348a50
Magic Number: “PG” (0x5047)
Presentation Time: 17:11.822 (92,863,980 / 90)
Decoding Time: 0
Segment Type:PDS(0x14)
Segment Size: 0x9d bytes
Palette ID: 0
Palette Version: 0
31 palette entries
Fourth Segment: ODS (0x15), offset 0x00348afa
Magic Number: “PG” (0x5047)
Presentation Time: 17:11.822 (92,863,980 / 90)
Decoding Time: 0
Segment Type:PDS(0x15)
Segment Size: 0x21c2 bytes
Object ID: 0
Object Version Number: 0
Last in sequence flag:First and last sequence (0xC0)
Object Data Length: 0x0021bb bytes
Width: 377 (0x179)
Height: 43 (0x02b)
Fifth Segment: END (0x80), offset 0x0034acc9
Magic Number: “PG” (0x5047)
Presentation Time: 17:11.822 (92,863,980 / 90)
Decoding Time: 0
Segment Type:END(0x80)
Segment Size: 0 bytes
該Display Set顯示一張377x43大小的圖片,起始時(shí)間戳為17:11.822,在屏幕上的偏移為773×108
總結(jié)
- 上一篇: 基于python2【重要】怎么自行搭建简
- 下一篇: f2fs解析(一)f2fs如何解决wan