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
+}