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
LCD.hpp@0:d0f130e27d32, 2017-03-10 (annotated)
- 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?
User | Revision | Line number | New 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 |