This program plays QuickTime movies on GR-Peach

Dependencies:   AsciiFont GR-PEACH_video GraphicsFramework LCD_shield_config R_BSP TLV320_RBSP mbed-rtos mbed

Requirements

  • GR-Peach
  • GR-Peach Audio Camera Shield or I²S compatible audio DAC
  • GR-Peach LCD Shield
  • USB memory stick

How to play movie files

  • Encode movie files

encode movies with ffmpeg

$ ffmpeg -i <input -ar 44100 -acodec pcm_s16le -s 480x270 -vcodec mjpeg -q:v 3 -movflags faststart -threads 4 -vf fps=30 <output>.mov
  • Copy movies to the root directory of USB memory
  • Build and upload this program
  • Run it
Committer:
mtkrtk
Date:
Fri Mar 10 11:30:02 2017 +0000
Revision:
0:d0f130e27d32
Child:
1:3e638b9e91cd
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mtkrtk 0:d0f130e27d32 1 #ifndef __LCD__
mtkrtk 0:d0f130e27d32 2 #define __LCD__
mtkrtk 0:d0f130e27d32 3
mtkrtk 0:d0f130e27d32 4 #include "mbed.h"
mtkrtk 0:d0f130e27d32 5 #include "DisplayBace.h"
mtkrtk 0:d0f130e27d32 6 #include "LCD_shield_config_4_3inch.h"
mtkrtk 0:d0f130e27d32 7 #include "RGA.h"
mtkrtk 0:d0f130e27d32 8 #include "CppStandardHelper.hpp"
mtkrtk 0:d0f130e27d32 9
mtkrtk 0:d0f130e27d32 10 class LCD {
mtkrtk 0:d0f130e27d32 11 static constexpr int FRAME_BUFFER_BYTE_PER_PIXEL = 2;
mtkrtk 0:d0f130e27d32 12 static constexpr int FRAME_BUFFER_STRIDE = ((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u;
mtkrtk 0:d0f130e27d32 13 static volatile int32_t vsync_count;
mtkrtk 0:d0f130e27d32 14 static void IntCallbackFunc_LoVsync(DisplayBase::int_type_t int_type);
mtkrtk 0:d0f130e27d32 15 static frame_buffer_t frame_buffer_info;
mtkrtk 0:d0f130e27d32 16 static uint8_t MBED_ALIGN(32) user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT];
mtkrtk 0:d0f130e27d32 17 static uint8_t MBED_ALIGN(32) user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT];
mtkrtk 0:d0f130e27d32 18 mbed::DigitalOut lcd_pwon;
mtkrtk 0:d0f130e27d32 19 mbed::DigitalOut lcd_blon;
mtkrtk 0:d0f130e27d32 20 mbed::PwmOut lcd_cntrst;
mtkrtk 0:d0f130e27d32 21 mbed::DigitalIn lcd_nctrst_dummy;
mtkrtk 0:d0f130e27d32 22 DisplayBase Display;
mtkrtk 0:d0f130e27d32 23 Canvas2D_ContextClass canvas2d;
mtkrtk 0:d0f130e27d32 24 graphics_t *graphics;
mtkrtk 0:d0f130e27d32 25 LCD();
mtkrtk 0:d0f130e27d32 26 static LCD instance;
mtkrtk 0:d0f130e27d32 27 void Wait_Vsync(const int32_t wait_count);
mtkrtk 0:d0f130e27d32 28 void Swap_FrameBuffer();
mtkrtk 0:d0f130e27d32 29 void Update_LCD_Display();
mtkrtk 0:d0f130e27d32 30
mtkrtk 0:d0f130e27d32 31 public:
mtkrtk 0:d0f130e27d32 32 static LCD *singleton() {
mtkrtk 0:d0f130e27d32 33 return &instance;
mtkrtk 0:d0f130e27d32 34 }
mtkrtk 0:d0f130e27d32 35 void start();
mtkrtk 0:d0f130e27d32 36 void stop();
mtkrtk 0:d0f130e27d32 37 void drawImage(const graphics_image_t *image, int_t minX, int_t minY) {
mtkrtk 0:d0f130e27d32 38 // Swap_FrameBuffer();
mtkrtk 0:d0f130e27d32 39 frame_buffer_info.draw_buffer_index ^= 1;
mtkrtk 0:d0f130e27d32 40 R_GRAPHICS_DrawImage(graphics, image, minX, minY);
mtkrtk 0:d0f130e27d32 41 R_GRAPHICS_Finish(graphics);
mtkrtk 0:d0f130e27d32 42 Display.Graphics_Read_Change(DisplayBase::GRAPHICS_LAYER_0,
mtkrtk 0:d0f130e27d32 43 (void *)frame_buffer_info.buffer_address[frame_buffer_info.draw_buffer_index]);
mtkrtk 0:d0f130e27d32 44 // Update_LCD_Display();
mtkrtk 0:d0f130e27d32 45 }
mtkrtk 0:d0f130e27d32 46 void drawImage(const graphics_image_t *image) {
mtkrtk 0:d0f130e27d32 47 drawImage(image, 0, 0);
mtkrtk 0:d0f130e27d32 48 }
mtkrtk 0:d0f130e27d32 49 };
mtkrtk 0:d0f130e27d32 50
mtkrtk 0:d0f130e27d32 51 #endif
mtkrtk 0:d0f130e27d32 52