MY TRAIAL (1)

Dependencies:   FATFileSystem GR-PEACH_video GraphicsFramework LCD_shield_config R_BSP mbed-rtos mbed

Fork of GR-PEACH_NTSC_in_2ch_MOD_try by Hirofumi Inomata

I put an OVERVIEW in the blow URL. https://developer.mbed.org/users/digiponta/notebook/my-trial-ar--vr-2-eyes-display-goes-by-a-gr-peach/

Files at this revision

API Documentation at this revision

Comitter:
digiponta
Date:
Thu Sep 15 11:06:34 2016 +0000
Parent:
7:2fb4359e5ea6
Commit message:
??????????

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 2fb4359e5ea6 -r 0f9a45e34220 main.cpp
--- a/main.cpp	Wed Sep 14 12:36:30 2016 +0000
+++ b/main.cpp	Thu Sep 15 11:06:34 2016 +0000
@@ -351,7 +351,6 @@
     Thread::wait(200);
     lcd_cntrst.write(1.0);
 
-
     dir = opendir( "/sd" );
     for ( imgCnt=0; ; imgCnt++) {
         dp = readdir( dir );
@@ -365,15 +364,13 @@
         Thread::wait(100);
 
         if ((mode == 0) && (prev_sw0 != 0) && (sw0 == 0)) 
-        {
-            
+        {         
 #if 1
             for ( vfield_count_0=0; vfield_count_0 == 0; ) {
             }
 
             for ( vfield_count_1=0; vfield_count_1 == 0; ) {
             }
-#if 1
 
             Thread::wait(500);
            
@@ -403,7 +400,6 @@
                 pc.printf("Error:JCU encode error\n");
                 led1 = 0;
             }
-#endif
 
             Thread::wait(500); 
             // NVIC_SystemReset();          
@@ -442,48 +438,36 @@
             while( !sd.connect() ) {
                  Thread::wait(500);
             }
-      
-            sprintf( fname, "/sd/img_%04d.jpg", viewCnt++ );
-            if ( viewCnt >= imgCnt ) viewCnt = 0;
-            pc.printf("File read start %s v=%d, i=%d\n", fname, viewCnt, imgCnt );
-
-            // dcache_invalid(user_frame_buffer1, sizeof(user_frame_buffer1));
-            // dcache_invalid(user_frame_buffer0, sizeof(user_frame_buffer0));
-           
-            rd_fp = fopen( fname, "r" );
-            if (rd_fp == NULL ) {
-                pc.printf("can't open the file\n" ); 
-                mode = 1;
-                continue;
+            for ( int i=0; i<imgCnt; i++ ) {
+                sprintf( fname, "/sd/img_%04d.jpg", viewCnt++ );
+                if ( viewCnt >= imgCnt ) viewCnt = 0;
+                pc.printf("File read start %s v=%d, i=%d\n", fname, viewCnt, imgCnt );
+               
+                rd_fp = fopen( fname, "r" );
+                if (rd_fp == NULL ) {
+                    pc.printf("can't open the file\n" ); 
+                    mode = 1;
+                    continue;
+                } else {
+                    goto GO_PLAY;
+                }
             }
+            continue;
+         
+GO_PLAY:              
             fseek( rd_fp, 0, SEEK_SET );
-#if 0
-            fsize = ftell( rd_fp );
-             if (fsize == 0) {
-                pc.printf("fsize = 0 error\n" ); 
-                mode = 1;
-                continue;                
-            }
-            pc.printf("fsize = %d\n", fsize );
-            fseek( rd_fp, 0, SEEK_SET );
-            for( long i=0; i < fsize ;i++) {
-                char cc = getc( rd_fp );
-                // if ( cc == EOF ) break;
-                user_frame_buffer1[i] = (unsigned char)cc;
-            }
-#else
             size_t len = fread(user_frame_buffer1, sizeof(char), sizeof(user_frame_buffer1), rd_fp);  
             pc.printf( "len = %d\n", len );
-#endif 
             fclose(rd_fp);
+            dcache_clean(user_frame_buffer1, len); //キャッシュクリーンを追加
             pc.printf("File read done\n");
 
-
-             //YCbCr setting
+            //YCbCr setting
             aBitmapData.width           = LCD_PIXEL_WIDTH;
             aBitmapData.height          = LCD_PIXEL_HEIGHT;
             aBitmapData.format          = JPEG_Converter::WR_RD_YCbCr422;   //YCbCr[0] & ARGB8888[1] is 4byte, not RGB565[2] is 2byte
             aBitmapData.buffer_address  = (void *)user_frame_buffer0;
+            dcache_invalid(user_frame_buffer0, sizeof(user_frame_buffer0));  //キャッシュインバリデートを追加
             pc.printf("File decode start\n");
             // JPEG_Converter
             if (decoder.decode((void *)user_frame_buffer1, &aBitmapData) == JPEG_Converter::JPEG_CONV_OK) {
@@ -493,10 +477,9 @@
                 pc.printf("Error:JCU decode error\n");
                 led1 = 0;
             }
- 
             mode = 1;
-        }        
-        
+        }
+       
         if ( (mode == 1) && (prev_sw3 != 0) && (sw3 == 0)) {
 
             /* Video write process start */
@@ -511,12 +494,9 @@
                 printf("Line %d, error %d\n", __LINE__, error);
                 mbed_die();
             }           
-        
             mode = 0; // 
         }        
 
-
-
         prev_sw0 = sw0;
  //     prev_sw1 = sw1;
         prev_sw2 = sw2;