summaryrefslogtreecommitdiff
path: root/coreengine
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-01-17 14:23:33 +0100
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-01-17 14:27:02 +0100
commitc5f0b5d3f8ef1564d119dafa34d3c285d9b9a2a4 (patch)
tree3bfd83dad842940eaf3d5899d8c95988647215a8 /coreengine
parentbc9cb23ed73c7b85210c8948135773b973fc2927 (diff)
downloadvdr-plugin-skindesigner-c5f0b5d3f8ef1564d119dafa34d3c285d9b9a2a4.tar.gz
vdr-plugin-skindesigner-c5f0b5d3f8ef1564d119dafa34d3c285d9b9a2a4.tar.bz2
added tokens for framesPerSecond and isHD (Submitted by Peter Bieringer)
Diffstat (limited to 'coreengine')
-rw-r--r--coreengine/definitions.h8
-rw-r--r--coreengine/listelements.c8
-rw-r--r--coreengine/viewdetail.c4
-rw-r--r--coreengine/viewelement.c35
-rw-r--r--coreengine/viewelement.h8
-rw-r--r--coreengine/viewelementsdisplaymenu.c4
6 files changed, 65 insertions, 2 deletions
diff --git a/coreengine/definitions.h b/coreengine/definitions.h
index 117d72b..b1fb271 100644
--- a/coreengine/definitions.h
+++ b/coreengine/definitions.h
@@ -1159,6 +1159,8 @@ enum class eLeMenuRecordingsIT {
hasposter,
posterwidth,
posterheight,
+ framesPerSecond,
+ isHD,
count
};
@@ -1202,6 +1204,8 @@ enum class eCeMenuRecordingsIT {
hasposter,
posterwidth,
posterheight,
+ framesPerSecond,
+ isHD,
count
};
@@ -1312,6 +1316,8 @@ enum class eDmDetailedHeaderRecIT {
durationeventhours,
recimgavailable,
recchannelnumber,
+ framesPerSecond,
+ isHD,
count
};
@@ -1419,6 +1425,8 @@ enum class eDmDetailedRecIT {
recimg1avaialble,
recimg2avaialble,
recimg3avaialble,
+ framesPerSecond,
+ isHD,
count
};
diff --git a/coreengine/listelements.c b/coreengine/listelements.c
index 9a2108b..b60bf30 100644
--- a/coreengine/listelements.c
+++ b/coreengine/listelements.c
@@ -1710,6 +1710,8 @@ void cLeMenuRecordings::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{hasposter}", (int)eLeMenuRecordingsIT::hasposter);
tokenContainer->DefineIntToken("{posterwidth}", (int)eLeMenuRecordingsIT::posterwidth);
tokenContainer->DefineIntToken("{posterheight}", (int)eLeMenuRecordingsIT::posterheight);
+ tokenContainer->DefineIntToken("{fps}", (int)eLeMenuRecordingsIT::framesPerSecond);
+ tokenContainer->DefineIntToken("{isHD}", (int)eLeMenuRecordingsIT::isHD);
InheritTokenContainer();
}
@@ -1837,6 +1839,8 @@ bool cLeMenuRecordings::Parse(bool forced) {
tokenContainer->AddStringToken((int)eLeMenuRecordingsST::shorttext, info->ShortText());
tokenContainer->AddStringToken((int)eLeMenuRecordingsST::description, info->Description());
+ tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond());
+ tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
SetScraperRecordingPoster(tokenContainer, usedRecording, true);
@@ -1957,6 +1961,8 @@ void cCeMenuRecordings::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuRecordingsIT::hasposter);
tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuRecordingsIT::posterwidth);
tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuRecordingsIT::posterheight);
+ tokenContainer->DefineIntToken("{fps}", (int)eCeMenuRecordingsIT::framesPerSecond);
+ tokenContainer->DefineIntToken("{isHD}", (int)eCeMenuRecordingsIT::isHD);
InheritTokenContainer();
}
@@ -2091,6 +2097,8 @@ bool cCeMenuRecordings::Parse(bool forced) {
tokenContainer->AddStringToken((int)eCeMenuRecordingsST::shorttext, info->ShortText());
tokenContainer->AddStringToken((int)eCeMenuRecordingsST::description, info->Description());
+ tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond());
+ tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
SetScraperRecordingPoster(tokenContainer, usedRecording, false);
diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c
index db9cbc1..ea0dee8 100644
--- a/coreengine/viewdetail.c
+++ b/coreengine/viewdetail.c
@@ -603,6 +603,8 @@ void cViewDetailRec::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{recimg1avaialble}", (int)eDmDetailedRecIT::recimg1avaialble);
tokenContainer->DefineIntToken("{recimg2avaialble}", (int)eDmDetailedRecIT::recimg2avaialble);
tokenContainer->DefineIntToken("{recimg3avaialble}", (int)eDmDetailedRecIT::recimg3avaialble);
+ tokenContainer->DefineIntToken("{fps}", (int)eDmDetailedRecIT::framesPerSecond);
+ tokenContainer->DefineIntToken("{isHD}", (int)eDmDetailedRecIT::isHD);
tokenContainer->DefineIntToken("{ismovie}", (int)eScraperIT::ismovie);
tokenContainer->DefineIntToken("{moviebudget}", (int)eScraperIT::moviebudget);
tokenContainer->DefineIntToken("{movierevenue}", (int)eScraperIT::movierevenue);
@@ -666,6 +668,7 @@ bool cViewDetailRec::Parse(bool forced) {
tokenContainer->AddStringToken((int)eDmDetailedRecST::epgname, info->Title());
tokenContainer->AddStringToken((int)eDmDetailedRecST::shorttext, info->ShortText());
tokenContainer->AddStringToken((int)eDmDetailedRecST::description, info->Description());
+ tokenContainer->AddIntToken((int)eDmDetailedRecIT::framesPerSecond, info->FramesPerSecond());
const cEvent *event = info->GetEvent();
if (event) {
cString recDate = event->GetDateString();
@@ -691,6 +694,7 @@ bool cViewDetailRec::Parse(bool forced) {
tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationevent, duration);
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'
}
}
SetRecInfos();
diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c
index 5bf482e..3e41634 100644
--- a/coreengine/viewelement.c
+++ b/coreengine/viewelement.c
@@ -577,4 +577,37 @@ void cViewElement::StopAnimation(void) {
cView::RemoveAnimation(shifter);
if (fader)
cView::RemoveAnimation(fader);
-} \ No newline at end of file
+}
+
+
+/******************************************************************
+ * helper function (did not find any other common place)
+ ******************************************************************/
+bool RecordingIsHD(const cEvent* event) {
+ // detect HD from 'info'
+ bool isHD = false;
+ cComponents *Components = (cComponents *)event->Components();
+ if (Components) {
+ // detect HD
+ // Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio
+ // Stream == Video: 01 = 05 = 4:3, 02 = 03 = 06 = 07 = 16:9, 04 = 08 = >16:9, 09 = 0D = HD 4:3, 0A = 0B = 0E = 0F = HD 16:9, 0C = 10 = HD >16:9
+
+ // get video stream component
+ tComponent *Component = Components->GetComponent(0, 5, 0);
+
+ if (Component) {
+ switch (Component->type) {
+ case 0x09: // HD 4:3
+ case 0x0D: // HD 4:3
+ case 0x0A: // HD 16:9
+ case 0x0B: // HD 16:9
+ case 0x0E: // HD 16:9
+ case 0x0F: // HD 16:9
+ case 0x0C: // HD > 16:9
+ case 0x10: // HD > 16:9
+ isHD = true;
+ };
+ };
+ };
+ return isHD;
+};
diff --git a/coreengine/viewelement.h b/coreengine/viewelement.h
index 644b6a8..2696a0b 100644
--- a/coreengine/viewelement.h
+++ b/coreengine/viewelement.h
@@ -109,4 +109,10 @@ public:
virtual void Debug(bool full = false);
};
-#endif //__VIEWELEMENT_H \ No newline at end of file
+
+/******************************************************************
+* helper function (did not find any other common place)
+******************************************************************/
+bool RecordingIsHD(const cEvent* event);
+
+#endif //__VIEWELEMENT_H
diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c
index 0ae2352..319df41 100644
--- a/coreengine/viewelementsdisplaymenu.c
+++ b/coreengine/viewelementsdisplaymenu.c
@@ -1166,6 +1166,8 @@ void cVeDmDetailheaderRec::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{durationeventhours}", (int)eDmDetailedHeaderRecIT::durationeventhours);
tokenContainer->DefineIntToken("{recimgavailable}", (int)eDmDetailedHeaderRecIT::recimgavailable);
tokenContainer->DefineIntToken("{recchannelnumber}", (int)eDmDetailedHeaderRecIT::recchannelnumber);
+ tokenContainer->DefineIntToken("{fps}", (int)eDmDetailedHeaderRecIT::framesPerSecond);
+ tokenContainer->DefineIntToken("{isHD}", (int)eDmDetailedHeaderRecIT::isHD);
InheritTokenContainer();
}
@@ -1185,6 +1187,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
if (info) {
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::epgname, info->Title());
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::shorttext, info->ShortText());
+ tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::framesPerSecond, info->FramesPerSecond());
const cEvent *event = info->GetEvent();
if (event) {
cString recDate = event->GetDateString();
@@ -1210,6 +1213,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationevent, duration);
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationeventhours, duration / 60);
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
+ tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
}
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
LOCK_CHANNELS_READ;