mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-11 23:34:04 +09:00
TAV decoder: rewrote to output to file, currently only does I-frames which is NOT a regression from the old code 🤷
This commit is contained in:
@@ -806,15 +806,19 @@ SSF is a simple subtitle that is intended to use text buffer to display texts.
|
|||||||
The format is designed to be compatible with SubRip and SAMI (without markups) and interoperable with
|
The format is designed to be compatible with SubRip and SAMI (without markups) and interoperable with
|
||||||
TEV and TAV formats.
|
TEV and TAV formats.
|
||||||
|
|
||||||
|
SSF-TC is an SSF with extra timecode so that subtitle packets can be desynchronised with video frames
|
||||||
|
on encoding.
|
||||||
|
|
||||||
When SSF is interleaved with MP2 audio, the payload must be inserted in-between MP2 frames.
|
When SSF is interleaved with MP2 audio, the payload must be inserted in-between MP2 frames.
|
||||||
|
|
||||||
## Packet Structure
|
## Packet Structure
|
||||||
uint8 0x30 (packet type)
|
uint8 0x30/0x31 (SSF/SSF-TC)
|
||||||
uint32 Packet Size
|
uint32 Packet Size
|
||||||
* SSF Payload (see below)
|
* SSF Payload (see below)
|
||||||
|
|
||||||
## SSF Packet Structure
|
## SSF Packet Structure
|
||||||
uint24 index (used to specify target subtitle object)
|
uint24 Subtitle object ID (used to specify target subtitle object)
|
||||||
|
uint64 Timecode in nanoseconds (only present for SSF-TC format; regular SSF must not write these bytes)
|
||||||
uint8 opcode
|
uint8 opcode
|
||||||
0x00 = <argument terminator>, is NOP when used here
|
0x00 = <argument terminator>, is NOP when used here
|
||||||
0x01 = show (arguments: UTF-8 text)
|
0x01 = show (arguments: UTF-8 text)
|
||||||
@@ -836,17 +840,21 @@ KSF is a frame-synced subtitle that is intended to use Karaoke-style subtitles.
|
|||||||
The format is designed to be interoperable with TEV and TAV formats.
|
The format is designed to be interoperable with TEV and TAV formats.
|
||||||
For non-karaoke style synced lyrics, use SSF.
|
For non-karaoke style synced lyrics, use SSF.
|
||||||
|
|
||||||
|
KSF-TC is an KSF with extra timecode so that subtitle packets can be desynchronised with video frames
|
||||||
|
on encoding.
|
||||||
|
|
||||||
When KSF is interleaved with MP2 audio, the payload must be inserted in-between MP2 frames.
|
When KSF is interleaved with MP2 audio, the payload must be inserted in-between MP2 frames.
|
||||||
|
|
||||||
## Packet Structure
|
## Packet Structure
|
||||||
uint8 0x31 (packet type)
|
uint8 0x32/0x33 (KSF/KSF-TC)
|
||||||
* KSF Payload (see below)
|
* KSF Payload (see below)
|
||||||
|
|
||||||
### KSF Packet Structure
|
### KSF Packet Structure
|
||||||
KSF is line-based: you define an unrevealed line, then subsequent commands reveal words/syllables
|
KSF is line-based: you define an unrevealed line, then subsequent commands reveal words/syllables
|
||||||
on appropriate timings.
|
on appropriate timings.
|
||||||
|
|
||||||
uint24 index (used to specify target subtitle object)
|
uint24 Subtitle object ID (used to specify target subtitle object)
|
||||||
|
uint64 Timecode in nanoseconds (only present for KSF-TC format; regular KSF must not write these bytes)
|
||||||
uint8 opcode
|
uint8 opcode
|
||||||
<definition opcodes>
|
<definition opcodes>
|
||||||
0x00 = <argument terminator>, is NOP when used here
|
0x00 = <argument terminator>, is NOP when used here
|
||||||
@@ -898,8 +906,9 @@ transmission capability, and region-of-interest coding.
|
|||||||
uint16 Width: video width in pixels
|
uint16 Width: video width in pixels
|
||||||
uint16 Height: video height in pixels
|
uint16 Height: video height in pixels
|
||||||
uint8 FPS: frames per second. Use 0x00 for still images
|
uint8 FPS: frames per second. Use 0x00 for still images
|
||||||
uint32 Total Frames: number of video frames. Use 0xFFFFFFFF to denote still image (.im3 file)
|
uint32 Total Frames: number of video frames
|
||||||
- frame count of 0 is used to denote not-finalised video stream
|
- use 0 to denote not-finalised video stream
|
||||||
|
- use 0xFFFFFFFF to denote still image (.im3 file)
|
||||||
uint8 Wavelet Filter Type:
|
uint8 Wavelet Filter Type:
|
||||||
- 0 = 5/3 reversible (LGT 5/3, JPEG 2000 standard)
|
- 0 = 5/3 reversible (LGT 5/3, JPEG 2000 standard)
|
||||||
- 1 = 9/7 irreversible (CDF 9/7, slight modification of JPEG 2000, default choice)
|
- 1 = 9/7 irreversible (CDF 9/7, slight modification of JPEG 2000, default choice)
|
||||||
@@ -932,7 +941,8 @@ transmission capability, and region-of-interest coding.
|
|||||||
- 6-7 = Reserved/invalid (would indicate no luma and no chroma)
|
- 6-7 = Reserved/invalid (would indicate no luma and no chroma)
|
||||||
uint8 Entropy Coder
|
uint8 Entropy Coder
|
||||||
- 0 = Twobit-plane significance map
|
- 0 = Twobit-plane significance map
|
||||||
- 1 = Embedded Zero Block Coding (EZBC, experimental)
|
- 1 = Embedded Zero Block Coding
|
||||||
|
- 2 = Raw coefficients
|
||||||
uint8 Reserved[2]: fill with zeros
|
uint8 Reserved[2]: fill with zeros
|
||||||
uint8 Device Orientation
|
uint8 Device Orientation
|
||||||
- 0 = No rotation
|
- 0 = No rotation
|
||||||
@@ -961,28 +971,24 @@ transmission capability, and region-of-interest coding.
|
|||||||
0x12: GOP Unified (temporal 3D DWT with unified preprocessing)
|
0x12: GOP Unified (temporal 3D DWT with unified preprocessing)
|
||||||
0x1F: (prohibited)
|
0x1F: (prohibited)
|
||||||
<audio packets>
|
<audio packets>
|
||||||
0x20: MP2 audio packet
|
0x20: MP2 audio packet (32 KHz)
|
||||||
0x21: Zstd-compressed 8-bit PCM (32 KHz, audio hardware's native format)
|
0x21: Zstd-compressed 8-bit PCM (32 KHz, audio hardware's native format)
|
||||||
0x22: Zstd-compressed 16-bit PCM (32 KHz, little endian)
|
0x22: Zstd-compressed 16-bit PCM (32 KHz, little endian)
|
||||||
0x23: Zstd-compressed ADPCM
|
0x23: Zstd-compressed ADPCM (32 KHz)
|
||||||
0x24: Zstd-compressed TAD
|
0x24: TAD (TSVM Advanced Audio)
|
||||||
<subtitles>
|
<subtitles>
|
||||||
0x30: Subtitle in "Simple" format
|
0x30: Subtitle in "Simple" format
|
||||||
0x31: Subtitle in "Karaoke" format
|
0x31: Subtitle in "Simple" format with timecodes
|
||||||
|
0x32: Subtitle in "Karaoke" format
|
||||||
|
0x33: Subtitle in "Karaoke" format with timecodes
|
||||||
<synchronised tracks>
|
<synchronised tracks>
|
||||||
0x40: MP2 audio track
|
0x40: MP2 audio track (32 KHz)
|
||||||
0x41: Zstd-compressed 8-bit PCM (32 KHz, audio hardware's native format)
|
0x41: Zstd-compressed 8-bit PCM (32 KHz, audio hardware's native format)
|
||||||
0x42: Zstd-compressed 16-bit PCM (32 KHz, little endian)
|
0x42: Zstd-compressed 16-bit PCM (32 KHz, little endian)
|
||||||
0x43: Zstd-compressed ADPCM
|
0x43: Zstd-compressed ADPCM (32 KHz)
|
||||||
|
0x44: TAD (TSVM Advanced Audio)
|
||||||
<multiplexed video>
|
<multiplexed video>
|
||||||
0x70/71: Video channel 2 I/P-frame
|
0x70..7F: Reserved for Future Version
|
||||||
0x72/73: Video channel 3 I/P-frame
|
|
||||||
0x74/75: Video channel 4 I/P-frame
|
|
||||||
0x76/77: Video channel 5 I/P-frame
|
|
||||||
0x78/79: Video channel 6 I/P-frame
|
|
||||||
0x7A/7B: Video channel 7 I/P-frame
|
|
||||||
0x7C/7D: Video channel 8 I/P-frame
|
|
||||||
0x7E/7F: Video channel 9 I/P-frame
|
|
||||||
<Standard metadata payloads>
|
<Standard metadata payloads>
|
||||||
(it's called "standard" because you're expected to just copy-paste the metadata bytes verbatim)
|
(it's called "standard" because you're expected to just copy-paste the metadata bytes verbatim)
|
||||||
0xE0: EXIF packet
|
0xE0: EXIF packet
|
||||||
@@ -1005,14 +1011,15 @@ transmission capability, and region-of-interest coding.
|
|||||||
Before the first frame group:
|
Before the first frame group:
|
||||||
1. TAV Extended header (if any)
|
1. TAV Extended header (if any)
|
||||||
2. Standard metadata payloads (if any)
|
2. Standard metadata payloads (if any)
|
||||||
|
3. SSF-TC/KSF-TC packets (if any)
|
||||||
|
|
||||||
Frame group:
|
Frame group:
|
||||||
1. TC Packet (0xFD) or Next TAV File (0x1F) [mutually exclusive!]
|
1. TC Packet (0xFD) or Next TAV File (0x1F) [mutually exclusive!]
|
||||||
2. Loop point packets
|
2. Loop point packet (if any)
|
||||||
3. Audio packets
|
3. Audio packets (if any)
|
||||||
4. Subtitle packets
|
4. Subtitle packets (if any)
|
||||||
5. Main video packets (0x10-0x1E)
|
5. Main video packets (0x10-0x1E)
|
||||||
6. Multiplexed video packets (0x70-7F)
|
6. Multiplexed video packets (0x70-7F; if any)
|
||||||
|
|
||||||
After a frame group:
|
After a frame group:
|
||||||
1. Sync packet
|
1. Sync packet
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user