From 7508a09f2849b3d45c53976bd327482b54dced5e Mon Sep 17 00:00:00 2001
From: Josh Villbrandt <josh@javconcepts.com>
Date: Mon, 25 Jan 2016 11:22:36 -0800
Subject: [PATCH] Enable mjpeg support despite uvs_any2bgr shortcoming

---
 libuvc_camera/src/camera_driver.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libuvc_camera/src/camera_driver.cpp b/libuvc_camera/src/camera_driver.cpp
index 3494fa2..8b4137c 100644
--- a/libuvc_camera/src/camera_driver.cpp
+++ b/libuvc_camera/src/camera_driver.cpp
@@ -188,6 +188,15 @@ void CameraDriver::ImageCallback(uvc_frame_t *frame) {
     }
     image->encoding = "bgr8";
     memcpy(&(image->data[0]), rgb_frame_->data, rgb_frame_->data_bytes);
+  } else if (frame->frame_format == UVC_FRAME_FORMAT_MJPEG) {
+    // FIXME: uvc_any2bgr does not work on "mjpeg" format, so use uvc_mjpeg2rgb directly.
+    uvc_error_t conv_ret = uvc_mjpeg2rgb(frame, rgb_frame_);
+    if (conv_ret != UVC_SUCCESS) {
+      uvc_perror(conv_ret, "Couldn't convert frame to RGB");
+      return;
+    }
+    image->encoding = "rgb8";
+    memcpy(&(image->data[0]), rgb_frame_->data, rgb_frame_->data_bytes);
   } else {
     uvc_error_t conv_ret = uvc_any2bgr(frame, rgb_frame_);
     if (conv_ret != UVC_SUCCESS) {
-- 
GitLab