• 【译】PGS字幕


    PGS(Presentation graphic stream):图形字幕流,是用来显示蓝光电影中的字幕的流。当蓝光盘中的PGS格式的字幕被分离存储的时候通常保存在一个以sup为扩展名的文件中。(也可以以字幕流的形式封装在TS文件的pes包中)。
    PGS有一个个的功能片段组成,这些片段通常包含下面的头部。
    DTS用来指示何时开始解码字幕图片,PTS用来指示何时将字幕图片展示在屏幕上。实际上DTS通常为0,所以可以忽略该值。这些时间戳通常以90kHz为单位。例如一个值为0x0004c11c的PTS,如果要计算字幕图像显示时,从电影开始的毫秒值,应当把DTS值转换为十进制(311580)然后除以90,即为要得到的时间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片段也叫做控制片段,因为它指示着一个新的Display Set(DS)的开始,之后是由WDS、PDS和ODS等片段组成的片段序列,知道END片段出现。
    一个Display Set(DS)是一个如下所示的字幕图像序列

    在一个DS中,一般有多个window、palette以及object的定义,这个composition object定义了将要在屏幕中显示的内容。

    1.Presentation Composition Segment

    Presentation Composition segment用来合成一个字幕图像,有以下内容组成
    composition状态可以取以下值:
    • Epoch Start:定义了一个新的display。Epoch Start包含了用来在屏幕上显示一个新的合成字幕图像的所有的功能片段
    • Acquistion Point:定义了一个display refresh。用来在Epoch中期合成字幕图像。它包含用于新的合成的带有新对象的功能片段,替换相同Object ID的旧对象
    • Normal:定义了display update,仅包含于前面的合成具有不同的元素的功能片段。通常用来通过定义一个空的合成对象(a value of zero in the Number of Composition Objects flag)来停止屏幕上当前显示的对象,同时也用来定义一个新的合成使用新的对象和从Epoch Start开始以来定义的对象
    Composition object通常也被称为window information objects,定义了将要显示的字幕图像在屏幕中的位置,它的结构如下
    当Object Cropped Flag被设置为true(通常为0x40),字幕图像将只显示被裁减的一部分。通常用于不想在一开始就显示整个字幕,而是一部分一部分地显示。

    2.Window Definition Segment

    该片段被用来定义屏幕上用来显示字幕图像的矩形区域,该矩形区域被称为Window,它的结构如下:

     

    3.Palette Definition Segment

    该片段被用来定义颜色转换的调色板,它的组成结构如下
    由于可以有几个不同ID的调色板,因此,最后5个字段可以重复

    4.Object Definition Segment

    该片段定义了图形对象(一些将文字渲染在渲染在透明背景上的图像),其结构如下

     

    Run-length编码方法定义在US 7912305 B1 patent,下面是对改变吗的简要说明

    5.End Segment

    end segment的segment size通常为0,标识着一个Display Set(DS)的结束,在一个DS中,它紧随着最后一个ODS出现。

    6.示例

    下面是一段SUP 文件
    这是一个完整的Display Set包含的各个片段如下
    • 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大小的图片,起始时间戳为17:11.822,在屏幕上的偏移为773×108
  • 相关阅读:
    shell命令运行符号&、;、&&区别
    绕过CDN查看真实IP的有效方法
    kali Linux各历史版本
    Referer详解
    HttpServletResponse详解
    XML中保留字符及实体引用
    PreparedStatement用法详解
    Abnormal build process termination IDEA启动报错
    解决stackOverflow打开慢的问题
    git报错---If no other git process is currently running...
  • 原文地址:https://www.cnblogs.com/CoderTian/p/9158464.html
Copyright © 2020-2023  润新知