diff --git a/coreengine/listelements.c b/coreengine/listelements.c index 8834b29..0599124 100644 --- a/coreengine/listelements.c +++ b/coreengine/listelements.c @@ -1884,8 +1884,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' - + tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS SetScraperRecordingPoster(tokenContainer, usedRecording, true); return true; @@ -2146,7 +2145,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' + tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS SetScraperRecordingPoster(tokenContainer, usedRecording, false); diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c index f20e848..bb6d8b5 100644 --- a/coreengine/viewdetail.c +++ b/coreengine/viewdetail.c @@ -698,7 +698,7 @@ bool cViewDetailRec::Parse(bool forced) { 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 UHD from 'info' - tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event)); // detect Radio from 'info' + tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS } } SetRecInfos(); diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c index 975757c..a30608f 100644 --- a/coreengine/viewelement.c +++ b/coreengine/viewelement.c @@ -657,11 +657,12 @@ bool RecordingIsUHD(const cEvent* event) { return isUHD; }; -bool RecordingIsRadio(const cEvent* event) { +bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond) { // 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 @@ -704,8 +705,11 @@ bool RecordingIsRadio(const cEvent* event) { }; }; - if ((hasAudio == true) && (hasVideo == false)) - isRadio = true; + if ((hasAudio == true) && (hasVideo == false)) { + if (FramesPerSecond < 24) { // workaround for issue of missing "X 1" on some SD channels (e.g. RTL) + isRadio = true; + }; + }; return isRadio; }; diff --git a/coreengine/viewelement.h b/coreengine/viewelement.h index 7a58a7f..ed37e1d 100644 --- a/coreengine/viewelement.h +++ b/coreengine/viewelement.h @@ -115,6 +115,6 @@ public: ******************************************************************/ bool RecordingIsHD(const cEvent* event); bool RecordingIsUHD(const cEvent* event); -bool RecordingIsRadio(const cEvent* event); +bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond); #endif //__VIEWELEMENT_H diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c index 15a161b..650fae7 100644 --- a/coreengine/viewelementsdisplaymenu.c +++ b/coreengine/viewelementsdisplaymenu.c @@ -1217,7 +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' + tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS } #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_CHANNELS_READ;