diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp index 5df32e6b2afd052e3e55812c1ca818fa8de777fe..342961d83fb1ba5314813b77465921800c970dab 100644 --- a/src/media/media_encoder.cpp +++ b/src/media/media_encoder.cpp @@ -379,7 +379,7 @@ MediaEncoder::encode(VideoFrame& input, bool is_keyframe, int64_t frame_number) frame = input.pointer(); } } else { -#else +#elif !defined(__APPLE__) std::unique_ptr<VideoFrame> framePtr; if (accel_ && accel_->isLinked() && isHardware) { // Fully accelerated pipeline, skip main memory @@ -409,6 +409,8 @@ MediaEncoder::encode(VideoFrame& input, bool is_keyframe, int64_t frame_number) } frame = framePtr->pointer(); } else { +#else + { #endif // defined(TARGET_OS_IOS) && TARGET_OS_IOS #endif libav_utils::fillWithBlack(scaledFrame_.pointer()); @@ -593,11 +595,14 @@ MediaEncoder::prepareEncoderContext(AVCodec* outputCodec, bool is_video) // emit one intra frame every gop_size frames encoderCtx->max_b_frames = 0; encoderCtx->pix_fmt = AV_PIX_FMT_YUV420P; + // Keep YUV format for macOS #ifdef RING_ACCEL -// Keep YUV format for macOS -#if !(defined(__APPLE__) && !TARGET_OS_IOS) +#if defined(TARGET_OS_IOS) && TARGET_OS_IOS if (accel_) encoderCtx->pix_fmt = accel_->getSoftwareFormat(); +#elif !defined(__APPLE__) + if (accel_) + encoderCtx->pix_fmt = accel_->getFormat(); #endif #endif diff --git a/src/media/video/accel.cpp b/src/media/video/accel.cpp index 7c645f9e1c87b07cbbbdaf45cc2820fda4dce291..08d0ce1b72c4666626ca634699a66c7317c5daa1 100644 --- a/src/media/video/accel.cpp +++ b/src/media/video/accel.cpp @@ -51,14 +51,14 @@ static std::list<HardwareAPI> apiListDec = { {AV_CODEC_ID_H264, AV_CODEC_ID_HEVC, AV_CODEC_ID_VP8, AV_CODEC_ID_MJPEG}, {{"default", DeviceState::NOT_TESTED}, {"1", DeviceState::NOT_TESTED}, {"2", DeviceState::NOT_TESTED}}, false}, - // {"vaapi", - // AV_HWDEVICE_TYPE_VAAPI, - // AV_PIX_FMT_VAAPI, - // AV_PIX_FMT_NV12, - // {AV_CODEC_ID_H264, AV_CODEC_ID_MPEG4, AV_CODEC_ID_VP8}, - // {{"default", DeviceState::NOT_TESTED}, {"/dev/dri/renderD128", DeviceState::NOT_TESTED}, - // {"/dev/dri/renderD129", DeviceState::NOT_TESTED}, {":0", DeviceState::NOT_TESTED}}, - // false}, + {"vaapi", + AV_HWDEVICE_TYPE_VAAPI, + AV_PIX_FMT_VAAPI, + AV_PIX_FMT_NV12, + {AV_CODEC_ID_H264, AV_CODEC_ID_MPEG4, AV_CODEC_ID_VP8}, + {{"default", DeviceState::NOT_TESTED}, {"/dev/dri/renderD128", DeviceState::NOT_TESTED}, + {"/dev/dri/renderD129", DeviceState::NOT_TESTED}, {":0", DeviceState::NOT_TESTED}}, + false}, {"vdpau", AV_HWDEVICE_TYPE_VDPAU, AV_PIX_FMT_VDPAU, @@ -90,15 +90,15 @@ static std::list<HardwareAPI> apiListEnc = { {AV_CODEC_ID_H264, AV_CODEC_ID_HEVC}, {{"default", DeviceState::NOT_TESTED}, {"1", DeviceState::NOT_TESTED}, {"2", DeviceState::NOT_TESTED}}, true}, - // {"vaapi", - // AV_HWDEVICE_TYPE_VAAPI, - // AV_PIX_FMT_VAAPI, - // AV_PIX_FMT_NV12, - // {AV_CODEC_ID_H264, AV_CODEC_ID_HEVC, AV_CODEC_ID_VP8}, - // {{"default", DeviceState::NOT_TESTED}, {"/dev/dri/renderD128", DeviceState::NOT_TESTED}, - // {"/dev/dri/renderD129", DeviceState::NOT_TESTED}, - // {":0", DeviceState::NOT_TESTED}}, - // false}, + {"vaapi", + AV_HWDEVICE_TYPE_VAAPI, + AV_PIX_FMT_VAAPI, + AV_PIX_FMT_NV12, + {AV_CODEC_ID_H264, AV_CODEC_ID_HEVC, AV_CODEC_ID_VP8}, + {{"default", DeviceState::NOT_TESTED}, {"/dev/dri/renderD128", DeviceState::NOT_TESTED}, + {"/dev/dri/renderD129", DeviceState::NOT_TESTED}, + {":0", DeviceState::NOT_TESTED}}, + false}, {"videotoolbox", AV_HWDEVICE_TYPE_VIDEOTOOLBOX, AV_PIX_FMT_VIDEOTOOLBOX,