diff --git a/ikvm_server.cpp b/ikvm_server.cpp
index 141f6c6..9274a9b 100644
--- a/ikvm_server.cpp
+++ b/ikvm_server.cpp
@@ -1,5 +1,6 @@
 #include "ikvm_server.hpp"
 
+#include <linux/videodev2.h>
 #include <rfb/rfbproto.h>
 
 #include <boost/crc.hpp>
@@ -156,22 +157,33 @@
             fu->nRects = Swap16IfLE(1);
         }
 
-        fu->type = rfbFramebufferUpdate;
-        cl->ublen = sz_rfbFramebufferUpdateMsg;
-        rfbSendUpdateBuf(cl);
-
-        cl->tightEncoding = rfbEncodingTight;
-        rfbSendTightHeader(cl, 0, 0, video.getWidth(), video.getHeight());
-
-        cl->updateBuf[cl->ublen++] = (char)(rfbTightJpeg << 4);
-        rfbSendCompressedDataTight(cl, data, video.getFrameSize());
-
-        if (cl->enableLastRectEncoding)
+        switch (video.getPixelformat())
         {
-            rfbSendLastRectMarker(cl);
-        }
+            case V4L2_PIX_FMT_RGB24:
+                framebuffer.assign(data, data + video.getFrameSize());
+                rfbMarkRectAsModified(server, 0, 0, video.getWidth(),
+                                      video.getHeight());
+                break;
 
-        rfbSendUpdateBuf(cl);
+            case V4L2_PIX_FMT_JPEG:
+                fu->type = rfbFramebufferUpdate;
+                cl->ublen = sz_rfbFramebufferUpdateMsg;
+                rfbSendUpdateBuf(cl);
+                cl->tightEncoding = rfbEncodingTight;
+                rfbSendTightHeader(cl, 0, 0, video.getWidth(),
+                                   video.getHeight());
+                cl->updateBuf[cl->ublen++] = (char)(rfbTightJpeg << 4);
+                rfbSendCompressedDataTight(cl, data, video.getFrameSize());
+                if (cl->enableLastRectEncoding)
+                {
+                    rfbSendLastRectMarker(cl);
+                }
+                rfbSendUpdateBuf(cl);
+                break;
+
+            default:
+                break;
+        }
     }
 
     rfbReleaseClientIterator(it);
diff --git a/ikvm_video.cpp b/ikvm_video.cpp
index 734294e..3445715 100644
--- a/ikvm_video.cpp
+++ b/ikvm_video.cpp
@@ -33,7 +33,7 @@
 Video::Video(const std::string& p, Input& input, int fr, int sub) :
     resizeAfterOpen(false), timingsError(false), fd(-1), frameRate(fr),
     lastFrameIndex(-1), height(600), width(800), subSampling(sub), input(input),
-    path(p)
+    path(p), pixelformat(V4L2_PIX_FMT_JPEG)
 {}
 
 Video::~Video()
@@ -457,6 +457,13 @@
 
     height = fmt.fmt.pix.height;
     width = fmt.fmt.pix.width;
+    pixelformat = fmt.fmt.pix.pixelformat;
+
+    if (pixelformat != V4L2_PIX_FMT_RGB24 && pixelformat != V4L2_PIX_FMT_JPEG)
+    {
+        log<level::ERR>("Pixel Format not supported",
+                        entry("PIXELFORMAT=%d", pixelformat));
+    }
 
     resize();
 
diff --git a/ikvm_video.hpp b/ikvm_video.hpp
index 17477df..449f57e 100644
--- a/ikvm_video.hpp
+++ b/ikvm_video.hpp
@@ -85,6 +85,14 @@
         return height;
     }
     /*
+     * @brief Gets the pixel format  of the video frame
+     *
+     * @return Value of the pixel format of video frame */
+    inline uint32_t getPixelformat() const
+    {
+        return pixelformat;
+    }
+    /*
      * @brief Gets the width of the video frame
      *
      * @return Value of the width of video frame in pixels
@@ -166,6 +174,9 @@
     const std::string path;
     /* @brief Streaming buffer storage */
     std::vector<Buffer> buffers;
+
+    /* @brief Pixel Format  */
+    uint32_t pixelformat;
 };
 
 } // namespace ikvm
