mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge pull request #256 from kszaq/fix-wetek-core-kodi-17
projects/WeTek*: Fix build with Kodi 17
This commit is contained in:
commit
10e2688d23
@ -97,99 +97,6 @@ index 21256ef..2103f0b 100644
|
|||||||
m_nativeWindow = nativeWindow;
|
m_nativeWindow = nativeWindow;
|
||||||
|
|
||||||
SetFramebufferResolution(nativeWindow->width, nativeWindow->height);
|
SetFramebufferResolution(nativeWindow->width, nativeWindow->height);
|
||||||
@@ -142,48 +157,78 @@ bool CEGLNativeTypeAmlogic::SetNativeResolution(const RESOLUTION_INFO &res)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- switch((int)(0.5 + res.fRefreshRate))
|
|
||||||
+ switch((int)(res.fRefreshRate*10))
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
- case 60:
|
|
||||||
+ case 600:
|
|
||||||
switch(res.iScreenWidth)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 1280:
|
|
||||||
- SetDisplayResolution("720p");
|
|
||||||
+ return SetDisplayResolution("720p");
|
|
||||||
break;
|
|
||||||
case 1920:
|
|
||||||
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
|
|
||||||
- SetDisplayResolution("1080i");
|
|
||||||
+ return SetDisplayResolution("1080i");
|
|
||||||
else
|
|
||||||
- SetDisplayResolution("1080p");
|
|
||||||
+ return SetDisplayResolution("1080p");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
- case 50:
|
|
||||||
+ case 500:
|
|
||||||
switch(res.iScreenWidth)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 1280:
|
|
||||||
- SetDisplayResolution("720p50hz");
|
|
||||||
+ return SetDisplayResolution("720p50hz");
|
|
||||||
break;
|
|
||||||
case 1920:
|
|
||||||
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
|
|
||||||
- SetDisplayResolution("1080i50hz");
|
|
||||||
+ return SetDisplayResolution("1080i50hz");
|
|
||||||
else
|
|
||||||
- SetDisplayResolution("1080p50hz");
|
|
||||||
+ return SetDisplayResolution("1080p50hz");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
- case 30:
|
|
||||||
- SetDisplayResolution("1080p30hz");
|
|
||||||
+ case 300:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k30hz");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p30hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
- case 24:
|
|
||||||
- SetDisplayResolution("1080p24hz");
|
|
||||||
+ case 250:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k25hz");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p25hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case 240:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k24hz");
|
|
||||||
+ break;
|
|
||||||
+ case 4096:
|
|
||||||
+ return SetDisplayResolution("4k2ksmpte");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p24hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return true;
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CEGLNativeTypeAmlogic::ProbeResolutions(std::vector<RESOLUTION_INFO> &resolutions)
|
|
||||||
@@ -280,8 +325,8 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(int width, int height) cons
|
@@ -280,8 +325,8 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(int width, int height) cons
|
||||||
{
|
{
|
||||||
vinfo.xres = width;
|
vinfo.xres = width;
|
||||||
|
@ -4,13 +4,13 @@ Date: Sat, 12 Dec 2015 02:15:15 +0100
|
|||||||
Subject: [PATCH 5/6] [aml] Fix compiler badness when compiling with amcodec
|
Subject: [PATCH 5/6] [aml] Fix compiler badness when compiling with amcodec
|
||||||
|
|
||||||
---
|
---
|
||||||
xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in | 2 --
|
xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in | 2 --
|
||||||
1 file changed, 2 deletions(-)
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
|
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
|
||||||
index 56ec6a3..52fa07e 100644
|
index 56ec6a3..52fa07e 100644
|
||||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
|
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
|
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
|
||||||
@@ -26,8 +26,6 @@ endif
|
@@ -26,8 +26,6 @@ endif
|
||||||
ifeq (@USE_LIBAMCODEC@,1)
|
ifeq (@USE_LIBAMCODEC@,1)
|
||||||
SRCS += AMLCodec.cpp
|
SRCS += AMLCodec.cpp
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
From 3e6754f46448b9718d57b62e8ca122e6217d0b22 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Deryskyba <alex@codesnake.com>
|
|
||||||
Date: Mon, 2 Mar 2015 09:48:14 +0100
|
|
||||||
Subject: [PATCH] [aml] Fix stuttering during a playback of a video with 23.976
|
|
||||||
FPS
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
index 2103042..edf8f8a 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
@@ -1974,7 +1974,7 @@ void CAMLCodec::Process()
|
|
||||||
|
|
||||||
double error = app_pts - (double)pts_video/PTS_FREQ;
|
|
||||||
double abs_error = fabs(error);
|
|
||||||
- if (abs_error > 0.125)
|
|
||||||
+ if (abs_error > 0)
|
|
||||||
{
|
|
||||||
//CLog::Log(LOGDEBUG, "CAMLCodec::Process pts diff = %f", error);
|
|
||||||
if (abs_error > 0.150)
|
|
@ -1,214 +0,0 @@
|
|||||||
From c90b4c2ced393524e81c0ec321afa7ec94f3b806 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Deryskyba <alex@codesnake.com>
|
|
||||||
Date: Wed, 1 Jul 2015 23:37:11 +0200
|
|
||||||
Subject: [PATCH] [aml] Add support for 4k resolutions
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/utils/AMLUtils.cpp | 16 +++---
|
|
||||||
xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp | 81 ++++++++++++++++++++++-------
|
|
||||||
xbmc/windowing/egl/EGLNativeTypeAmlogic.h | 2 +
|
|
||||||
3 files changed, 73 insertions(+), 26 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/utils/AMLUtils.cpp b/xbmc/utils/AMLUtils.cpp
|
|
||||||
index 1b54435..05f2cd0 100644
|
|
||||||
--- a/xbmc/utils/AMLUtils.cpp
|
|
||||||
+++ b/xbmc/utils/AMLUtils.cpp
|
|
||||||
@@ -449,8 +449,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
|
|
||||||
}
|
|
||||||
else if (StringUtils::EqualsNoCase(fromMode, "4k2ksmpte") || StringUtils::EqualsNoCase(fromMode, "smpte24hz"))
|
|
||||||
{
|
|
||||||
- res->iWidth = 1920;
|
|
||||||
- res->iHeight= 1080;
|
|
||||||
+ res->iWidth = 4096;
|
|
||||||
+ res->iHeight= 2160;
|
|
||||||
res->iScreenWidth = 4096;
|
|
||||||
res->iScreenHeight= 2160;
|
|
||||||
res->fRefreshRate = 24;
|
|
||||||
@@ -467,8 +467,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
|
|
||||||
}
|
|
||||||
else if (StringUtils::EqualsNoCase(fromMode, "4k2k24hz") || StringUtils::EqualsNoCase(fromMode, "2160p24hz"))
|
|
||||||
{
|
|
||||||
- res->iWidth = 1920;
|
|
||||||
- res->iHeight= 1080;
|
|
||||||
+ res->iWidth = 3840;
|
|
||||||
+ res->iHeight= 2160;
|
|
||||||
res->iScreenWidth = 3840;
|
|
||||||
res->iScreenHeight= 2160;
|
|
||||||
res->fRefreshRate = 24;
|
|
||||||
@@ -476,8 +476,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
|
|
||||||
}
|
|
||||||
else if (StringUtils::EqualsNoCase(fromMode, "4k2k25hz") || StringUtils::EqualsNoCase(fromMode, "2160p25hz"))
|
|
||||||
{
|
|
||||||
- res->iWidth = 1920;
|
|
||||||
- res->iHeight= 1080;
|
|
||||||
+ res->iWidth = 3840;
|
|
||||||
+ res->iHeight= 2160;
|
|
||||||
res->iScreenWidth = 3840;
|
|
||||||
res->iScreenHeight= 2160;
|
|
||||||
res->fRefreshRate = 25;
|
|
||||||
@@ -494,8 +494,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
|
|
||||||
}
|
|
||||||
else if (StringUtils::EqualsNoCase(fromMode, "4k2k30hz") || StringUtils::EqualsNoCase(fromMode, "2160p30hz"))
|
|
||||||
{
|
|
||||||
- res->iWidth = 1920;
|
|
||||||
- res->iHeight= 1080;
|
|
||||||
+ res->iWidth = 3840;
|
|
||||||
+ res->iHeight= 2160;
|
|
||||||
res->iScreenWidth = 3840;
|
|
||||||
res->iScreenHeight= 2160;
|
|
||||||
res->fRefreshRate = 30;
|
|
||||||
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
|
|
||||||
index 21256ef..2103f0b 100644
|
|
||||||
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
|
|
||||||
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
|
|
||||||
@@ -65,7 +65,22 @@ void CEGLNativeTypeAmlogic::Initialize()
|
|
||||||
{
|
|
||||||
aml_permissions();
|
|
||||||
DisableFreeScale();
|
|
||||||
+ GetMaxResolution(m_maxResolution);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+void CEGLNativeTypeAmlogic::GetMaxResolution(RESOLUTION_INFO &maxResolution)
|
|
||||||
+{
|
|
||||||
+ std::vector<RESOLUTION_INFO> resolutions;
|
|
||||||
+ ProbeResolutions(resolutions);
|
|
||||||
+
|
|
||||||
+ maxResolution = {0};
|
|
||||||
+ for (size_t i = 0; i < resolutions.size(); i++)
|
|
||||||
+ {
|
|
||||||
+ if (resolutions[i].iScreenWidth > maxResolution.iScreenWidth || resolutions[i].iScreenHeight > maxResolution.iScreenHeight)
|
|
||||||
+ maxResolution = resolutions[i];
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void CEGLNativeTypeAmlogic::Destroy()
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
@@ -84,8 +99,8 @@ bool CEGLNativeTypeAmlogic::CreateNativeWindow()
|
|
||||||
if (!nativeWindow)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
- nativeWindow->width = 1920;
|
|
||||||
- nativeWindow->height = 1080;
|
|
||||||
+ nativeWindow->width = m_maxResolution.iScreenWidth;
|
|
||||||
+ nativeWindow->height = m_maxResolution.iScreenHeight;
|
|
||||||
m_nativeWindow = nativeWindow;
|
|
||||||
|
|
||||||
SetFramebufferResolution(nativeWindow->width, nativeWindow->height);
|
|
||||||
@@ -142,48 +157,78 @@ bool CEGLNativeTypeAmlogic::SetNativeResolution(const RESOLUTION_INFO &res)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- switch((int)(0.5 + res.fRefreshRate))
|
|
||||||
+ switch((int)(res.fRefreshRate*10))
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
- case 60:
|
|
||||||
+ case 600:
|
|
||||||
switch(res.iScreenWidth)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 1280:
|
|
||||||
- SetDisplayResolution("720p");
|
|
||||||
+ return SetDisplayResolution("720p");
|
|
||||||
break;
|
|
||||||
case 1920:
|
|
||||||
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
|
|
||||||
- SetDisplayResolution("1080i");
|
|
||||||
+ return SetDisplayResolution("1080i");
|
|
||||||
else
|
|
||||||
- SetDisplayResolution("1080p");
|
|
||||||
+ return SetDisplayResolution("1080p");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
- case 50:
|
|
||||||
+ case 500:
|
|
||||||
switch(res.iScreenWidth)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 1280:
|
|
||||||
- SetDisplayResolution("720p50hz");
|
|
||||||
+ return SetDisplayResolution("720p50hz");
|
|
||||||
break;
|
|
||||||
case 1920:
|
|
||||||
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
|
|
||||||
- SetDisplayResolution("1080i50hz");
|
|
||||||
+ return SetDisplayResolution("1080i50hz");
|
|
||||||
else
|
|
||||||
- SetDisplayResolution("1080p50hz");
|
|
||||||
+ return SetDisplayResolution("1080p50hz");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
- case 30:
|
|
||||||
- SetDisplayResolution("1080p30hz");
|
|
||||||
+ case 300:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k30hz");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p30hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
- case 24:
|
|
||||||
- SetDisplayResolution("1080p24hz");
|
|
||||||
+ case 250:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k25hz");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p25hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case 240:
|
|
||||||
+ switch(res.iScreenWidth)
|
|
||||||
+ {
|
|
||||||
+ case 3840:
|
|
||||||
+ return SetDisplayResolution("4k2k24hz");
|
|
||||||
+ break;
|
|
||||||
+ case 4096:
|
|
||||||
+ return SetDisplayResolution("4k2ksmpte");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return SetDisplayResolution("1080p24hz");
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return true;
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CEGLNativeTypeAmlogic::ProbeResolutions(std::vector<RESOLUTION_INFO> &resolutions)
|
|
||||||
@@ -280,8 +325,8 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(int width, int height) cons
|
|
||||||
{
|
|
||||||
vinfo.xres = width;
|
|
||||||
vinfo.yres = height;
|
|
||||||
- vinfo.xres_virtual = 1920;
|
|
||||||
- vinfo.yres_virtual = 2160;
|
|
||||||
+ vinfo.xres_virtual = m_maxResolution.iScreenWidth;
|
|
||||||
+ vinfo.yres_virtual = m_maxResolution.iScreenHeight * 2;
|
|
||||||
vinfo.bits_per_pixel = 32;
|
|
||||||
vinfo.activate = FB_ACTIVATE_ALL;
|
|
||||||
ioctl(fd0, FBIOPUT_VSCREENINFO, &vinfo);
|
|
||||||
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
|
|
||||||
index 6867c38..9ca41d4 100644
|
|
||||||
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
|
|
||||||
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
|
|
||||||
@@ -55,6 +55,8 @@ class CEGLNativeTypeAmlogic : public CEGLNativeType
|
|
||||||
private:
|
|
||||||
void SetFramebufferResolution(const RESOLUTION_INFO &res) const;
|
|
||||||
void SetFramebufferResolution(int width, int height) const;
|
|
||||||
+ void GetMaxResolution(RESOLUTION_INFO &maxResolution);
|
|
||||||
|
|
||||||
std::string m_framebuffer_name;
|
|
||||||
+ RESOLUTION_INFO m_maxResolution;
|
|
||||||
};
|
|
Loading…
x
Reference in New Issue
Block a user