|
@@ -210,14 +210,19 @@ class MP4(_MutagenTagInterface):
|
|
|
self._mutagen_file.tags['----:' + tag_label] = [tag]
|
|
|
return tag
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def _int_to_freeform_data(integer: int) -> bytes:
|
|
|
+ # "a signed big-endian integer with length one of { 1,2,3,4,8 } bytes"
|
|
|
+ # TODO exclude 5-7, 9-
|
|
|
+ byte_len = max((integer.bit_length() + 8) // 8, 1)
|
|
|
+ return integer.to_bytes(byte_len, byteorder='big', signed=True)
|
|
|
+
|
|
|
def set_free_int(self, tag_label, data):
|
|
|
assert isinstance(data, int)
|
|
|
return self._set_free(
|
|
|
tag_label=tag_label,
|
|
|
- # "a signed big-endian integer with length one of { 1,2,3,4,8 } bytes"
|
|
|
dataformat=mutagen.mp4.AtomDataType.INTEGER,
|
|
|
- # TODO set byte length properly
|
|
|
- data=data.to_bytes(1, byteorder='big', signed=True),
|
|
|
+ data=self._int_to_freeform_data(data),
|
|
|
)
|
|
|
|
|
|
def _set_free_uuid(self, tag_label, data):
|