BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

Revision:
2:697ebeb8336f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example3_c270.cpp	Mon Oct 22 14:10:04 2012 +0000
@@ -0,0 +1,77 @@
+#if 0
+//
+// view webcam 
+//
+#include "mbed.h"
+#include "BaseJpegDecode.h"
+#include "uvc.h"
+#include "Terminal.h"
+
+// Logitech C270
+#define WIDTH  320
+#define HEIGHT 176
+
+#define ASSERT(A) while(!(A)){fprintf(stderr,"\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
+
+DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
+Terminal term(USBTX, USBRX);
+
+class JpegDecode : public BaseJpegDecode {
+public:
+    int8_t m_buf[WIDTH/8*HEIGHT/8];
+    virtual void outputDC(int mcu, int block, int value) {
+        if (mcu < (WIDTH/8*HEIGHT/8/2)) {
+            if (block <= 1) { // 0-1:Y 2:Cb 3:Cr
+                m_buf[mcu*2+block] = value;
+            }
+        }
+    }
+    virtual void outputAC(int mcu, int block, int scan, int value){};
+    virtual void outputMARK(uint8_t c){};
+};
+
+JpegDecode* decode = NULL;
+
+void callback_motion_jpeg(uint16_t frame, uint8_t* buf, int len)
+{
+    if (decode) {
+        decode->input(buf+12, len-12);
+    }
+    led1 = buf[1]&1; // FID
+}
+
+int main() {
+    term.baud(921600);
+    term.printf("%s\n", __FILE__);
+
+    decode = new JpegDecode;
+    ASSERT(decode);
+    uvc* cam = new uvc;
+    ASSERT(cam);
+    cam->SetImageSize(WIDTH, HEIGHT);
+    cam->SetFrameInterval(1000000); // 10.0fps
+    cam->setOnResult(callback_motion_jpeg);
+    ASSERT(cam->setup() >= 0);
+    term.cls();
+    int n = 0;
+    while(1) {
+        int y;
+        for(y = 0; y < HEIGHT/8; y++) {
+            term.locate(0, y);
+            for(int x = 0; x < WIDTH/8; x++) {
+                if (decode->m_buf[y*WIDTH/8+x] > 0) {
+                    term.printf("**");
+                } else {
+                    term.printf("..");
+                }
+                cam->poll();
+            }
+        }
+        term.locate(0, y);
+        term.printf("%d", n);
+        n++;
+        cam->wait_ms(5);
+        led2 = !led2;
+    }
+}
+#endif