diff --git a/GreenScreen/build.sh b/GreenScreen/build.sh
index d346c1972df4b08a7ed9d9c45e7b7c9e31ed6153..ad60269528332c9c1e366b216a9d66157e0e247d 100755
--- a/GreenScreen/build.sh
+++ b/GreenScreen/build.sh
@@ -109,19 +109,17 @@ then
     -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/" \
     -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty/" \
     -L"${TF_LIBS_DIR}/${TF}/lib/${CONTRIB_PLATFORM}-gpu61/" \
-    -lswscale \
-    -lavutil \
+    -l:libswscale.a \
+    -l:libavutil.a \
     -lopencv_imgcodecs \
     -lopencv_imgproc \
     -lopencv_core \
+    -llibpng \
+    -lva \
     -ltensorflow_cc \
-    -lpng \
     -o "lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
 
     cp "${TF_LIBS_DIR}/${TF}/lib/${CONTRIB_PLATFORM}-gpu61/libtensorflow_cc.so" "lib/$CONTRIB_PLATFORM/libtensorflow_cc.so.2"
-    cp "/usr/lib/${CONTRIB_PLATFORM}/libswscale.so.4" "lib/$CONTRIB_PLATFORM"
-    cp "/usr/lib/${CONTRIB_PLATFORM}/libavutil.so.55" "lib/$CONTRIB_PLATFORM"
-    cp "/usr/lib/${CONTRIB_PLATFORM}/libpng16.so.16" "lib/$CONTRIB_PLATFORM"
     cp "${CUDALIBS}/libcudart.so" "lib/$CONTRIB_PLATFORM/libcudart.so.10.0"
     cp "${CUDNN}/libcublas.so.10" "lib/$CONTRIB_PLATFORM/libcublas.so.10.0"
     cp "${CUDALIBS}/libcufft.so.10" "lib/$CONTRIB_PLATFORM/libcufft.so.10.0"
@@ -167,19 +165,17 @@ then
         -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/" \
         -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty/" \
         -L"${TF_LIBS_DIR}/${TF}/lib/${CONTRIB_PLATFORM}/" \
-        -lswscale \
-        -lavutil \
+        -l:libswscale.a \
+        -l:libavutil.a \
         -lopencv_imgcodecs \
         -lopencv_imgproc \
         -lopencv_core \
         -ltensorflowlite \
-        -lpng \
+        -llibpng \
+        -lva \
         -o "lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
 
         cp "${TF_LIBS_DIR}/${TF}/lib/${CONTRIB_PLATFORM}/libtensorflowlite.so" "lib/$CONTRIB_PLATFORM"
-        cp "/usr/lib/${CONTRIB_PLATFORM}/libswscale.so.4" "lib/$CONTRIB_PLATFORM"
-        cp "/usr/lib/${CONTRIB_PLATFORM}/libavutil.so.55" "lib/$CONTRIB_PLATFORM"
-        cp "/usr/lib/${CONTRIB_PLATFORM}/libpng16.so.16" "lib/$CONTRIB_PLATFORM"
 
     elif [ "${PLATFORM}" = "android" ]
     then
diff --git a/GreenScreen/videoSubscriber.cpp b/GreenScreen/videoSubscriber.cpp
index f137584d6ff1c50a5a21ba6a5400efbc4b056ec6..e53a5776b81ad0a070e205677a822fb869173375 100644
--- a/GreenScreen/videoSubscriber.cpp
+++ b/GreenScreen/videoSubscriber.cpp
@@ -91,7 +91,6 @@ VideoSubscriber::update(jami::Observable<AVFrame*>*, AVFrame* const& iFrame)
             auto matrix_rotation = reinterpret_cast<int32_t*>(side_data->data);
             angle = static_cast<int>(av_display_rotation_get(matrix_rotation));
         }
-        pluginFrame = transferToMainMemory(pluginFrame, AV_PIX_FMT_NV12);
 
         //======================================================================================
         // GET RAW FRAME
@@ -101,7 +100,9 @@ VideoSubscriber::update(jami::Observable<AVFrame*>*, AVFrame* const& iFrame)
         int inputWidth = pluginFrame->width;
 
         fcopy.originalSize = cv::Size {inputWidth, inputHeight};
-        FrameUniquePtr bgrFrame = scaler.convertFormat(pluginFrame, AV_PIX_FMT_RGB24);
+        FrameUniquePtr bgrFrame = scaler.convertFormat(transferToMainMemory(pluginFrame,
+                                                                            AV_PIX_FMT_NV12),
+                                                       AV_PIX_FMT_RGB24);
         cv::Mat frame = cv::Mat {bgrFrame->height,
                                  bgrFrame->width,
                                  CV_8UC3,
diff --git a/lib/accel.h b/lib/accel.h
index dc3f9f71d6424c58524d9fc17a20626d5af9f9d4..0f3ceec13f0f7b14a676cc3779dd848b3f1ae694 100644
--- a/lib/accel.h
+++ b/lib/accel.h
@@ -53,8 +53,7 @@ av_frame_new_side_data_from_buf(AVFrame* frame, enum AVFrameSideDataType type, A
 AVFrame*
 transferToMainMemory(AVFrame* framePtr, AVPixelFormat desiredFormat)
 {
-    AVFrame* out;
-
+    AVFrame* out = av_frame_alloc();
     auto desc = av_pix_fmt_desc_get(static_cast<AVPixelFormat>(framePtr->format));
 
     if (desc && not(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
@@ -75,4 +74,4 @@ transferToMainMemory(AVFrame* framePtr, AVPixelFormat desiredFormat)
                                         av_buffer_ref(side_data->buf));
     }
     return out;
-}
\ No newline at end of file
+}