Aribsubspecification - nkoriyama/vlc-aribsub GitHub Wiki

前提

  • デジタル放送におけるデータ放送符号化方式と伝送方式(ARIB STD-B24)
  • 補助データパケット形式で伝送されるデジタル字幕データの構造と運用(ARIB STD-B37)
    • 付属 デジタル字幕運用規定 解説 B7 DRCS 変換例
  • デジタル放送運用規定(ARIB TR-B14, ARIB TR-B15)
    • Aプロファイルに関する運用規定 字幕・文字スーパー符号化の運用[^1]
      • 編成および伝送運用
        • 字幕・文字スーパーは、独立PES伝送方式(ストリーム形式識別0x06)で伝送する。
        • 同時に伝送可能な言語は1ESあたり最大2言語までとし、言語識別はES内の字幕管理データにより行う。
        • 字幕では、ビットマップデータを使用しない。
        • 字幕で用いるPES伝送方式は、同期型PES伝送方式を適用し、PTSによりタイミング同期をとることとする。
        • 字幕における字幕管理データのパラメータ
          • format(表示書式) : ‘1000’(960x540 の横書) ‘1001’(960x540 の縦書) ‘1010’(720x480 の横書) ‘1011’(720x480 の縦書)
          • TCS(文字符号化方式) : ‘00’(8単位符号)
        • 字幕ESのコンポーネントタグ値は、部分受信以外の階層で伝送する場合は0x30~0x37。字幕のデフォルトESのコンポーネントタグ値は0x30。
        • 字幕・文字スーパーESのstream_typeは、0x06(独立PES_packet)である。
      • 映像の解像度と字幕・文字スーパーの表示形式
        • 使用できる表示書式は、960x540と720x480の、それぞれ横書、縦書とする。また、動画プレーンの解像度と字幕・文字スーパーの表示書式は以下の表の組み合わせの、それぞれ横書、縦書とする。720x480時の表示は、映像のアスペクト比にかかわらず同一表示書式とし、アスペクト比を考慮した表示を行う場合は、送出側で補正することとする。
動画プレーンの解像度 字幕・文字スーパーの表示書式
1920×1080 960×540
720×480 720×480
* 表示領域とは、制御符号SDFで指定される縦横の画素数と、制御符号SDPで指定される字幕プレーン左上角からの座標により特定される領域を言う。表示領域の座標系の原点(0,0)は、縦書き、横書きに関わらず、「字幕プレーン」の左上となる。 * 表示領域の優先順位は、 1. 字幕文データの本文中で、SDF 及びSDP により指示された値 2. 更新された字幕管理データの本文中で、SDF 及びSDP により指示された値 3. 更新された字幕管理データヘッダで指定される表示書式を元にした初期値
          である。表示領域(表示構成ドット)の初期値は以下の表の通りとする。
表示書式 表示領域 表示位置
960×540 960×540 0, 0
720×480 720×480 0, 0
* 字幕・文字スーパーで用いる文字 * 字幕・文字スーパーにおいて用いる文字符号化方式は、8単位符号を用いる。 * 字幕・文字スーパーにおいて用いる文字フォントは、丸ゴシックが望ましい。 * 字幕・文字スーパーで表示できる文字サイズは、16ドット、20ドット、24ドット、30ドット、36ドットの5サイズとする。送出時の文字サイズの指定は、前記サイズを指定すること。また、それぞれのサイズに対しては、標準、中型、小型サイズが使用できる。尚、標準、中型、小型の定義を以下に示す。 * 標準:制御符号SSM により指定される大きさの文字 * 中型:標準より字方向の大きさのみが半分の大きさの文字 * 小型:標準より字方向および行方向の大きさがそれぞれ半分の大きさの文字 * 表示区画の定義を以下に示す。 * 表示区画の字方向の大きさ=字間隔/2+フォントサイズ+字間隔/2 * 表示区画の行方向の大きさ=行間隔/2+フォントサイズ+行間隔/2 ※ 字間隔(行間隔)が奇数の場合は、字方向(行方向)に対して、フォント前側の字間隔/2(行間隔/2) の値を切り捨てとし、字方向(行方向)に対して、フォント後側の字間隔/2(行間隔/2)の値を切り上げとする。図4-3から図4-8に横書時、図4-9から図4-14に縦書時の表示区画とフォントサイズ・字間隔および行間隔の関係を示す。 字間隔(行間隔)が4の倍数でない場合、字間隔/4(行間隔/4)の値は切り捨てとする。 * 文字サイズ、字間隔、行間隔の初期値を示す。
960×540 720×480
横書き 縦書き 横書き 縦書き
文字サイズ 36 36 36 36
字間隔 4 12 4 8
行間隔 24 24 16 24
表示区画(W x H) 40x60 60x48 40x52 60x44
* 字幕・文字スーパーで用いる制御符号 * DRCSの運用 * DRCSの呼び出しは、ARIB STD-B24 第一編 第2部 7.1.1.5の規格通り1バイトおよび2バイトのDRCS集合の呼び出しを使用する。また、DRCSパターンの符号化は、パターン伝送のみ運用を行い、ジオメトリックによる運用は行わない。 * TBD!!! * Cプロファイルに関する運用規定 * TBD!!!
  • 当モジュール(aribsub)での制限事項
    • 字幕のみを扱い、文字スーパーはサポート外とする。
    • ワンセグ(部分受信階層, Cプロファイル)の字幕は現時点では限定的なサポート。
    • 複数言語は現時点では未サポート。
    • 縦書きの字幕は現時点では未サポート。
    • フラッシング, 囲み, アンダーライン, 縁取り, スクロールは現時点では未サポート。
    • DRCSはイメージを直接描画するのではなく、別途マッピングにより既存の文字に割り当てる。
    • 複数サービスが含まれているTSストリームを読み込んだ際に、字幕が認識されないことがある。その際にはTsSplitter等で分割すれば認識されるようになると思われる。

[^1]: ARIB TR-B14 第1分冊 【第2部】 Aプロファイルに関する運用規定 4 字幕・文字スーパー符号化の運用

追加変更部分

  • modules/demux/ts.c
    • PMTからstream type=0x06, component_tag=0x30~0x37を持つESを字幕ストリームとして扱うようにする。
    • EITのテキストの文字コードを8単位符号からUTF-8に変換する。
  • modules/codec/aribb24dec.h *
  • modules/codec/aribsub.c *
  • modules/codec/aribsubstext.c *

関連規格

⚠️ **GitHub.com Fallback** ⚠️