前言

本文是安諾尼AARONIA SPECTRAN V6 實(shí)時(shí)頻譜分析儀配套 RTSA Suite 的專(zhuān)屬文件格式 ——RTSA File Format 的技術(shù)解析系列第二篇,主要說(shuō)明文件的基礎(chǔ) Chunk 結(jié)構(gòu)定義與通用數(shù)據(jù)類(lèi)型存儲(chǔ)規(guī)則,是后續(xù)解析各類(lèi)具體 Chunk、實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)的核心基礎(chǔ)。
1、Chunk Structure(塊結(jié)構(gòu))
RTSA 文件采用基于塊的二進(jìn)制結(jié)構(gòu),與 PNG 文件格式設(shè)計(jì)思路相似。整個(gè)文件由多個(gè)獨(dú)立、可遞歸嵌套的 Chunk 構(gòu)成,所有 Chunk 使用統(tǒng)一的頭部格式,便于解析器識(shí)別、跳過(guò)未知塊。

1.1、通用 Chunk 頭部定義
cpp
struct DSPStreamFileChunk
quint32 mChunkID;
quint32 mChunkSize;
quint32 mChunkFlags;
quint16 mVersion;
quint16 mHeaderSize;
1.2 、字段說(shuō)明
mChunkID:32 位標(biāo)識(shí),由 4 個(gè) ASCII 字符組成,用于標(biāo)識(shí)塊類(lèi)型(如 DSFH、STRM、SAMP、ANTA 等)。
mChunkSize:當(dāng)前塊總大。ò^部),可用于快速跳過(guò)當(dāng)前塊。
mChunkFlags:塊標(biāo)志位,用于擴(kuò)展屬性。
mVersion:塊版本號(hào),版本不同表示結(jié)構(gòu)不兼容。
mHeaderSize:頭部長(zhǎng)度;讀取端可根據(jù)此字段安全跳過(guò)或補(bǔ)全默認(rèn)值。
1.3 、Chunk 結(jié)構(gòu)規(guī)則
每個(gè) Chunk 由頭部 + 數(shù)據(jù)體組成。
數(shù)據(jù)體可以是二進(jìn)制測(cè)量數(shù)據(jù),也可以是嵌套的子 Chunk。
版本號(hào)用于標(biāo)識(shí)不兼容結(jié)構(gòu);頭部長(zhǎng)度擴(kuò)展不會(huì)破壞兼容性。
解析器可安全跳過(guò)未知類(lèi)型的 Chunk。
2、General Data Types(通用數(shù)據(jù)類(lèi)型)
RTSA 文件對(duì)基礎(chǔ)數(shù)據(jù)類(lèi)型有統(tǒng)一存儲(chǔ)規(guī)范,所有解析與生成邏輯必須遵循以下規(guī)則。
2.1、字節(jié)序
所有數(shù)據(jù)采用little-endian(小端)存儲(chǔ)。
2.2、時(shí)間格式
時(shí)間使用64 位浮點(diǎn)型 double存儲(chǔ)。
基準(zhǔn)為 Unix 時(shí)間戳(1970-01-01 00:00:00)或流起始時(shí)間。
2.3、文件偏移量
全部偏移使用64 位無(wú)符號(hào)整數(shù)
以文件起始位置為基準(zhǔn),采用向后引用,無(wú)向前引用。
2.4、字符串格式
采用UTF-8 編碼
以 0 填充對(duì)齊。
3、Generic File Layout(通用文件布局)
RTSA 文件以DSFH(File Head)開(kāi)始,以DSFT(File Tail)結(jié)束。
文件擴(kuò)展時(shí)會(huì)生成多組 DSFH/DSFT。
支持順序讀取與隨機(jī)訪問(wèn)。
所有帶 ID 對(duì)象(StreamID、SubStreamID、AntennaID 等)遵循先定義后使用原則。
典型結(jié)構(gòu):
plain
DSFH → STRM → ANTA → SSTR → SAMP → … → STRT → DSFT
下期預(yù)告
下一篇將詳細(xì)講解 RTSA File Format 的DSFH 文件頭DSFT 文件尾,包括結(jié)構(gòu)體定義、字段含義、解析邏輯與使用方式。
AARONIA安諾尼總代——深圳市拓力智慧科技有限公司

|