Skip to content

Commit fd313af

Browse files
committed
Implement fixed tag row offset logic
1 parent 319b8b1 commit fd313af

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

src/main/kaitai/rekordbox_pdb.ksy

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -920,9 +920,11 @@ types:
920920
doc: |
921921
A row that holds a tag name and its ID (found only in exportExt.pdb files).
922922
seq:
923-
- type: u2
923+
- id: subtype
924+
type: u2
924925
doc: |
925-
Seems to always be 0x80, 0x06.
926+
Usually 0x0680, but 0x0684 means we have a long name offset
927+
embedded in the row.
926928
- id: tag_index
927929
type: u2
928930
doc: |
@@ -949,26 +951,38 @@ types:
949951
type: u4
950952
doc: |
951953
Non-zero when this row stores a tag category instead of a tag.
952-
- type: u2
954+
- type: u1
953955
doc: |
954-
Seems to always be 0x03, 0x1f.
955-
- id: flags
956+
@flesniak says: "always 0x03, maybe an unindexed empty string"
957+
- id: ofs_name_near
956958
type: u1
957959
doc: |
958-
Maybe some kind of flags?
959-
- id: name
960-
type: device_sql_string
961-
doc: |
962-
The name of the tag or tag category.
963-
- type: u1
960+
The location of the variable-length name string, relative to
961+
the start of this row, unless subtype is 0x64.
962+
- id: ofs_unknown_near
963+
type: u1
964964
doc: |
965-
This seems to always be 0x03.
965+
Offset to a string that seems always to be empty.
966966
instances:
967967
is_category:
968968
value: raw_is_category != 0
969969
doc: |
970970
Indicates whether this row stores a tag category instead of a tag.
971971
-webide-parse-mode: eager
972+
ofs_name_far:
973+
pos: _parent.row_base + 0x1e
974+
type: u2
975+
doc: |
976+
For names that might be further than 0xff bytes from the
977+
start of this row, this holds a two-byte offset, and is
978+
signalled by the subtype value.
979+
if: subtype & 0x04 == 0x04
980+
name:
981+
pos: '_parent.row_base + (subtype & 0x04 == 0x04? ofs_name_far : ofs_name_near)'
982+
type: device_sql_string
983+
doc: |
984+
The name of this tag or tag category.
985+
-webide-parse-mode: eager
972986

973987
tag_track_row:
974988
doc: |

0 commit comments

Comments
 (0)