diff --git a/src/media/video/decode/video_decoder_factory.cpp b/src/media/video/decode/video_decoder_factory.cpp index c650ed1..0439b9d 100644 --- a/src/media/video/decode/video_decoder_factory.cpp +++ b/src/media/video/decode/video_decoder_factory.cpp @@ -6,11 +6,11 @@ #else #include "dav1d/dav1d_av1_decoder.h" #include "nvcodec/nvidia_video_decoder.h" +#include "nvcodec_api.h" #include "openh264/openh264_decoder.h" #endif #include "log.h" -#include "nvcodec_api.h" VideoDecoderFactory::VideoDecoderFactory() {} diff --git a/src/media/video/encode/video_encoder_factory.cpp b/src/media/video/encode/video_encoder_factory.cpp index 99305bf..2bac889 100644 --- a/src/media/video/encode/video_encoder_factory.cpp +++ b/src/media/video/encode/video_encoder_factory.cpp @@ -6,11 +6,11 @@ #else #include "aom/aom_av1_encoder.h" #include "nvcodec/nvidia_video_encoder.h" +#include "nvcodec_api.h" #include "openh264/openh264_encoder.h" #endif #include "log.h" -#include "nvcodec_api.h" VideoEncoderFactory::VideoEncoderFactory() {} diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index 67ae9d2..d410639 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -6,7 +6,11 @@ #include "common.h" #include "log.h" #include "nlohmann/json.hpp" + +#if __APPLE__ +#else #include "nvcodec_api.h" +#endif using nlohmann::json; @@ -212,20 +216,22 @@ int PeerConnection::CreateVideoCodec(bool hardware_acceleration) { } hardware_acceleration_ = hardware_acceleration; -#ifdef __APPLE__ - if (hardware_acceleration_) { - hardware_acceleration_ = false; - LOG_WARN( - "MacOS not support hardware acceleration, use default software codec"); - } -#else -#endif if (av1_encoding_) { video_encoder_ = VideoEncoderFactory::CreateVideoEncoder(false, true); video_decoder_ = VideoDecoderFactory::CreateVideoDecoder(false, true); LOG_WARN("Only support software codec for AV1"); } else { +#ifdef __APPLE__ + if (hardware_acceleration_) { + hardware_acceleration_ = false; + LOG_WARN( + "MacOS not support hardware acceleration, use default software " + "codec"); + video_encoder_ = VideoEncoderFactory::CreateVideoEncoder(false, false); + video_decoder_ = VideoDecoderFactory::CreateVideoDecoder(false, false); + } +#else if (hardware_acceleration_) { if (0 == LoadNvCodecDll()) { load_nvcodec_dll_success = true; @@ -239,6 +245,7 @@ int PeerConnection::CreateVideoCodec(bool hardware_acceleration) { video_decoder_ = VideoDecoderFactory::CreateVideoDecoder(false, false); } } +#endif } if (!video_encoder_) { @@ -606,9 +613,12 @@ int PeerConnection::Destroy() { nv12_data_ = nullptr; } +#ifdef __APPLE__ +#else if (hardware_acceleration_ && load_nvcodec_dll_success) { ReleaseNvCodecDll(); } +#endif return 0; }