From f127c8d948b8aa54a2223ae42520f8b3452cea44 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Fri, 22 Jan 2021 18:01:23 +0100 Subject: [PATCH] add-isRadio-to-recording --- coreengine/definitions.h | 4 ++ coreengine/listelements.c | 4 ++ coreengine/viewdetail.c | 4 +- coreengine/viewelement.c | 61 +++++++++++++++++-- coreengine/viewelement.h | 1 + coreengine/viewelementsdisplaymenu.c | 2 + .../xmlfiles/displaymenudetailrecording.xml | 2 + .../xmlfiles/displaymenurecordings.xml | 2 + 8 files changed, 75 insertions(+), 5 deletions(-) diff --git a/coreengine/definitions.h b/coreengine/definitions.h index 17f3c37..90ffdbd 100644 --- a/coreengine/definitions.h +++ b/coreengine/definitions.h @@ -1165,6 +1165,7 @@ enum class eLeMenuRecordingsIT { framesPerSecond, isHD, isUHD, + isRadio, count }; @@ -1211,6 +1212,7 @@ enum class eCeMenuRecordingsIT { framesPerSecond, isHD, isUHD, + isRadio, count }; @@ -1324,6 +1326,7 @@ enum class eDmDetailedHeaderRecIT { framesPerSecond, isHD, isUHD, + isRadio, count }; @@ -1434,6 +1437,7 @@ enum class eDmDetailedRecIT { framesPerSecond, isHD, isUHD, + isRadio, count }; diff --git a/coreengine/listelements.c b/coreengine/listelements.c index 0c4a387..98d6a51 100644 --- a/coreengine/listelements.c +++ b/coreengine/listelements.c @@ -1721,6 +1721,7 @@ void cLeMenuRecordings::SetTokenContainer(void) { tokenContainer->DefineIntToken("{fps}", (int)eLeMenuRecordingsIT::framesPerSecond); tokenContainer->DefineIntToken("{isHD}", (int)eLeMenuRecordingsIT::isHD); tokenContainer->DefineIntToken("{isUHD}", (int)eLeMenuRecordingsIT::isUHD); + tokenContainer->DefineIntToken("{isRadio}", (int)eLeMenuRecordingsIT::isRadio); InheritTokenContainer(); } @@ -1851,6 +1852,7 @@ bool cLeMenuRecordings::Parse(bool forced) { tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond()); tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info' tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' + tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isRadio, RecordingIsRadio(event)); // detect Radio from 'info' SetScraperRecordingPoster(tokenContainer, usedRecording, true); @@ -1974,6 +1976,7 @@ void cCeMenuRecordings::SetTokenContainer(void) { tokenContainer->DefineIntToken("{fps}", (int)eCeMenuRecordingsIT::framesPerSecond); tokenContainer->DefineIntToken("{isHD}", (int)eCeMenuRecordingsIT::isHD); tokenContainer->DefineIntToken("{isUHD}", (int)eCeMenuRecordingsIT::isUHD); + tokenContainer->DefineIntToken("{isRadio}", (int)eCeMenuRecordingsIT::isRadio); InheritTokenContainer(); } @@ -2111,6 +2114,7 @@ bool cCeMenuRecordings::Parse(bool forced) { tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond()); tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info' tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' + tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isRadio, RecordingIsRadio(event)); // detect Radio from 'info' SetScraperRecordingPoster(tokenContainer, usedRecording, false); diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c index 2351e84..f20e848 100644 --- a/coreengine/viewdetail.c +++ b/coreengine/viewdetail.c @@ -606,6 +606,7 @@ void cViewDetailRec::SetTokenContainer(void) { tokenContainer->DefineIntToken("{fps}", (int)eDmDetailedRecIT::framesPerSecond); tokenContainer->DefineIntToken("{isHD}", (int)eDmDetailedRecIT::isHD); tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedRecIT::isUHD); + tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedRecIT::isRadio); tokenContainer->DefineIntToken("{ismovie}", (int)eScraperIT::ismovie); tokenContainer->DefineIntToken("{moviebudget}", (int)eScraperIT::moviebudget); tokenContainer->DefineIntToken("{movierevenue}", (int)eScraperIT::movierevenue); @@ -696,7 +697,8 @@ bool cViewDetailRec::Parse(bool forced) { tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationeventhours, duration / 60); tokenContainer->AddStringToken((int)eDmDetailedRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60)); tokenContainer->AddIntToken((int)eDmDetailedRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info' - tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event)); // detect HD from 'info' + tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' + tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event)); // detect Radio from 'info' } } SetRecInfos(); diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c index 370a58f..975757c 100644 --- a/coreengine/viewelement.c +++ b/coreengine/viewelement.c @@ -596,17 +596,17 @@ bool RecordingIsHD(const cEvent* event) { int type = -1; // #1: HVEC (stream content: 9) - Component = Components->GetComponent(0, 9, 0); + Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 " if (Component) { isHD = true; // HVEC is always HD, type 4|5|6|7 would be even UHD (see below dedicated detection function) } else { // #2: H.264 (stream content: 5) - Component = Components->GetComponent(0, 5, 0); + Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 " if (Component) { type = Component->type; } else { // #3: MPEG2 (stream content: 1) - Component = Components->GetComponent(0, 1, 0); + Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 " if (Component) { type = Component->type; }; @@ -641,7 +641,7 @@ bool RecordingIsUHD(const cEvent* event) { int type = -1; // HVEC (stream content: 9) - Component = Components->GetComponent(0, 9, 0); + Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 " if (Component) { type = Component->type; }; @@ -656,3 +656,56 @@ bool RecordingIsUHD(const cEvent* event) { }; return isUHD; }; + +bool RecordingIsRadio(const cEvent* event) { + // detect Radio from 'info' + bool isRadio = false; + bool hasAudio = false; + bool hasVideo = false; + cComponents *Components = (cComponents *)event->Components(); + if (Components) { + // Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio + + tComponent *Component; + + Component = Components->GetComponent(0, 2, 0); // recording info: "X 2 " + if (Component) { + hasAudio = true; + }; + + Component = Components->GetComponent(0, 4, 0); // recording info: "X 4 " + if (Component) { + hasAudio = true; + }; + + Component = Components->GetComponent(0, 6, 0); // recording info: "X 6 " + if (Component) { + hasAudio = true; + }; + + Component = Components->GetComponent(0, 7, 0); // recording info: "X 7 " + if (Component) { + hasAudio = true; + }; + + Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 " + if (Component) { + hasVideo = true; + }; + + Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 " + if (Component) { + hasVideo = true; + }; + + Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 " + if (Component) { + hasVideo = true; + }; + }; + + if ((hasAudio == true) && (hasVideo == false)) + isRadio = true; + + return isRadio; +}; diff --git a/coreengine/viewelement.h b/coreengine/viewelement.h index 83e9e11..7a58a7f 100644 --- a/coreengine/viewelement.h +++ b/coreengine/viewelement.h @@ -115,5 +115,6 @@ public: ******************************************************************/ bool RecordingIsHD(const cEvent* event); bool RecordingIsUHD(const cEvent* event); +bool RecordingIsRadio(const cEvent* event); #endif //__VIEWELEMENT_H diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c index bf4170e..15a161b 100644 --- a/coreengine/viewelementsdisplaymenu.c +++ b/coreengine/viewelementsdisplaymenu.c @@ -1169,6 +1169,7 @@ void cVeDmDetailheaderRec::SetTokenContainer(void) { tokenContainer->DefineIntToken("{fps}", (int)eDmDetailedHeaderRecIT::framesPerSecond); tokenContainer->DefineIntToken("{isHD}", (int)eDmDetailedHeaderRecIT::isHD); tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedHeaderRecIT::isUHD); + tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedHeaderRecIT::isRadio); InheritTokenContainer(); } @@ -1216,6 +1217,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) { tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60)); tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info' tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' + tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event)); // detect Radio from 'info' } #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_CHANNELS_READ; diff --git a/skinskeleton/xmlfiles/displaymenudetailrecording.xml b/skinskeleton/xmlfiles/displaymenudetailrecording.xml index 5d5b5b3..679bdc3 100644 --- a/skinskeleton/xmlfiles/displaymenudetailrecording.xml +++ b/skinskeleton/xmlfiles/displaymenudetailrecording.xml @@ -32,6 +32,7 @@ {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is UHD (from EPG info) + {isRadio} true if recording is AudioOnly (from EPG info) --> @@ -55,6 +56,7 @@ {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is HD (from EPG info) + {isRadio} true if recording is AudioOnly (from EPG info) {recordingsize} size of recording (automatically in GB / MB) {recordingsizecutted} size of cutted recording (automatically in GB / MB) diff --git a/skinskeleton/xmlfiles/displaymenurecordings.xml b/skinskeleton/xmlfiles/displaymenurecordings.xml index a5cf7bb..2a5ce3c 100644 --- a/skinskeleton/xmlfiles/displaymenurecordings.xml +++ b/skinskeleton/xmlfiles/displaymenurecordings.xml @@ -36,6 +36,7 @@ {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is UHD (from EPG info) + {isRadio} true if recording is AudioOnly (from EPG info) --> @@ -78,6 +79,7 @@ {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is UHD (from EPG info) + {isRadio} true if recording is AudioOnly (from EPG info) -->