diff --git a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp index f713d62d7c..4e7ac64233 100644 --- a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp +++ b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp @@ -159,6 +159,9 @@ void MediaInfo_Config_DefaultLanguage (Translation &Info) " slice per frame1; slice per frame\n" " slice per frame2; slices per frame\n" " slice per frame3; slices per frame\n" + " star1; star\n" + " star2; stars\n" + " star3; stars\n" " text stream1; text stream\n" " text stream2; text streams\n" " text stream3; text streams\n" diff --git a/Source/MediaInfo/Tag/File_Id3v2.cpp b/Source/MediaInfo/Tag/File_Id3v2.cpp index f56e2fc4f6..fa2d782f39 100644 --- a/Source/MediaInfo/Tag/File_Id3v2.cpp +++ b/Source/MediaInfo/Tag/File_Id3v2.cpp @@ -1045,6 +1045,50 @@ void File_Id3v2::RGAD() FILLING_END(); } +//--------------------------------------------------------------------------- +void File_Id3v2::POPM() +{ + string Owner; + size_t Owner_Size=0; + int8u Rating; + while (Element_Offset+Owner_Size=Element_Size) + { + Skip_XX(Element_Size-Element_Offset, "Unknown"); + return; + } + Get_String(Owner_Size, Owner, "Owner identifier"); + Skip_B1( "Null"); + Get_B1 (Rating, "Rating"); + if (Element_Offset Limits[Stars - 1]) + Stars++; + auto StarsS = Ztring::ToZtring(Stars); + auto NumS = Ztring::ToZtring(Rating); + auto DenS = Ztring::ToZtring(255); + auto OwnerS = Ztring().From_ISO_8859_1(Owner.c_str()); + Fill(Stream_General, 0, "Popularimeter/5Stars", StarsS); + Fill(Stream_General, 0, "Popularimeter/String", MediaInfoLib::Config.Language_Get(StarsS, __T(" star")) + __T(" (") + NumS + __T("/255, ") + OwnerS + __T(')')); + Fill(Stream_General, 0, "Popularimeter/Numerator", Rating); + Fill(Stream_General, 0, "Popularimeter/Denominator", 255); + Fill(Stream_General, 0, "Popularimeter/Source", Owner); + Fill_SetOptions(Stream_General, 0, "Popularimeter/5Stars", "N NIY"); + Fill_SetOptions(Stream_General, 0, "Popularimeter/String", "Y NTN"); + Fill_SetOptions(Stream_General, 0, "Popularimeter/Numerator", "N NIY"); + Fill_SetOptions(Stream_General, 0, "Popularimeter/Denominator", "N NIY"); + Fill_SetOptions(Stream_General, 0, "Popularimeter/Source", "N NTY"); + } + FILLING_END(); +} + //--------------------------------------------------------------------------- void File_Id3v2::PRIV() { diff --git a/Source/MediaInfo/Tag/File_Id3v2.h b/Source/MediaInfo/Tag/File_Id3v2.h index decea9cb4b..fc5bb03624 100644 --- a/Source/MediaInfo/Tag/File_Id3v2.h +++ b/Source/MediaInfo/Tag/File_Id3v2.h @@ -71,7 +71,7 @@ private : void MLLT() {Skip_XX(Element_Size, "Data");} void OWNE() {Skip_XX(Element_Size, "Data");} void PCNT() {Skip_XX(Element_Size, "Data");} - void POPM() {Skip_XX(Element_Size, "Data");} + void POPM(); void POSS() {Skip_XX(Element_Size, "Data");} void PRIV(); void RBUF() {Skip_XX(Element_Size, "Data");} @@ -164,7 +164,7 @@ private : void MCI() {Skip_XX(Element_Size, "Data");} void MLL() {Skip_XX(Element_Size, "Data");} void PIC_() {APIC();} - void POP() {Skip_XX(Element_Size, "Data");} + void POP() {POPM();} void REV() {Skip_XX(Element_Size, "Data");} void RVA() {Skip_XX(Element_Size, "Data");} void SLT() {Skip_XX(Element_Size, "Data");} diff --git a/Source/Resource/Text/Language/DefaultLanguage.csv b/Source/Resource/Text/Language/DefaultLanguage.csv index 0cd6121ada..a2565a9765 100644 --- a/Source/Resource/Text/Language/DefaultLanguage.csv +++ b/Source/Resource/Text/Language/DefaultLanguage.csv @@ -130,6 +130,9 @@ slice per frame1; slice per frame slice per frame2; slices per frame slice per frame3; slices per frame + star1; star + star2; stars + star3; stars text stream1; text stream text stream2; text streams text stream3; text streams