aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkszaq <kszaquitto@gmail.com>2018-01-09 20:12:53 +0100
committerkszaq <kszaquitto@gmail.com>2018-01-14 00:52:41 +0100
commit4fe7dd6f0d39d56455a4890f301f3084a8c363ff (patch)
tree8839419afd7602b0a3c37a102037475d931c86a9
parent4e01f3da2b0f17bd4da4c507691666695393527a (diff)
AMLCodec: fix hardware-accelerated VP9 playback
VIDEO_DEC_FORMAT_VP9 and VFORMAT_VP9 are enum literals, not defines so ifdndef always returns true. This makes VP9 not work since enum literals are redefines as 0. Define VP9-related literals only if not present in amcodec header.
-rw-r--r--cmake/modules/FindAML.cmake14
-rw-r--r--xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp9
2 files changed, 18 insertions, 5 deletions
diff --git a/cmake/modules/FindAML.cmake b/cmake/modules/FindAML.cmake
index 5b9a859ead..602f5d9a2b 100644
--- a/cmake/modules/FindAML.cmake
+++ b/cmake/modules/FindAML.cmake
@@ -20,9 +20,23 @@ include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(AML
REQUIRED_VARS AML_INCLUDE_DIR)
+include(CheckCSourceCompiles)
+set(CMAKE_REQUIRED_INCLUDES ${AML_INCLUDE_DIR})
+check_c_source_compiles("#include <amcodec/codec.h>
+
+ int main()
+ {
+ int i = VIDEO_DEC_FORMAT_VP9;
+ return 0;
+ }
+ " AML_HAS_VP9)
+
if(AML_FOUND)
set(AML_INCLUDE_DIRS ${AML_INCLUDE_DIR})
set(AML_DEFINITIONS -DHAS_LIBAMCODEC=1)
+ if(AML_HAS_VP9)
+ list(APPEND AML_DEFINITIONS -DHAS_LIBAMCODEC_VP9=1)
+ endif()
if(NOT TARGET AML::AML)
add_library(AML::AML UNKNOWN IMPORTED)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
index 2cd19d065d..54768ba4bb 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
@@ -247,11 +247,10 @@ static const int64_t INT64_0 = 0x8000000000000000ULL;
#ifndef CODEC_TAG_VC_1
#define CODEC_TAG_VC_1 (0x312D4356)
#endif
-#ifndef VFORMAT_VP9
-#define VFORMAT_VP9 VFORMAT_UNSUPPORT
-#endif
-#ifndef VIDEO_DEC_FORMAT_VP9
-#define VIDEO_DEC_FORMAT_VP9 VIDEO_DEC_FORMAT_MAX
+
+#ifndef HAS_LIBAMCODEC_VP9
+#define VFORMAT_VP9 VFORMAT_UNSUPPORT
+#define VIDEO_DEC_FORMAT_VP9 VIDEO_DEC_FORMAT_MAX
#endif
#define CODEC_TAG_RV30 (0x30335652)