From 0a7dd291f15dadc861c2f7a5a96cc7b4d2ee8bdd Mon Sep 17 00:00:00 2001 From: dijunkun Date: Sat, 7 Oct 2023 10:07:45 +0800 Subject: [PATCH] Fix MacOS compile error --- .../remote_desk_client/remote_desk_client.cpp | 2 +- .../video/decode/ffmpeg/ffmpeg_video_decoder.cpp | 4 +--- src/media/video/decode/video_decoder_factory.cpp | 15 ++++++++++++++- src/media/video/encode/video_encoder_factory.cpp | 15 ++++++++++++++- xmake.lua | 8 ++++++-- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/application/remote_desk/remote_desk_client/remote_desk_client.cpp b/application/remote_desk/remote_desk_client/remote_desk_client.cpp index 2cf966a..6eb6285 100644 --- a/application/remote_desk/remote_desk_client/remote_desk_client.cpp +++ b/application/remote_desk/remote_desk_client/remote_desk_client.cpp @@ -231,7 +231,7 @@ std::string GetMac(char *mac_addr) { (const struct sockaddr_dl *)cursor->ifa_addr; if ((cursor->ifa_addr->sa_family == AF_LINK) && (socAddr->sdl_type == IFT_ETHER) && - strcmp(if_name, cursor->ifa_name) == 0) { + strcmp(if_name.c_str(), cursor->ifa_name) == 0) { dlAddr = (const struct sockaddr_dl *)cursor->ifa_addr; const unsigned char *base = (const unsigned char *)&dlAddr->sdl_data[dlAddr->sdl_nlen]; diff --git a/src/media/video/decode/ffmpeg/ffmpeg_video_decoder.cpp b/src/media/video/decode/ffmpeg/ffmpeg_video_decoder.cpp index 6423747..98b061a 100644 --- a/src/media/video/decode/ffmpeg/ffmpeg_video_decoder.cpp +++ b/src/media/video/decode/ffmpeg/ffmpeg_video_decoder.cpp @@ -101,10 +101,8 @@ int FfmpegVideoDecoder::Decode( std::function on_receive_decoded_frame) { if (!first_) { if ((*(data + 4) & 0x1f) != 0x07) { - LOG_ERROR("1"); return -1; } else { - LOG_ERROR("2"); first_ = true; } } @@ -149,7 +147,7 @@ int FfmpegVideoDecoder::Decode( std::chrono::high_resolution_clock::now().time_since_epoch()) .count()); - LOG_ERROR("cost {}", now_ts - start_ts); + // LOG_ERROR("cost {}", now_ts - start_ts); on_receive_decoded_frame(*decoded_frame_); if (SAVE_DECODER_STREAM) { diff --git a/src/media/video/decode/video_decoder_factory.cpp b/src/media/video/decode/video_decoder_factory.cpp index 6e36d8b..dbbc1ca 100644 --- a/src/media/video/decode/video_decoder_factory.cpp +++ b/src/media/video/decode/video_decoder_factory.cpp @@ -1,8 +1,13 @@ #include "video_decoder_factory.h" +#if __APPLE__ +#include "ffmpeg/ffmpeg_video_decoder.h" +#else #include "ffmpeg/ffmpeg_video_decoder.h" -#include "log.h" #include "nvcodec/nvidia_video_decoder.h" +#endif + +#include "log.h" VideoDecoderFactory::VideoDecoderFactory() {} @@ -10,6 +15,9 @@ VideoDecoderFactory::~VideoDecoderFactory() {} std::unique_ptr VideoDecoderFactory::CreateVideoDecoder( bool hardware_acceleration) { +#if __APPLE__ + return std::make_unique(FfmpegVideoDecoder()); +#else if (hardware_acceleration) { if (CheckIsHardwareAccerlerationSupported()) { return std::make_unique(NvidiaVideoDecoder()); @@ -19,9 +27,13 @@ std::unique_ptr VideoDecoderFactory::CreateVideoDecoder( } else { return std::make_unique(FfmpegVideoDecoder()); } +#endif } bool VideoDecoderFactory::CheckIsHardwareAccerlerationSupported() { +#if __APPLE__ + return false; +#else CUresult cuResult; CUvideoctxlock cudaCtxLock; @@ -34,4 +46,5 @@ bool VideoDecoderFactory::CheckIsHardwareAccerlerationSupported() { } return true; +#endif } \ No newline at end of file diff --git a/src/media/video/encode/video_encoder_factory.cpp b/src/media/video/encode/video_encoder_factory.cpp index f583b8f..425c5be 100644 --- a/src/media/video/encode/video_encoder_factory.cpp +++ b/src/media/video/encode/video_encoder_factory.cpp @@ -1,8 +1,13 @@ #include "video_encoder_factory.h" +#if __APPLE__ +#include "ffmpeg/ffmpeg_video_encoder.h" +#else #include "ffmpeg/ffmpeg_video_encoder.h" -#include "log.h" #include "nvcodec/nvidia_video_encoder.h" +#endif + +#include "log.h" VideoEncoderFactory::VideoEncoderFactory() {} @@ -10,6 +15,9 @@ VideoEncoderFactory::~VideoEncoderFactory() {} std::unique_ptr VideoEncoderFactory::CreateVideoEncoder( bool hardware_acceleration) { +#if __APPLE__ + return std::make_unique(FFmpegVideoEncoder()); +#else if (hardware_acceleration) { if (CheckIsHardwareAccerlerationSupported()) { return std::make_unique(NvidiaVideoEncoder()); @@ -19,9 +27,13 @@ std::unique_ptr VideoEncoderFactory::CreateVideoEncoder( } else { return std::make_unique(FFmpegVideoEncoder()); } +#endif } bool VideoEncoderFactory::CheckIsHardwareAccerlerationSupported() { +#if __APPLE__ + return false; +#else CUresult cuResult; NV_ENCODE_API_FUNCTION_LIST functionList = {NV_ENCODE_API_FUNCTION_LIST_VER}; @@ -42,4 +54,5 @@ bool VideoEncoderFactory::CheckIsHardwareAccerlerationSupported() { } return true; +#endif } \ No newline at end of file diff --git a/xmake.lua b/xmake.lua index b6f313d..1a5db03 100644 --- a/xmake.lua +++ b/xmake.lua @@ -139,9 +139,13 @@ target("media") add_linkdirs("thirdparty/nvcodec/Lib/x64") add_links("cuda", "nvidia-encode", "nvcuvid") elseif is_os("macosx") then - add_files("src/media/video/encode/ffmpeg/*.cpp", + add_files("src/media/video/encode/*.cpp", + "src/media/video/decode/*.cpp", + "src/media/video/encode/ffmpeg/*.cpp", "src/media/video/decode/ffmpeg/*.cpp") - add_includedirs("src/media/video/encode/ffmpeg", + add_includedirs("src/media/video/encode", + "src/media/video/decode", + "src/media/video/encode/ffmpeg", "src/media/video/decode/ffmpeg", {public = true}) end