BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

Committer:
va009039
Date:
Thu Oct 25 11:02:17 2012 +0000
Revision:
3:2709bbf8baae
Parent:
1:58dfd5386a92
support DQT

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 3:2709bbf8baae 4 #include "Benchmark_data.h"
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 Serial pc(USBTX, USBRX);
va009039 1:58dfd5386a92 10
va009039 1:58dfd5386a92 11 class JpegDecode : public BaseJpegDecode {
va009039 1:58dfd5386a92 12 public:
va009039 1:58dfd5386a92 13 JpegDecode();
va009039 1:58dfd5386a92 14 virtual void outputDC(int mcu, int block, int value);
va009039 1:58dfd5386a92 15 virtual void outputAC(int mcu, int block, int scan, int value);
va009039 1:58dfd5386a92 16 virtual void outputMARK(uint8_t c);
va009039 1:58dfd5386a92 17 int DC_count;
va009039 1:58dfd5386a92 18 int AC_count;
va009039 1:58dfd5386a92 19 };
va009039 1:58dfd5386a92 20
va009039 1:58dfd5386a92 21 JpegDecode::JpegDecode()
va009039 1:58dfd5386a92 22 {
va009039 1:58dfd5386a92 23 DC_count = 0;
va009039 1:58dfd5386a92 24 AC_count = 0;
va009039 1:58dfd5386a92 25 }
va009039 1:58dfd5386a92 26
va009039 1:58dfd5386a92 27 void JpegDecode::outputDC(int mcu, int block, int value)
va009039 1:58dfd5386a92 28 {
va009039 1:58dfd5386a92 29 DC_count++;
va009039 1:58dfd5386a92 30 }
va009039 1:58dfd5386a92 31
va009039 1:58dfd5386a92 32 void JpegDecode::outputAC(int mcu, int block, int scan, int value)
va009039 1:58dfd5386a92 33 {
va009039 1:58dfd5386a92 34 AC_count++;
va009039 1:58dfd5386a92 35 }
va009039 1:58dfd5386a92 36
va009039 1:58dfd5386a92 37 void JpegDecode::outputMARK(uint8_t c)
va009039 1:58dfd5386a92 38 {
va009039 1:58dfd5386a92 39 }
va009039 1:58dfd5386a92 40
va009039 3:2709bbf8baae 41 JpegDecode* decode;
va009039 3:2709bbf8baae 42
va009039 3:2709bbf8baae 43 void benchmark(uint8_t* image, int size)
va009039 3:2709bbf8baae 44 {
va009039 3:2709bbf8baae 45 decode->DC_count = 0;
va009039 3:2709bbf8baae 46 decode->AC_count = 0;
va009039 3:2709bbf8baae 47 #ifdef JPEG_USE_REPORT_CODE
va009039 3:2709bbf8baae 48 decode->report_scan_count = 0;
va009039 3:2709bbf8baae 49 decode->report_scan_dc_count = 0;
va009039 3:2709bbf8baae 50 decode->report_scan_ac_count = 0;
va009039 3:2709bbf8baae 51 #endif
va009039 3:2709bbf8baae 52 Timer t;
va009039 3:2709bbf8baae 53 t.reset();
va009039 3:2709bbf8baae 54 t.start();
va009039 3:2709bbf8baae 55 decode->clear();
va009039 3:2709bbf8baae 56 for(int i = 0; i < size; i++) {
va009039 3:2709bbf8baae 57 decode->input(image[i]);
va009039 3:2709bbf8baae 58 }
va009039 3:2709bbf8baae 59 t.stop();
va009039 3:2709bbf8baae 60
va009039 3:2709bbf8baae 61 printf("%p %d bytes\n", image, size);
va009039 3:2709bbf8baae 62 for(int tq = 0; tq < 2; tq++) {
va009039 3:2709bbf8baae 63 printf("DQT(%d):", tq);
va009039 3:2709bbf8baae 64 for(int i = 0; i < 64; i++) {
va009039 3:2709bbf8baae 65 printf(" %d", decode->qt[tq][i]);
va009039 3:2709bbf8baae 66 }
va009039 3:2709bbf8baae 67 printf("\n");
va009039 3:2709bbf8baae 68 }
va009039 3:2709bbf8baae 69 printf("SOF0: width: %d height: %d yblocks: %d\n", decode->width, decode->height, decode->m_yblocks);
va009039 3:2709bbf8baae 70 printf("Scan: DC: %d AC: %d\n", decode->DC_count, decode->AC_count);
va009039 3:2709bbf8baae 71 #ifdef JPEG_USE_REPORT_CODE
va009039 3:2709bbf8baae 72 printf("report: scan_count: %d\n", decode->report_scan_count);
va009039 3:2709bbf8baae 73 printf("report: scan_dc_count: %d\n", decode->report_scan_dc_count);
va009039 3:2709bbf8baae 74 printf("report: scan_ac_count: %d\n", decode->report_scan_ac_count);
va009039 3:2709bbf8baae 75 #endif
va009039 3:2709bbf8baae 76 printf("benchmark: %d ms\n", t.read_ms());
va009039 3:2709bbf8baae 77 }
va009039 3:2709bbf8baae 78
va009039 1:58dfd5386a92 79 int main() {
va009039 1:58dfd5386a92 80 pc.baud(921600);
va009039 1:58dfd5386a92 81 printf("%s\n", __FILE__);
va009039 1:58dfd5386a92 82
va009039 3:2709bbf8baae 83 decode = new JpegDecode;
va009039 1:58dfd5386a92 84 ASSERT(decode);
va009039 3:2709bbf8baae 85
va009039 3:2709bbf8baae 86 benchmark(c270_cam0001_jpg, sizeof(c270_cam0001_jpg));
va009039 3:2709bbf8baae 87 benchmark(vx700_cam0001_jpg, sizeof(vx700_cam0001_jpg));
va009039 3:2709bbf8baae 88
va009039 3:2709bbf8baae 89 printf("----\n");
va009039 3:2709bbf8baae 90 exit(1);
va009039 1:58dfd5386a92 91 }
va009039 1:58dfd5386a92 92
va009039 3:2709bbf8baae 93 #endif