Skip to content
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

MP4: improve display of operating system and hardware #2189

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

JeromeMartinez
Copy link
Member

Improvement of #2179.
Focused on Android and iOS but also handle some cameras, and XML or JSON outputs have separate fields for company name, product name, model, similar to writing app and library.

e.g.

Writing hardware                         : Canon EOS-1D C
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung S23 Ultra (SM-M918B)
Writing operating system                 : Apple iOS 14.7.1
Writing hardware                         : Apple iPhone 12 mini

cc @cjee21.

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

Here is the output with MediaInfo built from this branch on a video from S23 Ultra that someone sent to me:

Performer                                : Galaxy S23 Ultra
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung SM-S918B

Performer is still there... and hardware missing 'Galaxy S23 Ultra'... not expected right?

For another model looks fine:

Writing operating system                 : Google Android 13
Writing hardware                         : Samsung SM-M325FV

@JeromeMartinez
Copy link
Member Author

Performer is still there... and hardware missing 'Galaxy S23 Ultra'... not expected right?

I created a file based on what I understood as being there, looks like it is not the exact way in the file :(.
Please provide a slice of the file, I need only what is in the "moov" atom, you can find "moov" in the file and cut everything before that before sending it to me ([email protected] if you prefer not to share it publicly), it removes all the A/V content.
Else you need to tweak https://github.com/MediaArea/MediaInfoLib/pull/2189/files#diff-f50cbeb39c0bf1da5a4cc81812b1f9f63ac05b6b2edcea155698c48088fc91deR1046

@JeromeMartinez
Copy link
Member Author

Galaxy S23 Ultra

Argh, I see, I wrongly wrote "Samsung" instead of "Galaxy" in the file, I change my file and tweak the code.

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

Argh, I see, I wrongly wrote "Samsung" instead of "Galaxy" in the file, I change my file and tweak the code.

The thing is, some Samsung phones contain Samsung there and some Galaxy...

@JeromeMartinez
Copy link
Member Author

The thing is, some Samsung phones contain Samsung there and some Galaxy...

I will manage both.

@JeromeMartinez
Copy link
Member Author

The thing is, some Samsung phones contain Samsung there and some Galaxy...

What is the exact string of a file having "Samsung"?
(I wonder if it contains "Galaxy" or not i.e. "Samsung Galaxy S23" rather than "Samsung S23", as it is the marketing name)

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

MediaTrace of file from Galaxy S23: #2179 (comment)
Sample file from Galaxy M32: #2175 (comment)

I only have files from two types of Samsung phones so don't know if there are other possibilities. Both phones not mine. So far I have not seen other brand Android phones that write this kind of info. Others only have com.android.version which seems to be present for any video created on the phone, not only from camera.

@JeromeMartinez
Copy link
Member Author

So no "S23" with "Samsung", always with "Galaxy".

So far I have not seen other brand Android phones that write this kind of info

Even my A41 does not have any info... but still good to show when it is present, and we'll see if we find more...

@JeromeMartinez
Copy link
Member Author

I mean, "Samsung" seems used for the model (technical) name, "Galaxy" for the marketing name, at least up to now.

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

This PR causes performers such as "Samsung Electronics Nano Philharmonic Orchestra" to not be displayed correctly.

@JeromeMartinez
Copy link
Member Author

This PR causes performers such as "Samsung Electronics Nano Philharmonic Orchestra" to not be displayed correctly.

Argh! I need to find a more proper way... Maybe with testing only "Galaxy" there, not "Samsung".
Can you share this file? (only the "moov" atom is useful)

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

Argh! I need to find a more proper way... Maybe with testing only "Galaxy" there, not "Samsung". Can you share this file? (only the "moov" atom is useful)

I just tried tagging the previous sample file with Mp3tag. That orchestra name I found on Google. If the Samsung metadata is removed first then it shows performer correctly. Take note that someone might be named Galaxy too 😉

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

Sample after tagging with Mp3tag:
samsung_sample (2).zip

@JeromeMartinez
Copy link
Member Author

Take note that someone might be named Galaxy too 😉

At some point I need to have a rule... :(
Storing all the model name is not future proof.
Let's see a proposal...

@cjee21
Copy link
Contributor

cjee21 commented Feb 11, 2025

For some reason, the performer saved by the phone does not show in Mp3tag or FFmpeg. Only the one added by Mp3tag shows. So there is a difference?

@JeromeMartinez
Copy link
Member Author

samsung_sample (2).zip

This file has 2 "Performer" fields, one old fashion "auth" atom and another "©ART" in "meta" atom, but I see the idea.

Focused on Android (Samsung and Google) and iOS but also handle some cameras
@JeromeMartinez
Copy link
Member Author

I updated this PR with handling all the cases I found, including a Google Pixel 9, which has yet another method for providing the model name, and also synthetical files, which is maybe not good but let's start with such coverage and we see how it behave in practice with lot of users.
@cjee21 please review/comment.

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Still has issues:

M32 + Mp3tag Artist tag containing Samsung (exactly two words such as Samsung Staff / Samsung Orchestra):

Frame rate                               : 30.032 FPS
Encoded date                             : 2025-01-24 16:14:20 UTC
Tagged date                              : 2025-01-24 16:14:20 UTC
Writing operating system                 : Google Android 13
Writing hardware                         : Samsung SM-M325FV

Not OK, missing Artist/Performer

M32 + Mp3tag Artist tag containing Galaxy:

Frame rate                               : 30.032 FPS
Encoded date                             : 2025-01-24 16:14:20 UTC
Tagged date                              : 2025-01-24 16:14:20 UTC
Writing operating system                 : Google Android 13
Writing hardware                         : Samsung Galaxy Jung (SM-M325FV)

Not OK, Artist/Performer becomes hardware model name

S23 + Mp3tag Artist tag containing Samsung (exactly two words such as Samsung Staff / Samsung Orchestra):

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra (SM-S918B)

Not OK, missing Artist/Performer

S23 + Mp3tag Artist tag containing Samsung:

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra / Samsung Electronics Nano Philharmonic Orchestra (SM-S918B)

Not OK, Artist/Performer becomes hardware model name

S23 + Mp3tag Artist tag containing Galaxy:

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra / Galaxy Jung (SM-S918B)

Not OK, , Artist/Performer becomes hardware model name

S23 + Mp3tag Artist tag not containing anything related to Samsung Galaxy:

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra / Ng (SM-S918B)

Not OK, , Artist/Performer becomes hardware model name

S23

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra (SM-S918B)

OK

M32

Frame rate                               : 30.032 FPS
Encoded date                             : 2025-01-24 16:14:20 UTC
Tagged date                              : 2025-01-24 16:14:20 UTC
Writing operating system                 : Google Android 13
Writing hardware                         : Samsung SM-M325FV

OK

M32 + Mp3tag Artist tag containing Samsung:

Frame rate                               : 30.032 FPS
Performer                                : Samsung Electronics Nano Philharmonic Orchestra
Encoded date                             : 2025-01-24 16:14:20 UTC
Tagged date                              : 2025-01-24 16:14:20 UTC
Writing operating system                 : Google Android 13
Writing hardware                         : Samsung SM-M325FV

OK

M32 + Mp3tag Artist tag not containing anything related to Samsung Galaxy:

Performer                                : Lee
Encoded date                             : 2025-01-24 16:14:20 UTC
Tagged date                              : 2025-01-24 16:14:20 UTC
Writing operating system                 : Google Android 13
Writing hardware                         : Samsung SM-M325FV

OK

Just Mp3tag Artist tag containing Galaxy (or Samsung):

Frame rate                               : 30.032 FPS
Performer                                : Galaxy Jung
Writing application                      : Lavf61.9.107

OK

Apple:

Frame rate                               : 58.890 FPS
Recorded date                            : 2020-11-06T17:19:58-0500
Encoded date                             : 2020-11-09 02:37:41 UTC
Tagged date                              : 2020-11-09 02:37:43 UTC
Writing library                          : Apple QuickTime
Writing operating system                 : Apple iOS 14.1
Writing hardware                         : Apple iPhone 12 Pro

OK

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Trace of the Galaxy S23 file:

User Data (udta) + Metadata (meta)

96BED3D  User Data (113 bytes)
96BED3D   Header (8 bytes)
96BED3D    Size:                                113 (0x00000071)
96BED41    Name:                                udta
96BED45   Text - SDLN (16 bytes)
96BED45    Header (8 bytes)
96BED45     Size:                               16 (0x00000010)
96BED49     Name:                               SDLN
96BED4D    Unknown:                             (8 bytes)
96BED55   Text - smrd (16 bytes)
96BED55    Header (8 bytes)
96BED55     Size:                               16 (0x00000010)
96BED59     Name:                               smrd
96BED5D    Unknown:                             (8 bytes)
96BED65   Text - Performer (31 bytes)
96BED65    Header (8 bytes)
96BED65     Size:                               31 (0x0000001F)
96BED69     Name:                               auth
96BED6D    Version:                             0 (0x00)
96BED6E    Flags:                               0 (0x000000)
96BED71    Language:                            5575 (0x15C7) - eng
96BED73    Value:                               Galaxy S23 Ultra
96BED84   Samsung Metadata (42 bytes)
96BED84    Header (8 bytes)
96BED84     Size:                               42 (0x0000002A)
96BED88     Name:                               smta
96BED8C    Version:                             0 (0x00)
96BED8D    Flags:                               0 (0x000000)
96BED90    saut (14 bytes)
96BED90     Header (8 bytes)
96BED90      Size:                              14 (0x0000000E)
96BED94      Name:                              saut
96BED98     Unknown:                            (6 bytes)
96BED9E    Model Number (16 bytes)
96BED9E     Header (8 bytes)
96BED9E      Size:                              16 (0x00000010)
96BEDA2      Name:                              mdln
96BEDA6     Value:                              SM-S918B
96BEDAE  Metadata (177 bytes)
96BEDAE   Header (8 bytes)
96BEDAE    Size:                                177 (0x000000B1)
96BEDB2    Name:                                meta
96BEDB6   Metadata Header (33 bytes)
96BEDB6    Header (8 bytes)
96BEDB6     Size:                               33 (0x00000021)
96BEDBA     Name:                               hdlr
96BEDBE    Version:                             0 (0x00)
96BEDBF    Flags:                               0 (0x000000)
96BEDC2    Type (Quicktime):                    
96BEDC6    Metadata type:                       mdta
96BEDCA    Manufacturer:                        
96BEDCE    Component reserved flags:            0 (0x00000000)
96BEDD2    Component reserved flags mask:       0 (0x00000000)
96BEDD6    Component type name:                 
96BEDD7   Keys (74 bytes)
96BEDD7    Header (8 bytes)
96BEDD7     Size:                               74 (0x0000004A)
96BEDDB     Name:                               keys
96BEDDF    Version:                             0 (0x00)
96BEDE0    Flags:                               0 (0x000000)
96BEDE3    Count:                               2 (0x00000002)
96BEDE7    Name (27 bytes)
96BEDE7     Header (8 bytes)
96BEDE7      Size:                              27 (0x0000001B)
96BEDEB      Name:                              mdta
96BEDEF     Value:                              com.android.version
96BEE02    Name (31 bytes)
96BEE02     Header (8 bytes)
96BEE02      Size:                              31 (0x0000001F)
96BEE06      Name:                              mdta
96BEE0A     Value:                              com.android.capture.fps
96BEE21   List (62 bytes)
96BEE21    Header (8 bytes)
96BEE21     Size:                               62 (0x0000003E)
96BEE25     Name:                               ilst
96BEE29    Element (26 bytes)
96BEE29     Header (8 bytes)
96BEE29      Size:                              26 (0x0000001A)
96BEE2D      Name:                              
96BEE31     Data (18 bytes)
96BEE31      Header (8 bytes)
96BEE31       Size:                             18 (0x00000012)
96BEE35       Name:                             data
96BEE39      Kind:                              1 (0x00000001) - UTF8
96BEE3D      Language:                          0 (0x00000000)
96BEE41      Value:                             14
96BEE43    Element (28 bytes)
96BEE43     Header (8 bytes)
96BEE43      Size:                              28 (0x0000001C)
96BEE47      Name:                              
96BEE4B     Data (20 bytes)
96BEE4B      Header (8 bytes)
96BEE4B       Size:                             20 (0x00000014)
96BEE4F       Name:                             data
96BEE53      Kind:                              23 (0x00000017) - Float 32
96BEE57      Language:                          0 (0x00000000)
96BEE5B      Data:                              60.000

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Updated comments above after re-testing because just now GitHub Desktop did not pull latest commits. I though clicking Checkout here will checkout exactly what is on this PR since previous local branches have been deleted but that is not how Git works.

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Galaxy S23, after tagging multiple Artist with Mp3tag:

Frame rate                               : 60.000 FPS
Encoded date                             : 2025-01-12 06:12:18 UTC
Tagged date                              : 2025-01-12 06:12:18 UTC
Writing operating system                 : Google Android 14
Writing hardware                         : Samsung Galaxy S23 Ultra / Galaxy Jung / Samsung Electronics Nano Philharmonic Orchestra (SM-S918B)

Trace:

User Data (udta) + Metadata (meta)

000008C  Metadata (177 bytes)
000008C   Header (8 bytes)
000008C    Size:                                177 (0x000000B1)
0000090    Name:                                meta
0000094   Metadata Header (33 bytes)
0000094    Header (8 bytes)
0000094     Size:                               33 (0x00000021)
0000098     Name:                               hdlr
000009C    Version:                             0 (0x00)
000009D    Flags:                               0 (0x000000)
00000A0    Type (Quicktime):                    
00000A4    Metadata type:                       mdta
00000A8    Manufacturer:                        
00000AC    Component reserved flags:            0 (0x00000000)
00000B0    Component reserved flags mask:       0 (0x00000000)
00000B4    Component type name:                 
00000B5   Keys (74 bytes)
00000B5    Header (8 bytes)
00000B5     Size:                               74 (0x0000004A)
00000B9     Name:                               keys
00000BD    Version:                             0 (0x00)
00000BE    Flags:                               0 (0x000000)
00000C1    Count:                               2 (0x00000002)
00000C5    Name (27 bytes)
00000C5     Header (8 bytes)
00000C5      Size:                              27 (0x0000001B)
00000C9      Name:                              mdta
00000CD     Value:                              com.android.version
00000E0    Name (31 bytes)
00000E0     Header (8 bytes)
00000E0      Size:                              31 (0x0000001F)
00000E4      Name:                              mdta
00000E8     Value:                              com.android.capture.fps
00000FF   List (62 bytes)
00000FF    Header (8 bytes)
00000FF     Size:                               62 (0x0000003E)
0000103     Name:                               ilst
0000107    Element (26 bytes)
0000107     Header (8 bytes)
0000107      Size:                              26 (0x0000001A)
000010B      Name:                              
000010F     Data (18 bytes)
000010F      Header (8 bytes)
000010F       Size:                             18 (0x00000012)
0000113       Name:                             data
0000117      Kind:                              1 (0x00000001) - UTF8
000011B      Language:                          0 (0x00000000)
000011F      Value:                             14
0000121    Element (28 bytes)
0000121     Header (8 bytes)
0000121      Size:                              28 (0x0000001C)
0000125      Name:                              
0000129     Data (20 bytes)
0000129      Header (8 bytes)
0000129       Size:                             20 (0x00000014)
000012D       Name:                             data
0000131      Kind:                              23 (0x00000017) - Float 32
0000135      Language:                          0 (0x00000000)
0000139      Data:                              60.000
...
0003AC5  User Data (352 bytes)
0003AC5   Header (8 bytes)
0003AC5    Size:                                352 (0x00000160)
0003AC9    Name:                                udta
0003ACD   Text - SDLN (16 bytes)
0003ACD    Header (8 bytes)
0003ACD     Size:                               16 (0x00000010)
0003AD1     Name:                               SDLN
0003AD5    Unknown:                             (8 bytes)
0003ADD   Text - smrd (16 bytes)
0003ADD    Header (8 bytes)
0003ADD     Size:                               16 (0x00000010)
0003AE1     Name:                               smrd
0003AE5    Unknown:                             (8 bytes)
0003AED   Text - Performer (31 bytes)
0003AED    Header (8 bytes)
0003AED     Size:                               31 (0x0000001F)
0003AF1     Name:                               auth
0003AF5    Version:                             0 (0x00)
0003AF6    Flags:                               0 (0x000000)
0003AF9    Language:                            5575 (0x15C7) - eng
0003AFB    Value:                               Galaxy S23 Ultra
0003B0C   Samsung Metadata (42 bytes)
0003B0C    Header (8 bytes)
0003B0C     Size:                               42 (0x0000002A)
0003B10     Name:                               smta
0003B14    Version:                             0 (0x00)
0003B15    Flags:                               0 (0x000000)
0003B18    saut (14 bytes)
0003B18     Header (8 bytes)
0003B18      Size:                              14 (0x0000000E)
0003B1C      Name:                              saut
0003B20     Unknown:                            (6 bytes)
0003B26    Model Number (16 bytes)
0003B26     Header (8 bytes)
0003B26      Size:                              16 (0x00000010)
0003B2A      Name:                              mdln
0003B2E     Value:                              SM-S918B
0003B36   Metadata (239 bytes)
0003B36    Header (8 bytes)
0003B36     Size:                               239 (0x000000EF)
0003B3A     Name:                               meta
0003B3E    Version:                             0 (0x00)
0003B3F    Flags:                               0 (0x000000)
0003B42    Metadata Header (33 bytes)
0003B42     Header (8 bytes)
0003B42      Size:                              33 (0x00000021)
0003B46      Name:                              hdlr
0003B4A     Version:                            0 (0x00)
0003B4B     Flags:                              0 (0x000000)
0003B4E     Type (Quicktime):                   
0003B52     Metadata type:                      mdir
0003B56     Manufacturer:                       appl
0003B5A     Component reserved flags:           0 (0x00000000)
0003B5E     Component reserved flags mask:      0 (0x00000000)
0003B62     Component type name:                
0003B63    List (194 bytes)
0003B63     Header (8 bytes)
0003B63      Size:                              194 (0x000000C2)
0003B67      Name:                              ilst
0003B6B     Element (37 bytes)
0003B6B      Header (8 bytes)
0003B6B       Size:                             37 (0x00000025)
0003B6F       Name:                             ©ART
0003B73      Data - Performer (29 bytes)
0003B73       Header (8 bytes)
0003B73        Size:                            29 (0x0000001D)
0003B77        Name:                            data
0003B7B       Kind:                             1 (0x00000001) - UTF8
0003B7F       Language:                         0 (0x00000000)
0003B83       Value:                            Samsung Staff
0003B90     Element (35 bytes)
0003B90      Header (8 bytes)
0003B90       Size:                             35 (0x00000023)
0003B94       Name:                             ©ART
0003B98      Data - Performer (27 bytes)
0003B98       Header (8 bytes)
0003B98        Size:                            27 (0x0000001B)
0003B9C        Name:                            data
0003BA0       Kind:                             1 (0x00000001) - UTF8
0003BA4       Language:                         0 (0x00000000)
0003BA8       Value:                            Galaxy Jung
0003BB3     Element (71 bytes)
0003BB3      Header (8 bytes)
0003BB3       Size:                             71 (0x00000047)
0003BB7       Name:                             ©ART
0003BBB      Data - Performer (63 bytes)
0003BBB       Header (8 bytes)
0003BBB        Size:                            63 (0x0000003F)
0003BBF        Name:                            data
0003BC3       Kind:                             1 (0x00000001) - UTF8
0003BC7       Language:                         0 (0x00000000)
0003BCB       Value:                            Samsung Electronics Nano Philharmonic Orchestra
0003BFA     Element (43 bytes)
0003BFA      Header (8 bytes)
0003BFA       Size:                             43 (0x0000002B)
0003BFE       Name:                             ©ART
0003C02      Data - Performer (35 bytes)
0003C02       Header (8 bytes)
0003C02        Size:                            35 (0x00000023)
0003C06        Name:                            data
0003C0A       Kind:                             1 (0x00000001) - UTF8
0003C0E       Language:                         0 (0x00000000)
0003C12       Value:                            Samsung Electronics

@JeromeMartinez
Copy link
Member Author

(exactly two words such as Samsung Staff / Samsung Orchestra)

This is an arbitrary choice (short --> model name) because it is impossible to know if the value is an artist or model name without a database. So either we do this way or we don't consider any model name beginning by "Samsung" as a model name.

Note: but it should not be completely removed, I expected that it is in the model name, I check.

M32 + Mp3tag Artist tag containing Galaxy:
Not OK, Artist/Performer becomes hardware model name

Same about the arbitrary choice, but I wish to keep this one (if company is Samsung and Artist is short and starts with Galaxy for catching a real use case, the S23 thing). Any other suggestion for catching the S23 while not catching your example?

Galaxy S23, after tagging multiple Artist with Mp3tag:

I'll implement something better there but this seems highly hypothetical case...

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

What about detecting Samsung SM-<anything> and Galaxy <A/M/S><number>?

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

and maybe also don't run detection on the meta tags and only on auth atom. Since Mp3tag/FFmpeg and Samsung uses different tags. So that whatever user tags using tools they likely use, it won't be wrongly detected.

@JeromeMartinez
Copy link
Member Author

What about detecting Samsung SM-<anything> and Galaxy <A/M/S><number>?

A balance between conservative and more risk. if Samsung releases a Galaxy B something, it is not caught.
What about with Samsung SM-<anything> (adding a constraint is without space, I think it should be fine and reducing risk) and Galaxy <letters><number>[space then anything up to ~15 characters] (any count of letters then a number is unlikely a real word, and more generic)?

Note: that said, I bet that Samsung will avoid the Artist tag in the future, using Google method, we'll see...

and maybe also don't run detection on the meta tags and only on auth atom. Since Mp3tag and Samsung uses different tags.

Right, I don't know yet what I want there, but for the moment I would keep as is (catching all "performer" fields)

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Samsung releases a Galaxy B something, it is not caught.

Then Galaxy <single letter><number>?

@JeromeMartinez
Copy link
Member Author

Then Galaxy <single letter><number>?

Doesn't catch Galaxy AA12, and no reason we consider that as not a model name, hence my proposal (any count of letters then a number is unlikely a real word, and more generic).

@JeromeMartinez
Copy link
Member Author

Then Galaxy <single letter><number>?

Does not work with Galaxy s23 Ultra (which is a real use case) so reason my proposal adds [space then anything up to ~15 characters]

Please argue against Galaxy <letters><number>[space then anything up to ~15 characters] with a example of sentence you want not to be caught.

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

Galaxy <letters><number>[space then anything up to ~15 characters]

OK this should work. letters part probably some small limit of characters. When I put Galaxy <single letter><number>, I actually mean just the front part. Behind can be anything.

@cjee21
Copy link
Contributor

cjee21 commented Feb 19, 2025

On second thought, maybe better to relax the filtering and just check the auth atom instead.
There are other models which don't follow the <letter><number> format.

Examples:
Galaxy F02s
Galaxy S10e
Galaxy S25+
Galaxy Z Fold 6
Galaxy Z Flip 6
Galaxy XCover 5
Galaxy XCover Pro
Galaxy Tab S10
Galaxy Tab S10+

May not even need a filter since Mp3tag and FFmpeg don't even care about the auth atom so it is unlikely to contain user added data if the video originates from a Samsung device.

@JeromeMartinez
Copy link
Member Author

May not even need a filter since Mp3tag and FFmpeg don't even care about the auth atom so it is unlikely to contain user added data if the video originates from a Samsung device.

It is used somewhere else and the reason we handle it as Performer.

I'll implement something based on letters then digits then letters, catch of 2 uppercase letters, catch of digit at the end, for catching all known cases while avoiding to catch your other examples and we'll start with that, enough time spent on that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants