summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bieringer <pb@bieringer.de>2021-01-23 10:32:08 +0100
committerPeter Bieringer <pb@bieringer.de>2021-01-23 10:32:08 +0100
commit2eef09e6aa148031b69b2f0cecbd6cda2b73b5c7 (patch)
tree8e8f7137e808ede6e294ccbacb8efb4c1fd72339
parent59248ccebb663fbd8633766490cfd862a0631c14 (diff)
downloadvdr-plugin-skindesigner-2eef09e6aa148031b69b2f0cecbd6cda2b73b5c7.tar.gz
vdr-plugin-skindesigner-2eef09e6aa148031b69b2f0cecbd6cda2b73b5c7.tar.bz2
detect isRadio proper in case recording is missing "X 1" (happen on e.g. RTL channel)
-rw-r--r--coreengine/listelements.c5
-rw-r--r--coreengine/viewdetail.c2
-rw-r--r--coreengine/viewelement.c10
-rw-r--r--coreengine/viewelement.h2
-rw-r--r--coreengine/viewelementsdisplaymenu.c2
5 files changed, 12 insertions, 9 deletions
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;