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@1:3e638b9e91cd, 2017-03-12 (annotated)
- Committer:
- mtkrtk
- Date:
- Sun Mar 12 02:01:46 2017 +0000
- Revision:
- 1:3e638b9e91cd
- Parent:
- 0:d0f130e27d32
fixed lcd contrast pin
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mtkrtk | 1:3e638b9e91cd | 1 | #ifndef __LCD__ |
mtkrtk | 1:3e638b9e91cd | 2 | #define __LCD__ |
mtkrtk | 1:3e638b9e91cd | 3 | |
mtkrtk | 1:3e638b9e91cd | 4 | #include "mbed.h" |
mtkrtk | 1:3e638b9e91cd | 5 | #include "DisplayBace.h" |
mtkrtk | 1:3e638b9e91cd | 6 | #include "LCD_shield_config_4_3inch.h" |
mtkrtk | 1:3e638b9e91cd | 7 | #include "RGA.h" |
mtkrtk | 1:3e638b9e91cd | 8 | #include "CppStandardHelper.hpp" |
mtkrtk | 0:d0f130e27d32 | 9 | |
mtkrtk | 1:3e638b9e91cd | 10 | class LCD { |
mtkrtk | 1:3e638b9e91cd | 11 | static constexpr int FRAME_BUFFER_BYTE_PER_PIXEL = 2; |
mtkrtk | 1:3e638b9e91cd | 12 | static constexpr int FRAME_BUFFER_STRIDE = ((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u; |
mtkrtk | 1:3e638b9e91cd | 13 | static volatile int32_t vsync_count; |
mtkrtk | 1:3e638b9e91cd | 14 | static void IntCallbackFunc_LoVsync(DisplayBase::int_type_t int_type); |
mtkrtk | 1:3e638b9e91cd | 15 | static frame_buffer_t frame_buffer_info; |
mtkrtk | 1:3e638b9e91cd | 16 | static uint8_t MBED_ALIGN(32) user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
mtkrtk | 1:3e638b9e91cd | 17 | static uint8_t MBED_ALIGN(32) user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
mtkrtk | 1:3e638b9e91cd | 18 | mbed::DigitalOut lcd_pwon; |
mtkrtk | 1:3e638b9e91cd | 19 | mbed::DigitalOut lcd_blon; |
mtkrtk | 1:3e638b9e91cd | 20 | mbed::PwmOut lcd_cntrst; |
mtkrtk | 1:3e638b9e91cd | 21 | DisplayBase Display; |
mtkrtk | 1:3e638b9e91cd | 22 | Canvas2D_ContextClass canvas2d; |
mtkrtk | 1:3e638b9e91cd | 23 | graphics_t *graphics; |
mtkrtk | 1:3e638b9e91cd | 24 | LCD(); |
mtkrtk | 1:3e638b9e91cd | 25 | static LCD instance; |
mtkrtk | 1:3e638b9e91cd | 26 | void Wait_Vsync(const int32_t wait_count); |
mtkrtk | 1:3e638b9e91cd | 27 | void Swap_FrameBuffer(); |
mtkrtk | 1:3e638b9e91cd | 28 | void Update_LCD_Display(); |
mtkrtk | 1:3e638b9e91cd | 29 | |
mtkrtk | 1:3e638b9e91cd | 30 | public: |
mtkrtk | 1:3e638b9e91cd | 31 | static LCD *singleton() { |
mtkrtk | 1:3e638b9e91cd | 32 | return &instance; |
mtkrtk | 1:3e638b9e91cd | 33 | } |
mtkrtk | 1:3e638b9e91cd | 34 | void start(); |
mtkrtk | 1:3e638b9e91cd | 35 | void stop(); |
mtkrtk | 1:3e638b9e91cd | 36 | void drawImage(const graphics_image_t *image, int_t minX, int_t minY) { |
mtkrtk | 1:3e638b9e91cd | 37 | // Swap_FrameBuffer(); |
mtkrtk | 1:3e638b9e91cd | 38 | frame_buffer_info.draw_buffer_index ^= 1; |
mtkrtk | 1:3e638b9e91cd | 39 | R_GRAPHICS_DrawImage(graphics, image, minX, minY); |
mtkrtk | 1:3e638b9e91cd | 40 | R_GRAPHICS_Finish(graphics); |
mtkrtk | 1:3e638b9e91cd | 41 | Display.Graphics_Read_Change(DisplayBase::GRAPHICS_LAYER_0, |
mtkrtk | 1:3e638b9e91cd | 42 | (void *)frame_buffer_info.buffer_address[frame_buffer_info.draw_buffer_index]); |
mtkrtk | 1:3e638b9e91cd | 43 | // Update_LCD_Display(); |
mtkrtk | 1:3e638b9e91cd | 44 | } |
mtkrtk | 1:3e638b9e91cd | 45 | void drawImage(const graphics_image_t *image) { |
mtkrtk | 1:3e638b9e91cd | 46 | drawImage(image, 0, 0); |
mtkrtk | 1:3e638b9e91cd | 47 | } |
mtkrtk | 1:3e638b9e91cd | 48 | }; |
mtkrtk | 1:3e638b9e91cd | 49 | |
mtkrtk | 1:3e638b9e91cd | 50 | #endif |
mtkrtk | 1:3e638b9e91cd | 51 |