Closed randoragon closed 7 months ago
This old PR on the Rust crate suggests that NULL byte termination for TXXX is not desired: https://github.com/polyfloyd/rust-id3/pull/4 I know this is not a very credible indicator of truth, but just putting it out here.
From my reading of the informal standard, this one sentence makes it clear to me that TXXX is not a "text frame" or a "text information frame" (both terms seem to be used interchangeably):
Only text frame identifiers begin with "T", with the exception of the "TXXX" frame. -- 4.2 Text information frames
If TXXX is not a text frame, then the remark about optional NULL terminators (also section 4.2, a few sentences earlier in the same paragraph as the above quote) should not apply to it. Hence, there doesn't seem to be a reason to put a NULL terminator after a TXXX value, or at the very least, the reason does not come from the definition of text information frames.
I think I found the correct place for this issue, which already has a similar closed issue: https://github.com/quodlibet/mutagen/issues/379. This is pointless then.
I don't know if this is the right place for this issue, but the links to issue trackers from the google code page seem to be dead, so here I am :)
I noticed that when writing TXXX frames (e.g.
mid3v2 --TXXX Key:Value file.mp3
),mid3v2
places a null terminator byte after theValue
portion. This byte is not present if using eyeD3 or the Rust id3 crate. Actually, the latter Rust crate reads the null byte as part of the content, which is the reason I noticed this "bug" (eyeD3
ignores the byte when reading, but does not write it). I tried to determine whether this behavior is wanted, but I cannot be 100% certain based on the ID3 Informal standard.