GreenScreen: use static avutil, swscale and png

Change-Id: Id152158571b4a2b5ed70a3a2e720e18cfc7b3eab
diff --git a/GreenScreen/build.sh b/GreenScreen/build.sh
index d346c19..ad60269 100755
--- a/GreenScreen/build.sh
+++ b/GreenScreen/build.sh
@@ -109,19 +109,17 @@
     -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 @@
         -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 f137584..e53a577 100644
--- a/GreenScreen/videoSubscriber.cpp
+++ b/GreenScreen/videoSubscriber.cpp
@@ -91,7 +91,6 @@
             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 @@
         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 dc3f9f7..0f3ceec 100644
--- a/lib/accel.h
+++ b/lib/accel.h
@@ -53,8 +53,7 @@
 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 @@
                                         av_buffer_ref(side_data->buf));
     }
     return out;
-}
\ No newline at end of file
+}