逆向:CRI Sofdec数据流结构:修订间差异

来自歌颂之丘
跳转到导航 跳转到搜索
(建立内容为“此处记录CRI Sofdec格式的视频数据流之结构的分析结果。(进行中) =CRI Sofdec简述= CRI Sofdec格式(典型扩展名为SFD)为CRI Mid…”的新页面)
 
(追加发现,修正混用)
第1行: 第1行:
此处记录CRI Sofdec格式的视频数据流之结构的分析结果。(进行中)
此处记录对CRI Sofdec格式的数据流之结构的分析结果。(进行中)


=CRI Sofdec简述=
=CRI Sofdec简述=
第21行: 第21行:
! 内部ID !! 注释
! 内部ID !! 注释
|-
|-
| SFM Ver.2.25 2004-07-21 CRI-MW || AT1 SFD所署明的内部ID
| SFM Ver.2.25 2004-07-21 CRI-MW || AT1 有声SFD所署明的内部ID
|-
Sofdec CRAFT/GUI Ver.1.74 || AT1 无声SFD所署明的内部ID
|}
|}


第34行: 第36行:
下面列出这些包的结构。
下面列出这些包的结构。


这些包中,一些定性数据为AT1,即"SFM Ver.2.25 2004-07-21 CRI-MW"的参数。
这些包中,一些定性数据为AT1,即"SFM Ver.2.25 2004-07-21 CRI-MW"(有声SFD)或"Sofdec CRAFT/GUI Ver.1.74 "(无声SFD)的参数。


{| class="wikitable"
{| class="wikitable"
第44行: 第46行:
   pack_start_code = default ('00 00 01 BA'[hex])
   pack_start_code = default ('00 00 01 BA'[hex])
   system_clock_refence = '000 00000000 0000000 00000000 0000000'
   system_clock_refence = '000 00000000 0000000 00000000 0000000'
   mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的视频) / '88 27 05'[hex] (含一条有声ADX音轨的视频) / '88 20 97'[hex] (含一条无声ADX音轨的视频)  
   mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的SFD) / '88 27 05'[hex] (含一条有声ADX音轨的SFD) / '88 20 97'[hex] (含一条无声ADX音轨的SFD)  
|-
|-
| 0x000C || 系统头(长度15(含一条音轨的视频) / 18(含两条音轨的视频))。数据:
| 0x000C || 系统头(长度15(含一条音轨的SFD) / 18(含两条音轨的SFD))。数据:
   system_header_start_code = default ('00 00 01 BB'[hex])
   system_header_start_code = default ('00 00 01 BB'[hex])
   header_length = [default]
   header_length = [default]
第62行: 第64行:
   STD_buffer_size_bound = '0 0000 0000 0100'
   STD_buffer_size_bound = '0 0000 0000 0100'
|-
|-
| 0x001B(含一条音轨的视频)
| 0x001B(含一条音轨的SFD)
0x001E(含两条音轨的视频)
0x001E(含两条音轨的SFD)
  || 分组头(长度7)。结构:
  || 分组头(长度7)。结构:
   packet_start_codec_prefix =default ('00 00 01'[hex])
   packet_start_codec_prefix =default ('00 00 01'[hex])
   stream_id = 'BE'[hex] (填充流)
   stream_id = 'BE'[hex] (填充流)
   packet_length = [default] ( 典型值:'07 DF'[hex](含一条音轨的视频) / '07 DC'[hex](含两条音轨的视频) )
   packet_length = [default] ( 典型值:'07 DF'[hex](含一条音轨的SFD) / '07 DC'[hex](含两条音轨的SFD) )
   '0000 1111'
   '0000 1111'
|-
|-
| 0x0022(含一条音轨的视频)
| 0x0022(含一条音轨的SFD)
0x0025(含两条音轨的视频)  
0x0025(含两条音轨的SFD)  
|| 填充流数据(长度[packet_length])。全为 'FF'[hex] 。结束于0x07FF。
|| 填充流数据(长度[packet_length])。全为 'FF'[hex] 。结束于0x07FF。
|}
|}
第83行: 第85行:
   pack_start_code = default ('00 00 01 BA'[hex])
   pack_start_code = default ('00 00 01 BA'[hex])
   system_clock_refence = '000 00000000 0000000 00000000 0001100'
   system_clock_refence = '000 00000000 0000000 00000000 0001100'
   mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的视频) / '88 27 05'[hex] (含一条有声ADX音轨的视频) / '88 20 97'[hex] (含一条无声ADX音轨的视频)  
   mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的SFD) / '88 27 05'[hex] (含一条有声ADX音轨的SFD) / '88 20 97'[hex] (含一条无声ADX音轨的SFD)  
|-
|-
| 0x000C || 系统头(长度15)。数据:
| 0x000C || 系统头(长度15)。数据:

2021年5月23日 (日) 22:23的版本

此处记录对CRI Sofdec格式的数据流之结构的分析结果。(进行中)

CRI Sofdec简述

CRI Sofdec格式(典型扩展名为SFD)为CRI Midware公司开发的游戏用视频中间件格式。当前,CRI Midware已停止支持该格式。

该格式的数据结构为一种MPEG-1系统层(于ISO/IEC 11172-1中定义)的变体。其视频流为符合标准的MPEG-1视频(于ISO/IEC 11172-2中定义)。已知其音频流中必有一路使用用CRI ADX编码(CRI Midware私有音频压缩编码)的音频流(典型扩展名为SFA),可能包含有一路杜比数字(DD,典型扩展名为AC-3)音频流。需要专用的多路复用器进行复用。

目前已泄漏的SFD多路复用器有:

原始应用名 内部ID 出处
DreamcastMovieCreator SFDMUX Ver.1.07 19990520 CRI 为SFD Tool Pack v1.0 by SWAT的一部分。有抽出dll制作的的命令行版本sfdmux。
Sofdec Multiplexer Ver.0.25 CRI_SFM Ver.2.17 2003-01-14 CRI 为 CRI SDK by Xbox的一部分。

目前已知但未泄漏的SFD多路复用器有:

Sofdec CRAFT/GUI Ver.1.74 || AT1 无声SFD所署明的内部ID
内部ID 注释
SFM Ver.2.25 2004-07-21 CRI-MW AT1 有声SFD所署明的内部ID

CRI Sofdec 结构

CRI Sofdec数据流(下简称SFD)内部有多个符合「ISO/IEC 11172-1 2.4.3.2 包层」定义的包。一般而言,每个包的大小均为0x800。

其中,第00-03个包(对于较旧版本的SFD复用器,可能为第00-02个包)标示了SFD的各种信息,而这之后的包为经多路复用的数据流(也许可以直接作为MPEG-1多路复用流解读?)。

信息包组(暂名)

信息包组即指SFD内部的第00-03个包(对于较旧版本的SFD复用器,可能为第00-02个包)。

下面列出这些包的结构。

这些包中,一些定性数据为AT1,即"SFM Ver.2.25 2004-07-21 CRI-MW"(有声SFD)或"Sofdec CRAFT/GUI Ver.1.74 "(无声SFD)的参数。

第00个包(起始地址:0x00000000,音频流声明包(暂称))
偏址 信息
0x0000 包头(长度12)。数据:
 pack_start_code = default ('00 00 01 BA'[hex])
 system_clock_refence = '000 00000000 0000000 00000000 0000000'
 mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的SFD) / '88 27 05'[hex] (含一条有声ADX音轨的SFD) / '88 20 97'[hex] (含一条无声ADX音轨的SFD) 
0x000C 系统头(长度15(含一条音轨的SFD) / 18(含两条音轨的SFD))。数据:
 system_header_start_code = default ('00 00 01 BB'[hex])
 header_length = [default]
 rate_bound(with market_bit) = [mux_rate(with market_bit)]
 audio_bound = [default]
 flxed_flag = '1'
 CSPS_flag = '0'
 system_audio_lock_flag = '0'
 system_video_lock_flag = '0'
 video_bound = '0 0000'
 reserved_byte = default ('1111 1111')
 stream_id[#1] = 'C0'[hex]
 stream_id[#2] = 'C1'[hex]
 STD_buffer_bound_scale = '0'
 STD_buffer_size_bound = '0 0000 0000 0100'
0x001B(含一条音轨的SFD)

0x001E(含两条音轨的SFD)

分组头(长度7)。结构:
 packet_start_codec_prefix =default ('00 00 01'[hex])
 stream_id = 'BE'[hex] (填充流)
 packet_length = [default] ( 典型值:'07 DF'[hex](含一条音轨的SFD) / '07 DC'[hex](含两条音轨的SFD) )
 '0000 1111'
0x0022(含一条音轨的SFD)

0x0025(含两条音轨的SFD)

填充流数据(长度[packet_length])。全为 'FF'[hex] 。结束于0x07FF。
第01个包(起始地址:0x00000800,视频流声明包(暂称))
偏址 信息
0x0000 包头(长度12)。数据:
 pack_start_code = default ('00 00 01 BA'[hex])
 system_clock_refence = '000 00000000 0000000 00000000 0001100'
 mux_rate(with market_bit) = '88 2F E7'[hex] (含AC-3音轨的SFD) / '88 27 05'[hex] (含一条有声ADX音轨的SFD) / '88 20 97'[hex] (含一条无声ADX音轨的SFD) 
0x000C 系统头(长度15)。数据:
 system_header_start_code = default ('00 00 01 BB'[hex])
 header_length = [default]
 rate_bound(with market_bit) = [mux_rate(with market_bit)]
 audio_bound = '0000 00'
 flxed_flag = '1'
 CSPS_flag = '0'
 system_audio_lock_flag = '0'
 system_video_lock_flag = '0'
 video_bound = [default]
 reserved_byte = default ('1111 1111')
 stream_id = 'E0'[hex]
 STD_buffer_bound_scale = '1'
 STD_buffer_size_bound = '0 0000 0010 1110'
0x001B 分组头(长度7)。结构:
 packet_start_codec_prefix =default ('00 00 01'[hex])
 stream_id = 'BE'[hex] (填充流)
 packet_length = [default] ( 典型值:'07 DF'[hex] )
 '0000 1111'
0x0022 填充流数据(长度[packet_length])。全为 'FF'[hex] 。结束于0x07FF。

其他

在做了。

参考标准

ISO/IEC 11172-1:1993

GB/T 17191.1-1997 (idt ISO/IEC 11172-1:1993)

ISO/IEC 11172-1:1993/Cor.1:1996

ISO/IEC 11172-1:1993/Cor.2:1999