<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi,<br>
    <br>
    Did anyone use the MJPG format? I mean grabbing the MJPG data,
    writing it to a file and than try to decompress and view it?<br>
    <br>
    The thing is that it would be very cheap to copy the mjpg data to a
    sensor_msgs/CompressedImage message and the transmit the image to a
    remote computer. What I found is that mjpg is not jpg. I had to
    patch libjpg in order to insert the missing DHT segment manually.
    Are there any other means of making use of the mjpg data?<br>
    <br>
    Regards<br>
    Christian<br>
    <br>
    Am 06.01.2011 02:22, schrieb Homer Manalo:
    <blockquote
      cite="mid:AANLkTimA87aoTdvvOiMFHsY3QLw5rgSoyj4PPRnYsS-t@mail.gmail.com"
      type="cite">Thanks for the info Patrick, that would be a likely
      candidate beside the webcam pro 9000. Eric, that was a very
      informative post. Now we have a better understanding on the
      hardware we will get.<br>
      <br>
      Thanks,<br>
      Homer<br>
      <br>
      <div class="gmail_quote">On Thu, Jan 6, 2011 at 6:06 AM, Eric
        Perko <span dir="ltr"><<a moz-do-not-send="true"
            href="mailto:wisesage5001@gmail.com">wisesage5001@gmail.com</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          Homer,
          <div><br>
          </div>
          <div>Some numbers on using a webcam with my uvc_cam driver
            (they are a little fuzzy since it's been a while since I did
            the tests, but it should be about right). No changes to the
            driver were made between these tests, and all were running
            the same version of Ubuntu (64-bit unless it wasn't
            supported, like on the Core Duo). We were doing 640x480 @
            30fps and I believe had to do a YUYV to RGB conversion in
            the driver because the cameras did not support outputting
            RGB (though I can't recall if that is the Logitech Webcam
            Pro 9000 or these other crappy, no brand cameras we were
            using before the Webcam Pro 9000s).</div>
          <div><br>
          </div>
          <div>Anyways, the numbers:</div>
          <div><br>
          </div>
          <div>1. Intel Core Duo, somewhere between 2.0 and 2.4 GHz (Mac
            Mini, circa 2006-2007): somewhere around 40% CPU per camera.
            Basically, what I remember was that we were gonna lose a
            whole CPU core to just a pair of cameras and that was
            unacceptable.</div>
          <div>2. Intel Core 2 Duo, 2.0 GHz (IBM Thinkpad T61, circa
            2007): about 10-15% CPU per camera.</div>
          <div>3. Intel Core i7 920, 2.66GHz (Custom build, Summer
            2009): very low usage, sometimes even showing up at 0% in
            the System Monitor. 5-8% tops when it does show up.</div>
          <div><br>
          </div>
          <div>As you can see, for whatever reason, the Core 2 kicks the
            crap out of the Core Duo. 64-bits vs 32-bits, extra SSE
            voodoo, better USB drivers on the T61 than the Mac Mini, who
            knows why? Anyways, definitely something to think about.
            Also, any webcam that you can use in an RGB mode as opposed
            to YUYV where the driver is going to have to spend time
            converting from YUYV to RGB will be good. </div>
          <div><br>
          </div>
          <div>That said, we've been quite happy with the Webcam Pro
            9000s. Let me know if you have any other questions about it.
            I'm including the console output of guvcview, which lists
            the different image sizes and 1/FPS pairs that the camera
            clams to support in different modes (MJPG or YUYV in this
            case), in case anyone wonders about that and doesn't have a
            Webcam Pro 9000 on hand to find out :)</div>
          <div><br>
          </div>
          <div>Hope that helps.</div>
          <div><br>
          </div>
          <div>- Eric</div>
          <div><br>
          </div>
          <div>guvcview console output:</div>
          <div>
            <blockquote class="gmail_quote" style="margin: 0px 0px 0px
              0.8ex; border-left: 1px solid rgb(204, 204, 204);
              padding-left: 1ex;">
              video device: /dev/video0 <br>
              /dev/video0 - device 1<br>
              Init. UVC Camera (046d:0809) (location:
              usb-0000:00:1d.7-5)<br>
              { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }<br>
              { discrete: width = 640, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 160, height = 120 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 176, height = 144 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 320, height = 240 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 352, height = 288 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 640, height = 360 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 640, height = 400 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 768, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 800, height = 456 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 800, height = 504 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 800, height = 600 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 864, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 960, height = 720 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/15, 1/10, 1/5, <br>
              { discrete: width = 1280, height = 720 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 2/15, 1/5, <br>
              { discrete: width = 1280, height = 800 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 2/15, 1/5, <br>
              { discrete: width = 1600, height = 904 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/5, <br>
              { discrete: width = 1600, height = 1000 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/5, <br>
              { discrete: width = 1600, height = 1200 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/5, <br>
              { pixelformat = 'MJPG', description = 'MJPEG' }<br>
              { discrete: width = 640, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 160, height = 120 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 176, height = 144 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 320, height = 240 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 352, height = 288 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 640, height = 360 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 640, height = 400 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 768, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 800, height = 456 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 800, height = 504 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 800, height = 600 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 864, height = 480 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 960, height = 720 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 1280, height = 720 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10,
              1/5, <br>
              { discrete: width = 1280, height = 800 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, <br>
              { discrete: width = 1600, height = 904 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/10, 1/5, <br>
              { discrete: width = 1600, height = 1000 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/10, 1/5, <br>
              { discrete: width = 1600, height = 1200 }<br>
              <span style="white-space: pre-wrap;"> </span>Time
              interval between frame: 1/10, 1/5, <br>
              checking format: 1196444237<br>
              VIDIOC_G_COMP:: Invalid argument<br>
                 compression control not supported<br>
              vid:046d <br>
              pid:0809 <br>
              driver:uvcvideo<br>
              Adding control for Pan (relative)<br>
              Adding control for Tilt (relative)<br>
              Adding control for Pan Reset<br>
              Adding control for Tilt Reset<br>
              Adding control for Pan/tilt Reset<br>
              Adding control for Focus (absolute)<br>
              mapping control for Pan (relative)<br>
              mapping control for Tilt (relative)<br>
              mapping control for Pan Reset<br>
              mapping control for Tilt Reset<br>
              mapping control for Pan/tilt Reset<br>
              mapping control for Focus (absolute)<br>
              mapping control for LED1 Mode<br>
              mapping control for LED1 Frequency<br>
              mapping control for Disable video processing<br>
              mapping control for Raw bits per pixel</blockquote>
          </div>
          <div>
            <br>
          </div>
          <div><br>
            <div class="gmail_quote">
              <div>
                <div class="h5">On Wed, Jan 5, 2011 at 12:00 PM, Patrick
                  Goebel <span dir="ltr"><<a moz-do-not-send="true"
                      href="mailto:patrick@casbs.stanford.edu"
                      target="_blank">patrick@casbs.stanford.edu</a>></span>
                  wrote:<br>
                </div>
              </div>
              <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
                0.8ex; border-left: 1px solid rgb(204, 204, 204);
                padding-left: 1ex;">
                <div>
                  <div class="h5">
                    Hi Homer,<br>
                    <br>
                    I have had several years of good experience with the
                    Philips SPC1300NC<br>
                    both under Windows using RoboRealm and now more
                    recently under<br>
                    Ubuntu+ROS using Eric Perko's uvc_cam package (git
                    clone<br>
                    <a moz-do-not-send="true"
                      href="https://github.com/ericperko/uvc_cam.git"
                      target="_blank">https://github.com/ericperko/uvc_cam.git</a>)
                    and OpenCV.  I haven't done<br>
                    any benchmarking under Linux but under Windows I was
                    getting as high as<br>
                    80 fps at 160x120 resolution and manual exposure.<br>
                    <font color="#888888"><br>
                      --patrick<br>
                    </font>
                    <div><br>
                      On 1/5/2011 6:53 AM, Homer Manalo wrote:<br>
                      > Thanks! Anyone had used Philips SPC1300NC or
                      a creative webcam?<br>
                      ><br>
                    </div>
                  </div>
                </div>
                <div class="im">
                  <div>
                    <div>_______________________________________________<br>
                      ros-users mailing list<br>
                      <a moz-do-not-send="true"
                        href="mailto:ros-users@code.ros.org"
                        target="_blank">ros-users@code.ros.org</a><br>
                      <a moz-do-not-send="true"
                        href="https://code.ros.org/mailman/listinfo/ros-users"
                        target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
                    </div>
                  </div>
                </div>
              </blockquote>
            </div>
            <br>
          </div>
          <br>
          _______________________________________________<br>
          ros-users mailing list<br>
          <a moz-do-not-send="true" href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
          <a moz-do-not-send="true"
            href="https://code.ros.org/mailman/listinfo/ros-users"
            target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
          <br>
        </blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
ros-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a>
<a class="moz-txt-link-freetext" href="https://code.ros.org/mailman/listinfo/ros-users">https://code.ros.org/mailman/listinfo/ros-users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>