diff --git a/HelloWorld/CenterCircleVideoSubscriber.cpp b/HelloWorld/CenterCircleVideoSubscriber.cpp
index 62babd0..1b96c23 100644
--- a/HelloWorld/CenterCircleVideoSubscriber.cpp
+++ b/HelloWorld/CenterCircleVideoSubscriber.cpp
@@ -25,6 +25,7 @@
 }
 #include <accel.h>
 #include <frameUtils.h>
+#include <frameScaler.h>
 #include <pluglog.h>
 #include <stdio.h>
 #include <opencv2/imgproc.hpp>
@@ -65,19 +66,15 @@
     // GET RAW FRAME
     // Use a non-const Frame
     // Convert input frame to RGB
-    int inputHeight = pluginFrame->height;
-    int inputWidth = pluginFrame->width;
-    AVFrame* temp = transferToMainMemory(pluginFrame, AV_PIX_FMT_NV12);
-    AVFrame* bgrFrame = scaler.convertFormat(temp, AV_PIX_FMT_RGB24);
-    av_frame_unref(temp);
-    av_frame_free(&temp);
-    if (!bgrFrame)
+    uniqueFramePtr rgbFrame = {transferToMainMemory(pluginFrame, AV_PIX_FMT_NV12), frameFree};
+    rgbFrame.reset(FrameScaler::convertFormat(rgbFrame.get(), AV_PIX_FMT_RGB24));
+    if (!rgbFrame.get())
         return;
-    resultFrame = cv::Mat {bgrFrame->height,
-                           bgrFrame->width,
+    resultFrame = cv::Mat {rgbFrame->height,
+                           rgbFrame->width,
                            CV_8UC3,
-                           bgrFrame->data[0],
-                           static_cast<size_t>(bgrFrame->linesize[0])};
+                           rgbFrame->data[0],
+                           static_cast<size_t>(rgbFrame->linesize[0])};
 
     // First clone the frame as the original one is unusable because of
     // linespace
@@ -85,8 +82,8 @@
 
     if (firstRun) {
         // we set were the circle will be draw.
-        circlePos.y = static_cast<int>(inputHeight / 2);
-        circlePos.x = static_cast<int>(inputWidth / 2);
+        circlePos.y = static_cast<int>(pluginFrame->height / 2);
+        circlePos.x = static_cast<int>(pluginFrame->width / 2);
         int w = resultFrame.size().width;
         int h = resultFrame.size().height;
         radius = std::min(w, h) / 8;
@@ -94,23 +91,12 @@
     }
 
     drawCenterCircle();
-    copyByLine(bgrFrame->linesize[0]);
+    copyByLine(rgbFrame->linesize[0]);
 
     //======================================================================================
     // REPLACE AVFRAME DATA WITH FRAME DATA
-    if (bgrFrame->data[0]) {
-        uint8_t* frameData = bgrFrame->data[0];
-        if (angle == 90 || angle == -90) {
-            std::memmove(frameData,
-                         resultFrame.data,
-                         static_cast<size_t>(pluginFrame->width * pluginFrame->height * 3)
-                             * sizeof(uint8_t));
-        }
-
-        moveFrom(pluginFrame, bgrFrame);
-    }
-    av_frame_unref(bgrFrame);
-    av_frame_free(&bgrFrame);
+    rgbFrame.reset(FrameScaler::convertFormat(rgbFrame.get(), AV_PIX_FMT_YUV420P));
+    moveFrom(pluginFrame, rgbFrame.get());
 }
 
 void
diff --git a/HelloWorld/CenterCircleVideoSubscriber.h b/HelloWorld/CenterCircleVideoSubscriber.h
index e13713f..29481f7 100644
--- a/HelloWorld/CenterCircleVideoSubscriber.h
+++ b/HelloWorld/CenterCircleVideoSubscriber.h
@@ -24,7 +24,6 @@
 #include <libavutil/frame.h>
 }
 #include <observer.h>
-#include <frameScaler.h>
 #include <opencv2/core.hpp>
 
 namespace jami {
@@ -49,7 +48,6 @@
 
     // Data
     std::string path_;
-    FrameScaler scaler;
 
     // Status variables of the processing
     bool firstRun {true};
diff --git a/HelloWorld/CoinCircleVideoSubscriber.cpp b/HelloWorld/CoinCircleVideoSubscriber.cpp
index 46e8b8c..b3e7720 100644
--- a/HelloWorld/CoinCircleVideoSubscriber.cpp
+++ b/HelloWorld/CoinCircleVideoSubscriber.cpp
@@ -25,6 +25,7 @@
 }
 #include <accel.h>
 #include <frameUtils.h>
+#include <frameScaler.h>
 #include <pluglog.h>
 #include <stdio.h>
 #include <opencv2/imgproc.hpp>
@@ -65,19 +66,15 @@
     // GET RAW FRAME
     // Use a non-const Frame
     // Convert input frame to RGB
-    int inputHeight = pluginFrame->height;
-    int inputWidth = pluginFrame->width;
-    AVFrame* temp = transferToMainMemory(pluginFrame, AV_PIX_FMT_NV12);
-    AVFrame* bgrFrame = scaler.convertFormat(temp, AV_PIX_FMT_RGB24);
-    av_frame_unref(temp);
-    av_frame_free(&temp);
-    if (!bgrFrame)
+    uniqueFramePtr rgbFrame = {transferToMainMemory(pluginFrame, AV_PIX_FMT_NV12), frameFree};
+    rgbFrame.reset(FrameScaler::convertFormat(rgbFrame.get(), AV_PIX_FMT_RGB24));
+    if (!rgbFrame.get())
         return;
-    resultFrame = cv::Mat {bgrFrame->height,
-                           bgrFrame->width,
+    resultFrame = cv::Mat {rgbFrame->height,
+                           rgbFrame->width,
                            CV_8UC3,
-                           bgrFrame->data[0],
-                           static_cast<size_t>(bgrFrame->linesize[0])};
+                           rgbFrame->data[0],
+                           static_cast<size_t>(rgbFrame->linesize[0])};
 
     // First clone the frame as the original one is unusable because of
     // linespace
@@ -94,23 +91,12 @@
     }
 
     drawCoinCircle(angle);
-    copyByLine(bgrFrame->linesize[0]);
+    copyByLine(rgbFrame->linesize[0]);
 
     //======================================================================================
     // REPLACE AVFRAME DATA WITH FRAME DATA
-    if (bgrFrame->data[0]) {
-        uint8_t* frameData = bgrFrame->data[0];
-        if (angle == 90 || angle == -90) {
-            std::memmove(frameData,
-                         resultFrame.data,
-                         static_cast<size_t>(pluginFrame->width * pluginFrame->height * 3)
-                             * sizeof(uint8_t));
-        }
-
-        moveFrom(pluginFrame, bgrFrame);
-    }
-    av_frame_unref(bgrFrame);
-    av_frame_free(&bgrFrame);
+    rgbFrame.reset(FrameScaler::convertFormat(rgbFrame.get(), AV_PIX_FMT_YUV420P));
+    moveFrom(pluginFrame, rgbFrame.get());
 }
 
 void
diff --git a/HelloWorld/CoinCircleVideoSubscriber.h b/HelloWorld/CoinCircleVideoSubscriber.h
index be1d466..373f0b8 100644
--- a/HelloWorld/CoinCircleVideoSubscriber.h
+++ b/HelloWorld/CoinCircleVideoSubscriber.h
@@ -24,7 +24,6 @@
 #include <libavutil/frame.h>
 }
 #include <observer.h>
-#include <frameScaler.h>
 #include <opencv2/core.hpp>
 
 namespace jami {
@@ -49,7 +48,6 @@
 
     // Data
     std::string path_;
-    FrameScaler scaler;
 
     // Status variables of the processing
     bool firstRun {true};
diff --git a/HelloWorld/build.sh b/HelloWorld/build.sh
index 953f7a3..75f14c1 100755
--- a/HelloWorld/build.sh
+++ b/HelloWorld/build.sh
@@ -2,7 +2,7 @@
 # Build the plugin for the project
 set -e
 export OSTYPE
-ARCH=$(arch)
+ARCH=$(uname -m)
 EXTRAPATH=''
 # Flags:
 
@@ -23,11 +23,19 @@
 CONTRIB_PATH="${DAEMON}/contrib"
 PLUGINS_LIB="../lib"
 LIBS_DIR="./../contrib/Libs"
+PLATFORM=$(uname)
 
-if [ -z "${PLATFORM}" ]; then
+if [ "${PLATFORM}" = "Linux" ]; then
     PLATFORM="linux-gnu"
-    echo "PLATFORM not provided, building with ${PLATFORM}"
-    echo "Other options: redhat-linux"
+    CONTRIB_PLATFORM_CURT=${ARCH}
+    echo "Building with ${PLATFORM}"
+elif [ "${PLATFORM}" = "Darwin" ]; then
+    PLATFORM="darwin"
+    SO_FILE_NAME="lib${PLUGIN_NAME}.dylib"
+    alias nproc='sysctl -n hw.logicalcpu'
+    CONTRIB_PLATFORM_CURT=${ARCH}-apple
+    CONTRIB_PLATFORM_EXTRA=$(uname -r)
+    echo "Building with ${PLATFORM}"
 fi
 
 while getopts t:c:p OPT; do
@@ -50,7 +58,6 @@
 then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME}
 
-    CONTRIB_PLATFORM_CURT=${ARCH}
     CONTRIB_PLATFORM=${CONTRIB_PLATFORM_CURT}-${PLATFORM}
 
     # Compile
@@ -78,7 +85,55 @@
     -lopencv_imgproc \
     -lopencv_core \
     -lva \
-    -o "build-local/jpl/lib/${CONTRIB_PLATFORM_CURT}-linux-gnu/${SO_FILE_NAME}"
+    -o "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
+
+elif [ "${PLATFORM}" = "darwin" ]
+then
+    python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME}
+
+    CONTRIB_PLATFORM=${CONTRIB_PLATFORM_CURT}-${PLATFORM}
+
+    # Compile
+    clang++ -std=c++17 -shared -fPIC \
+    -Wl,-no_compact_unwind -Wl,-framework,CoreFoundation \
+    -Wl,-framework,Security -Wl,-framework,VideoToolbox \
+    -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo \
+    -Wl,-framework,OpenCl -Wl,-framework,Accelerate \
+    -Wl,-rpath,"\${ORIGIN}" \
+    -Wall -Wextra \
+    -Wno-unused-variable \
+    -Wno-unused-function \
+    -Wno-unused-parameter \
+    -I"." \
+    -I"${DAEMON_SRC}" \
+    -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/include" \
+    -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/include/opencv4" \
+    -I"${PLUGINS_LIB}" \
+    ./../lib/accel.cpp \
+    ./../lib/frameUtils.cpp \
+    CoinCircleMediaHandler.cpp \
+    CenterCircleVideoSubscriber.cpp \
+    CenterCircleMediaHandler.cpp \
+    CoinCircleVideoSubscriber.cpp \
+    main.cpp \
+    -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/lib/" \
+    -lswscale \
+    -lavutil \
+    -lopencv_imgproc \
+    -lopencv_core \
+    -lvpx -lx264 -lbz2 -liconv -lz -lspeex -lopus \
+    -o "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
+
+    install_name_tool -id "@loader_path/${SO_FILE_NAME}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
+
+    if [ -n "${APPLE_SIGN_CERTIFICATE}" ]; then
+      codesign --force --verify --timestamp -o runtime --sign "${APPLE_SIGN_CERTIFICATE}"  "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
+      ditto -c -k --rsrc "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}" "build-local/${SO_FILE_NAME}.zip"
+      LIBRARYNAME=${PLUGIN_NAME} sh ./../notarize.sh
+      cd ..
+      ditto -x -k "build-local/${SO_FILE_NAME}.zip" "build-local/notarized"
+      cp "build-local/notarized/${SO_FILE_NAME}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
+    fi
 
 elif [ "${PLATFORM}" = "android" ]
 then
