-
-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handle multiple data for string atoms #290
Conversation
Thanks a lot for the PR! I've been very busy with another project lately. I'll do a review when things have calmed down. Thanks for your understanding~ |
I'm afraid we'll need to work a little more on that PR. I have three issues so far : 1/ I can't find any official nor non-official specification documenting the structure you describe 2/ If one updates the part that reads metadata, one also has to update the part that writes it. 3/ Last but not least, I don't know how to find or forge an M4A/MP4 file that exhibits the data structure you're describing. Thanks in advance for your help. |
This is very unfortunate as the documentation of this behavior is poor, but the data structure is basically just multiple 'data' atoms inside one metadata, for example 'ART' box. This is a reference layout https://xhelmboyx.tripod.com/formats/mp4-layout.txt, you scroll to the bottom of this file, and the single atom multi data structure is basically repeating this part:
The data size of the parent atom, (e.g. iTunes only use this structure for
I have attached a sample with sinewave sound tagged with multiple values in the artist filed. |
Alright, that works for me. I'll start from what you pushed 👍 |
That's a wrap! FYI, the implementation isn't exactly the same as for embedded pictures, as the latter uses multiple |
That's an oversight from my side making that sample. We do have TWO flavors of doing this. The one I intended to implment is using the exact same as This sample is intended to demonstrate the exact same data structure of the This one is more problematic because the seek position will be wrong due to multi data in the |
If you need more info on how popular metadata tagger are handling this:
|
Okaaaay... thanks for the extra sample anyway, that's precious. Please tell me I just need to implement that one in read mode, not write mode. |
What I think is more correct:
|
I'd rather say in the absence of a bona fide spec, the user's the one who decides. I'm gonna follow your lead on that one. |
Turns out we did the heavy lifting yesterday. Everything should be good with the latest commit. |
Now available in today's v6.09 |
The MP4 container supports multiple data atoms within a single metadata field atom. However, this is handled incorrectly now. The extra data atom is treated as an additional field, and this also causes the seek position to be incorrect. Consequently, parsing of other fields, such as the
trkn
field might also break.See jellyfin/jellyfin#13004 for more info