diff --git a/GreenScreen/CMakeLists.txt b/GreenScreen/CMakeLists.txt
index b19d1fd6e4b9c10ce9e5c486a965887eea5c3131..2b8af8861f52856db967c3ffce0b844659884dcd 100644
--- a/GreenScreen/CMakeLists.txt
+++ b/GreenScreen/CMakeLists.txt
@@ -56,7 +56,6 @@ set(plugin_SRC main.cpp
                ./../lib/accel.cpp
                ./../lib/frameUtils.cpp
                ./../lib/frameFilter.cpp
-               ${DAEMON_SRC}/string_utils.cpp
                )
 
 set(plugin_HDR pluginMediaHandler.h
diff --git a/GreenScreen/ffmpeg/package.json b/GreenScreen/ffmpeg/package.json
index bf8413df8f0b79b9115819e8c17189764a7b2ab5..fe7cfe867eb8f7facb8d562a6846e29ddd39eee4 100644
--- a/GreenScreen/ffmpeg/package.json
+++ b/GreenScreen/ffmpeg/package.json
@@ -1,6 +1,6 @@
 {
     "name": "ffmpeg",
-    "version": "n4.4",
+    "version": "n4.4.2",
     "url": "https://github.com/FFmpeg/FFmpeg/archive/__VERSION__.tar.gz",
     "deps": [
         "zlib",
@@ -13,7 +13,7 @@
     "patches": [
         "change-RTCP-ratio.patch",
         "rtp_ext_abs_send_time.patch",
-        "libopusenc-enable-FEC.patch",
+        "libopusenc-reload-packet-loss-at-encode.patch",
         "libopusdec-enable-FEC.patch"
     ],
     "win_patches": [
diff --git a/GreenScreen/ffmpeg/rules.mak b/GreenScreen/ffmpeg/rules.mak
index ee69f582c8c6f4aadd1f5466d8230c4b5ae00041..33bdb4257689011df82c93ba18d9108e41f3a2d5 100644
--- a/GreenScreen/ffmpeg/rules.mak
+++ b/GreenScreen/ffmpeg/rules.mak
@@ -1,4 +1,4 @@
-FFMPEG_HASH := n4.4
+FFMPEG_HASH := n4.4.2
 FFMPEG_URL := https://git.ffmpeg.org/gitweb/ffmpeg.git/snapshot/$(FFMPEG_HASH).tar.gz
 
 PKGS+=ffmpeg
@@ -339,7 +339,9 @@ ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz
 	$(APPLY) $(SRC)/ffmpeg/change-RTCP-ratio.patch
 	$(APPLY) $(SRC)/ffmpeg/rtp_ext_abs_send_time.patch
 	$(APPLY) $(SRC)/ffmpeg/libopusdec-enable-FEC.patch
-	$(APPLY) $(SRC)/ffmpeg/libopusenc-enable-FEC.patch
+	$(APPLY) $(SRC)/ffmpeg/libopusenc-reload-packet-loss-at-encode.patch
+	$(APPLY) $(SRC)/ffmpeg/ios-disable-b-frames.patch
+	$(APPLY) $(SRC)/ffmpeg/screen-sharing-x11-fix.patch
 	$(UPDATE_AUTOCONFIG)
 	$(MOVE)
 
diff --git a/GreenScreen/pluginProcessor.cpp b/GreenScreen/pluginProcessor.cpp
index 1337f6fb2e8d5ce4927fbf6376e4eb2c60e8a319..5a10145c03725b7c45838965cd20e8a0cc18c5ff 100644
--- a/GreenScreen/pluginProcessor.cpp
+++ b/GreenScreen/pluginProcessor.cpp
@@ -27,9 +27,28 @@ extern "C" {
 }
 #include <frameUtils.h>
 #include <pluglog.h>
+
 #ifdef WIN32
-#include <string_utils.h>
+#include <WTypes.h>
+
+namespace string_utils {
+std::wstring
+to_wstring(const std::string& str) {
+    int codePage = CP_UTF8;
+    int srcLength = (int) str.length();
+    int requiredSize = MultiByteToWideChar(codePage, 0, str.c_str(), srcLength, nullptr, 0);
+    if (!requiredSize) {
+        throw std::runtime_error("Can't convert string to wstring");
+    }
+    std::wstring result((size_t) requiredSize, 0);
+    if (!MultiByteToWideChar(codePage, 0, str.c_str(), srcLength, &(*result.begin()), requiredSize)) {
+        throw std::runtime_error("Can't convert string to wstring");
+    }
+    return result;
+}
+} // namespace string_utils
 #endif
+
 const char sep = separator();
 
 const std::string TAG = "FORESEG";
@@ -77,7 +96,7 @@ PluginProcessor::initModel(const std::string& modelPath, bool activateAcc)
 
         sessOpt_.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL);
 #ifdef WIN32
-        session_ = new Ort::Session(env_, to_wstring(modelPath).c_str(), sessOpt_);
+        session_ = new Ort::Session(env_, string_utils::to_wstring(modelPath).c_str(), sessOpt_);
 #else
         session_ = new Ort::Session(env_, modelPath.c_str(), sessOpt_);
 #endif