BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

Committer:
va009039
Date:
Mon Oct 08 11:38:57 2012 +0000
Revision:
1:58dfd5386a92
Child:
3:2709bbf8baae
add HuffmanDecode::Lookup2()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:58dfd5386a92 1 #if 0
va009039 1:58dfd5386a92 2 #include "mbed.h"
va009039 1:58dfd5386a92 3 #include "BaseJpegDecode.h"
va009039 1:58dfd5386a92 4 #include <vector>
va009039 1:58dfd5386a92 5
va009039 1:58dfd5386a92 6 #define DBG(...) do{fprintf(stderr,"[%s@%d] ",__PRETTY_FUNCTION__,__LINE__);fprintf(stderr,__VA_ARGS__);} while(0);
va009039 1:58dfd5386a92 7 #define ASSERT(A) while(!(A)){fprintf(stderr,"\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
va009039 1:58dfd5386a92 8
va009039 1:58dfd5386a92 9 LocalFileSystem local("local");
va009039 1:58dfd5386a92 10 DigitalOut myled(LED1);
va009039 1:58dfd5386a92 11 Serial pc(USBTX, USBRX);
va009039 1:58dfd5386a92 12
va009039 1:58dfd5386a92 13 class JpegDecode : public BaseJpegDecode {
va009039 1:58dfd5386a92 14 public:
va009039 1:58dfd5386a92 15 JpegDecode();
va009039 1:58dfd5386a92 16 virtual void outputDC(int mcu, int block, int value);
va009039 1:58dfd5386a92 17 virtual void outputAC(int mcu, int block, int scan, int value);
va009039 1:58dfd5386a92 18 virtual void outputMARK(uint8_t c);
va009039 1:58dfd5386a92 19 int DC_count;
va009039 1:58dfd5386a92 20 int AC_count;
va009039 1:58dfd5386a92 21 };
va009039 1:58dfd5386a92 22
va009039 1:58dfd5386a92 23 JpegDecode::JpegDecode()
va009039 1:58dfd5386a92 24 {
va009039 1:58dfd5386a92 25 DC_count = 0;
va009039 1:58dfd5386a92 26 AC_count = 0;
va009039 1:58dfd5386a92 27 }
va009039 1:58dfd5386a92 28
va009039 1:58dfd5386a92 29 void JpegDecode::outputDC(int mcu, int block, int value)
va009039 1:58dfd5386a92 30 {
va009039 1:58dfd5386a92 31 DC_count++;
va009039 1:58dfd5386a92 32 }
va009039 1:58dfd5386a92 33
va009039 1:58dfd5386a92 34 void JpegDecode::outputAC(int mcu, int block, int scan, int value)
va009039 1:58dfd5386a92 35 {
va009039 1:58dfd5386a92 36 AC_count++;
va009039 1:58dfd5386a92 37 }
va009039 1:58dfd5386a92 38
va009039 1:58dfd5386a92 39 void JpegDecode::outputMARK(uint8_t c)
va009039 1:58dfd5386a92 40 {
va009039 1:58dfd5386a92 41 }
va009039 1:58dfd5386a92 42
va009039 1:58dfd5386a92 43 int main() {
va009039 1:58dfd5386a92 44 pc.baud(921600);
va009039 1:58dfd5386a92 45 printf("%s\n", __FILE__);
va009039 1:58dfd5386a92 46
va009039 1:58dfd5386a92 47 JpegDecode* decode = new JpegDecode;
va009039 1:58dfd5386a92 48 ASSERT(decode);
va009039 1:58dfd5386a92 49 while(1) {
va009039 1:58dfd5386a92 50 char path[128];
va009039 1:58dfd5386a92 51 printf("JPEG file: ");
va009039 1:58dfd5386a92 52 gets(path);
va009039 1:58dfd5386a92 53 FILE* fp = fopen(path, "rb");
va009039 1:58dfd5386a92 54 if (fp == NULL) {
va009039 1:58dfd5386a92 55 printf("file open error %s\n", path);
va009039 1:58dfd5386a92 56 continue;
va009039 1:58dfd5386a92 57 }
va009039 1:58dfd5386a92 58 vector<uint8_t> image;
va009039 1:58dfd5386a92 59 while(1) {
va009039 1:58dfd5386a92 60 int c = fgetc(fp);
va009039 1:58dfd5386a92 61 if (c == EOF) {
va009039 1:58dfd5386a92 62 break;
va009039 1:58dfd5386a92 63 }
va009039 1:58dfd5386a92 64 image.push_back(c);
va009039 1:58dfd5386a92 65 }
va009039 1:58dfd5386a92 66 fclose(fp);
va009039 1:58dfd5386a92 67 printf("%s %d bytes\n", path, image.size());
va009039 1:58dfd5386a92 68 decode->DC_count = 0;
va009039 1:58dfd5386a92 69 decode->AC_count = 0;
va009039 1:58dfd5386a92 70 Timer t;
va009039 1:58dfd5386a92 71 t.reset();
va009039 1:58dfd5386a92 72 t.start();
va009039 1:58dfd5386a92 73 decode->clear();
va009039 1:58dfd5386a92 74 for(int i = 0; i < image.size(); i++) {
va009039 1:58dfd5386a92 75 decode->input(image[i]);
va009039 1:58dfd5386a92 76 }
va009039 1:58dfd5386a92 77 t.stop();
va009039 1:58dfd5386a92 78 printf("DC: %d AC: %d benchmark: %d ms\n", decode->DC_count, decode->AC_count, t.read_ms());
va009039 1:58dfd5386a92 79 }
va009039 1:58dfd5386a92 80 }
va009039 1:58dfd5386a92 81
va009039 1:58dfd5386a92 82 #endif