diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index d6879e79ad439020564d1b0a9fee915667c3ac71..5df32e6b2afd052e3e55812c1ca818fa8de777fe 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -368,13 +368,16 @@ MediaEncoder::encode(VideoFrame& input, bool is_keyframe, int64_t frame_number)
 #ifdef RING_ACCEL
     auto desc = av_pix_fmt_desc_get(static_cast<AVPixelFormat>(input.format()));
     bool isHardware = desc && (desc->flags & AV_PIX_FMT_FLAG_HWACCEL);
-#ifdef ENABLE_VIDEOTOOLBOX
-    // Videotoolbox handles frames allocations itself and do not need creating frame context
-    // manually. Now videotoolbox supports only fully accelerated pipeline
-    bool isVideotoolbox = static_cast<AVPixelFormat>(input.format()) == AV_PIX_FMT_VIDEOTOOLBOX;
-    if (accel_ && isVideotoolbox) {
-        // Fully accelerated pipeline, skip main memory
-        frame = input.pointer();
+#if defined(TARGET_OS_IOS) && TARGET_OS_IOS
+    if (accel_) {
+        auto pix = accel_->getSoftwareFormat();
+        if (input.format() != pix) {
+            std::unique_ptr<VideoFrame> framePtr;
+            framePtr = scaler_.convertFormat(input, pix);
+            frame = framePtr->pointer();
+        } else {
+            frame = input.pointer();
+        }
     } else {
 #else
     std::unique_ptr<VideoFrame> framePtr;
@@ -406,7 +409,7 @@ MediaEncoder::encode(VideoFrame& input, bool is_keyframe, int64_t frame_number)
         }
         frame = framePtr->pointer();
     } else {
-#endif // ENABLE_VIDEOTOOLBOX
+#endif // defined(TARGET_OS_IOS) && TARGET_OS_IOS
 #endif
         libav_utils::fillWithBlack(scaledFrame_.pointer());
         scaler_.scale_with_aspect(input, scaledFrame_);
@@ -594,7 +597,7 @@ MediaEncoder::prepareEncoderContext(AVCodec* outputCodec, bool is_video)
 // Keep YUV format for macOS
 #if !(defined(__APPLE__) && !TARGET_OS_IOS)
         if (accel_)
-            encoderCtx->pix_fmt = accel_->getFormat();
+            encoderCtx->pix_fmt = accel_->getSoftwareFormat();
 #endif
 #endif