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
Diff: LCD.hpp
- Revision:
- 1:3e638b9e91cd
- Parent:
- 0:d0f130e27d32
--- a/LCD.hpp Fri Mar 10 11:30:02 2017 +0000 +++ b/LCD.hpp Sun Mar 12 02:01:46 2017 +0000 @@ -1,52 +1,51 @@ -#ifndef __LCD__ -#define __LCD__ - -#include "mbed.h" -#include "DisplayBace.h" -#include "LCD_shield_config_4_3inch.h" -#include "RGA.h" -#include "CppStandardHelper.hpp" - -class LCD { - static constexpr int FRAME_BUFFER_BYTE_PER_PIXEL = 2; - static constexpr int FRAME_BUFFER_STRIDE = ((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u; - static volatile int32_t vsync_count; - static void IntCallbackFunc_LoVsync(DisplayBase::int_type_t int_type); - static frame_buffer_t frame_buffer_info; - static uint8_t MBED_ALIGN(32) user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; - static uint8_t MBED_ALIGN(32) user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; - mbed::DigitalOut lcd_pwon; - mbed::DigitalOut lcd_blon; - mbed::PwmOut lcd_cntrst; - mbed::DigitalIn lcd_nctrst_dummy; - DisplayBase Display; - Canvas2D_ContextClass canvas2d; - graphics_t *graphics; - LCD(); - static LCD instance; - void Wait_Vsync(const int32_t wait_count); - void Swap_FrameBuffer(); - void Update_LCD_Display(); - -public: - static LCD *singleton() { - return &instance; - } - void start(); - void stop(); - void drawImage(const graphics_image_t *image, int_t minX, int_t minY) { -// Swap_FrameBuffer(); - frame_buffer_info.draw_buffer_index ^= 1; - R_GRAPHICS_DrawImage(graphics, image, minX, minY); - R_GRAPHICS_Finish(graphics); - Display.Graphics_Read_Change(DisplayBase::GRAPHICS_LAYER_0, - (void *)frame_buffer_info.buffer_address[frame_buffer_info.draw_buffer_index]); -// Update_LCD_Display(); - } - void drawImage(const graphics_image_t *image) { - drawImage(image, 0, 0); - } -}; - -#endif +#ifndef __LCD__ +#define __LCD__ + +#include "mbed.h" +#include "DisplayBace.h" +#include "LCD_shield_config_4_3inch.h" +#include "RGA.h" +#include "CppStandardHelper.hpp" +class LCD { + static constexpr int FRAME_BUFFER_BYTE_PER_PIXEL = 2; + static constexpr int FRAME_BUFFER_STRIDE = ((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u; + static volatile int32_t vsync_count; + static void IntCallbackFunc_LoVsync(DisplayBase::int_type_t int_type); + static frame_buffer_t frame_buffer_info; + static uint8_t MBED_ALIGN(32) user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; + static uint8_t MBED_ALIGN(32) user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; + mbed::DigitalOut lcd_pwon; + mbed::DigitalOut lcd_blon; + mbed::PwmOut lcd_cntrst; + DisplayBase Display; + Canvas2D_ContextClass canvas2d; + graphics_t *graphics; + LCD(); + static LCD instance; + void Wait_Vsync(const int32_t wait_count); + void Swap_FrameBuffer(); + void Update_LCD_Display(); + +public: + static LCD *singleton() { + return &instance; + } + void start(); + void stop(); + void drawImage(const graphics_image_t *image, int_t minX, int_t minY) { +// Swap_FrameBuffer(); + frame_buffer_info.draw_buffer_index ^= 1; + R_GRAPHICS_DrawImage(graphics, image, minX, minY); + R_GRAPHICS_Finish(graphics); + Display.Graphics_Read_Change(DisplayBase::GRAPHICS_LAYER_0, + (void *)frame_buffer_info.buffer_address[frame_buffer_info.draw_buffer_index]); +// Update_LCD_Display(); + } + void drawImage(const graphics_image_t *image) { + drawImage(image, 0, 0); + } +}; + +#endif +