summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-01-21 11:56:01 +0100
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-01-21 11:56:01 +0100
commita4d51d31de2f032b4edac60c5edaeac3c021448e (patch)
tree1409c39d3645fabfb3328f5e0084e97921a05140
parentddf861d6f630dd4db3e69395a68ad89af776e47f (diff)
parent66f090afdbc21750dfcfce73578b0f49d5980437 (diff)
downloadvdr-plugin-skindesigner-a4d51d31de2f032b4edac60c5edaeac3c021448e.tar.gz
vdr-plugin-skindesigner-a4d51d31de2f032b4edac60c5edaeac3c021448e.tar.bz2
Merge branch 'pbiering/skindesigner-add-isUHD-to-screenresolution'
-rw-r--r--coreengine/definitions.h2
-rw-r--r--coreengine/viewelementsdisplaychannel.c5
-rw-r--r--coreengine/viewelementsdisplayreplay.c5
-rw-r--r--extensions/extrecinfo.c2
-rw-r--r--extensions/extrecinfo.h3
-rw-r--r--extensions/helpers.c42
-rw-r--r--extensions/helpers.h2
-rw-r--r--skinskeleton/xmlfiles/displaychannel.xml5
-rw-r--r--skinskeleton/xmlfiles/displayreplay.xml9
9 files changed, 50 insertions, 25 deletions
diff --git a/coreengine/definitions.h b/coreengine/definitions.h
index dccd50e..3516417 100644
--- a/coreengine/definitions.h
+++ b/coreengine/definitions.h
@@ -490,6 +490,7 @@ enum class eDCScreenResolutionIT {
screenwidth = 0,
screenheight,
isHD,
+ isUHD,
isWideScreen,
count
};
@@ -1483,6 +1484,7 @@ enum class eDRRecInfoIT {
screenwidth = 0,
screenheight,
isHD,
+ isUHD,
isWideScreen,
count
};
diff --git a/coreengine/viewelementsdisplaychannel.c b/coreengine/viewelementsdisplaychannel.c
index 7f2d4fa..4b71970 100644
--- a/coreengine/viewelementsdisplaychannel.c
+++ b/coreengine/viewelementsdisplaychannel.c
@@ -453,6 +453,7 @@ void cVeDcScreenResolution::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{screenwidth}", (int)eDCScreenResolutionIT::screenwidth);
tokenContainer->DefineIntToken("{screenheight}", (int)eDCScreenResolutionIT::screenheight);
tokenContainer->DefineIntToken("{isHD}", (int)eDCScreenResolutionIT::isHD);
+ tokenContainer->DefineIntToken("{isUHD}", (int)eDCScreenResolutionIT::isUHD);
tokenContainer->DefineIntToken("{isWideScreen}", (int)eDCScreenResolutionIT::isWideScreen);
InheritTokenContainer();
}
@@ -478,7 +479,8 @@ bool cVeDcScreenResolution::Parse(bool forced) {
SetDirty();
bool isHD = false;
- string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD);
+ bool isUHD = false;
+ string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD, &isUHD);
bool isWideScreen = false;
string aspectName = GetScreenAspectString(aspect, &isWideScreen);
@@ -487,6 +489,7 @@ bool cVeDcScreenResolution::Parse(bool forced) {
tokenContainer->AddIntToken((int)eDCScreenResolutionIT::screenwidth, screenWidth);
tokenContainer->AddIntToken((int)eDCScreenResolutionIT::screenheight, screenHeight);
tokenContainer->AddIntToken((int)eDCScreenResolutionIT::isHD, isHD);
+ tokenContainer->AddIntToken((int)eDCScreenResolutionIT::isUHD, isUHD);
tokenContainer->AddIntToken((int)eDCScreenResolutionIT::isWideScreen, isWideScreen);
tokenContainer->AddStringToken((int)eDCScreenResolutionST::resolution, resName.c_str());
tokenContainer->AddStringToken((int)eDCScreenResolutionST::aspect, aspectName.c_str());
diff --git a/coreengine/viewelementsdisplayreplay.c b/coreengine/viewelementsdisplayreplay.c
index a8b98ae..798bd29 100644
--- a/coreengine/viewelementsdisplayreplay.c
+++ b/coreengine/viewelementsdisplayreplay.c
@@ -78,6 +78,7 @@ void cVeDrRecInfo::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{screenwidth}", (int)eDRRecInfoIT::screenwidth);
tokenContainer->DefineIntToken("{screenheight}", (int)eDRRecInfoIT::screenheight);
tokenContainer->DefineIntToken("{isHD}", (int)eDRRecInfoIT::isHD);
+ tokenContainer->DefineIntToken("{isUHD}", (int)eDRRecInfoIT::isUHD);
tokenContainer->DefineIntToken("{isWideScreen}", (int)eDRRecInfoIT::isWideScreen);
InheritTokenContainer();
}
@@ -97,7 +98,8 @@ bool cVeDrRecInfo::Parse(bool force) {
double aspect = 0;
cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, aspect);
bool isHD = false;
- string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD);
+ bool isUHD = false;
+ string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD, &isUHD);
bool isWideScreen = false;
string aspectName = GetScreenAspectString(aspect, &isWideScreen);
@@ -105,6 +107,7 @@ bool cVeDrRecInfo::Parse(bool force) {
tokenContainer->AddIntToken((int)eDRRecInfoIT::screenwidth, screenWidth);
tokenContainer->AddIntToken((int)eDRRecInfoIT::screenheight, screenHeight);
tokenContainer->AddIntToken((int)eDRRecInfoIT::isHD, isHD);
+ tokenContainer->AddIntToken((int)eDRRecInfoIT::isUHD, isUHD);
tokenContainer->AddIntToken((int)eDRRecInfoIT::isWideScreen, isWideScreen);
tokenContainer->AddStringToken((int)eDRRecInfoST::resolution, resName.c_str());
tokenContainer->AddStringToken((int)eDRRecInfoST::aspect, aspectName.c_str());
diff --git a/extensions/extrecinfo.c b/extensions/extrecinfo.c
index 435d43b..f05dc79 100644
--- a/extensions/extrecinfo.c
+++ b/extensions/extrecinfo.c
@@ -19,7 +19,7 @@ bool cExtRecInfo::Parse(void) {
}
StripXmlTag(mediaInfoXml, resWidth, "res_width");
StripXmlTag(mediaInfoXml, resHeight, "res_height");
- resString = GetScreenResolutionString(resWidth, resHeight, &isHD);
+ resString = GetScreenResolutionString(resWidth, resHeight, &isHD, &isUHD);
StripXmlTag(mediaInfoXml, aspectratio, "aspectratio");
isWideScreen = !aspectratio.compare("16:9");
StripXmlTag(mediaInfoXml, codec, "codec");
diff --git a/extensions/extrecinfo.h b/extensions/extrecinfo.h
index 9fb5bab..3297094 100644
--- a/extensions/extrecinfo.h
+++ b/extensions/extrecinfo.h
@@ -23,6 +23,7 @@ public:
int resHeight;
string resString;
bool isHD;
+ bool isUHD;
string aspectratio;
bool isWideScreen;
string codec;
@@ -33,4 +34,4 @@ public:
vector< tAudioTrack > tracks;
};
-#endif // __EXTRECINFO_H \ No newline at end of file
+#endif // __EXTRECINFO_H
diff --git a/extensions/helpers.c b/extensions/helpers.c
index 5c84094..5e06d95 100644
--- a/extensions/helpers.c
+++ b/extensions/helpers.c
@@ -198,29 +198,43 @@ string GetTimeString(int seconds) {
//View Helpers
-string GetScreenResolutionString(int width, int height, bool *isHD) {
+string GetScreenResolutionString(int width, int height, bool *isHD, bool *isUHD) {
+ // TODO: try to get more information from information sources about interlace/progressive
+ // cDevice::PrimaryDevice()->GetVideoSize is NOT providing enough information
+ *isHD = false; // default
+ *isUHD = false; // default
string name = "";
- switch (width) {
- case 1920:
- case 1440:
- name = "hd1080i";
+ switch (height) {
+ case 4320: // 7680 x 4320 = 8K UHD
+ name = "uhd4320p";
*isHD = true;
+ *isUHD = true;
break;
- case 1280:
- if (height == 720)
- name = "hd720p";
- else
- name = "hd1080i";
+ case 2160: // 3840 x 2160 = 4K UHD
+ name = "uhd2160p";
+ *isHD = true;
+ *isUHD = true;
+ break;
+ case 1440: // 2560 x 1440 = QHD
+ name = "hd1440p";
+ *isHD = true;
+ break;
+ case 1080:
+ name = "hd1080i"; // 'i' is default, 'p' can't be detected currently
*isHD = true;
break;
case 720:
- name = "sd576i";
+ name = "hd720p"; // 'i' is not defined in standards
+ *isHD = true;
+ break;
+ case 576:
+ name = "sd576i"; // assumed 'i'
break;
- case 544:
- name = "sd480i";
+ case 480:
+ name = "sd480i"; // assumed 'i'
break;
default:
- name = "sd576i";
+ name = "unknown";
break;
}
return name;
diff --git a/extensions/helpers.h b/extensions/helpers.h
index b059a16..270d300 100644
--- a/extensions/helpers.h
+++ b/extensions/helpers.h
@@ -44,7 +44,7 @@ public:
string GetTimeString(int seconds);
-string GetScreenResolutionString(int width, int height, bool *isHD);
+string GetScreenResolutionString(int width, int height, bool *isHD, bool *isUHD);
string GetScreenAspectString(double aspect, bool *isWideScreen);
#endif // __HELPERS_H
diff --git a/skinskeleton/xmlfiles/displaychannel.xml b/skinskeleton/xmlfiles/displaychannel.xml
index 5bfed29..393a30e 100644
--- a/skinskeleton/xmlfiles/displaychannel.xml
+++ b/skinskeleton/xmlfiles/displaychannel.xml
@@ -90,9 +90,10 @@
<!-- Available Variables screenresolution:
{screenwidth} width of currently displayed channel in px
{screenheight} height of currently displayed channel in px
- {resolution} resolution: hd1080i, hd720p, sd576i, sd480i
+ {resolution} resolution: uhd4320p, uhd2160p, hd1440p, hd1080i, hd720p, sd576i, sd480i
{aspect} screen aspect, each 4:3, 16:9 or 21:9
- {isHD} true for hd1080i and hd720p
+ {isHD} true for uhd4320p, uhd2160p, hd1440p, hd1080i, hd720p
+ {isUHD} true for uhd4320p, uhd2160p
{isWideScreen} true if aspect is 16:9 or 21:9
-->
<screenresolution>
diff --git a/skinskeleton/xmlfiles/displayreplay.xml b/skinskeleton/xmlfiles/displayreplay.xml
index 758960b..083cdf6 100644
--- a/skinskeleton/xmlfiles/displayreplay.xml
+++ b/skinskeleton/xmlfiles/displayreplay.xml
@@ -61,11 +61,12 @@
</rectitle>
<!-- Available Variables recinfo:
- {screenwidth} width of currently displayed recording in px
- {screenheight} height of currently displayed recording in px
- {resolution} resolution: hd1080i, hd720p, sd576i, sd480i
+ {screenwidth} width of currently displayed channel in px
+ {screenheight} height of currently displayed channel in px
+ {resolution} resolution: uhd4320p, uhd2160p, hd1440p, hd1080i, hd720p, sd576i, sd480i
{aspect} screen aspect, each 4:3, 16:9 or 21:9
- {isHD} true for hd1080i and hd720p
+ {isHD} true for uhd4320p, uhd2160p, hd1440p, hd1080i, hd720p
+ {isUHD} true for uhd4320p, uhd2160p
{isWideScreen} true if aspect is 16:9 or 21:9
-->
<recinfo>