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