From 9761b0f215c03fed8f4259867a9360bd83a61df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Martinez?= Date: Wed, 15 Jun 2022 17:59:53 +0200 Subject: [PATCH] + ID3v2: Popularimeter --- .../MediaInfo/MediaInfo_Config_Automatic.cpp | 3 ++ Source/MediaInfo/Tag/File_Id3v2.cpp | 42 +++++++++++++++++++ Source/MediaInfo/Tag/File_Id3v2.h | 4 +- .../Text/Language/DefaultLanguage.csv | 3 ++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp index 8f9662d5e..696140a5e 100644 --- a/Source/MediaInfo/MediaInfo_Config_Automatic.cpp +++ b/Source/MediaInfo/MediaInfo_Config_Automatic.cpp @@ -156,6 +156,9 @@ void MediaInfo_Config_DefaultLanguage (Translation &Info) " second1; second\n" " second2; seconds\n" " second3; seconds\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 6bd8972c3..e169e4672 100644 --- a/Source/MediaInfo/Tag/File_Id3v2.cpp +++ b/Source/MediaInfo/Tag/File_Id3v2.cpp @@ -1047,6 +1047,48 @@ 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_OffsetLimits[Limit]) + Limit++; + Limit++; + Fill(Stream_General, 0, "Popularimeter", Limit); + Fill(Stream_General, 0, "Popularimeter_Numerator", Rating); + Fill(Stream_General, 0, "Popularimeter_Denominator", 255); + Fill(Stream_General, 0, "Popularimeter_Source", Owner); + auto const& Popularimeter=Retrieve_Const(Stream_General, 0, "Popularimeter"); + Fill(Stream_General, 0, "Popularimeter/String", MediaInfoLib::Config.Language_Get(Popularimeter, __T(" star"))+__T(" (")+Retrieve_Const(Stream_General, 0, "Popularimeter_Numerator")+__T("/255, ")+Retrieve_Const(Stream_General, 0, "Popularimeter_Source") + __T(')')); + Fill_SetOptions(Stream_General, 0, "Popularimeter", "N NIY"); + 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"); + Fill_SetOptions(Stream_General, 0, "Popularimeter/String", "Y NTN"); + } + FILLING_END(); +} + //--------------------------------------------------------------------------- void File_Id3v2::PRIV() { diff --git a/Source/MediaInfo/Tag/File_Id3v2.h b/Source/MediaInfo/Tag/File_Id3v2.h index e0dee25b5..8910f5cd7 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");} @@ -163,7 +163,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 c5a31a150..53d362ed4 100644 --- a/Source/Resource/Text/Language/DefaultLanguage.csv +++ b/Source/Resource/Text/Language/DefaultLanguage.csv @@ -127,6 +127,9 @@ second1; second second2; seconds second3; seconds + star1; star + star2; stars + star3; stars text stream1; text stream text stream2; text streams text stream3; text streams