@@ -221,6 +221,45 @@ static void detectMediaTek(FFCPUResult* cpu)
221221 }
222222}
223223
224+ static void detectExynos (FFCPUResult * cpu )
225+ {
226+ // https://en.wikipedia.org/wiki/Exynos
227+
228+ assert (cpu -> name .length > 3 );
229+ uint32_t code = (uint32_t ) strtoul (cpu -> name .chars + 3 , NULL , 10 );
230+ const char * name = NULL ;
231+
232+ switch (code )
233+ {
234+ case 9955 : name = "2500" ; break ;
235+ case 9945 : name = "2400" ; break ;
236+ // No 2300
237+ case 9925 : name = "2200" ; break ;
238+ case 9840 : name = "2100" ; break ;
239+
240+ case 8855 : name = "1580" ; break ;
241+ case 8845 : name = "1480" ; break ;
242+ case 8835 : name = "1380" ; break ;
243+ case 8535 : name = "1330" ; break ;
244+ case 8825 : name = "1280" ; break ;
245+ case 9815 : name = "1080" ; break ;
246+
247+ case 9830 : name = "990" ; break ;
248+ case 9630 : name = "980" ; break ;
249+
250+ case 8805 : name = "880" ; break ;
251+ case 3830 : name = "850" ; break ;
252+ }
253+
254+ if (name )
255+ {
256+ char str [32 ];
257+ ffStrCopy (str , cpu -> name .chars , sizeof (str ));
258+ ffStrbufSetF (& cpu -> name , "Samsung Exynos %s [%s]" , name , str );
259+ return ;
260+ }
261+ }
262+
224263static void detectAndroid (FFCPUResult * cpu )
225264{
226265 if (cpu -> name .length == 0 )
@@ -248,6 +287,12 @@ static void detectAndroid(FFCPUResult* cpu)
248287 detectQualcomm (cpu );
249288 else if (ffStrbufEqualS (& cpu -> vendor , "MediaTek" ) && ffStrbufStartsWithS (& cpu -> name , "MT" ))
250289 detectMediaTek (cpu );
290+ else if (ffStrbufEqualS (& cpu -> vendor , "Samsung" ) && ffStrbufStartsWithS (& cpu -> name , "s5e" ))
291+ {
292+ cpu -> name .chars [0 ] = 'S' ;
293+ cpu -> name .chars [2 ] = 'E' ;
294+ detectExynos (cpu );
295+ }
251296}
252297#endif
253298
0 commit comments