diff options
author | kszaq <kszaquitto@gmail.com> | 2018-01-09 20:12:53 +0100 |
---|---|---|
committer | kszaq <kszaquitto@gmail.com> | 2018-01-14 00:52:41 +0100 |
commit | 4fe7dd6f0d39d56455a4890f301f3084a8c363ff (patch) | |
tree | 8839419afd7602b0a3c37a102037475d931c86a9 | |
parent | 4e01f3da2b0f17bd4da4c507691666695393527a (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.cmake | 14 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp | 9 |
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) |