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
MovFile.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 | 0:d0f130e27d32 | 1 | #ifndef __MovFile__ |
mtkrtk | 0:d0f130e27d32 | 2 | #define __MovFile__ |
mtkrtk | 0:d0f130e27d32 | 3 | |
mtkrtk | 0:d0f130e27d32 | 4 | #include <stdio.h> |
mtkrtk | 0:d0f130e27d32 | 5 | #include <stdint.h> |
mtkrtk | 0:d0f130e27d32 | 6 | #include "CppStandardHelper.hpp" |
mtkrtk | 0:d0f130e27d32 | 7 | |
mtkrtk | 0:d0f130e27d32 | 8 | class MovFile { |
mtkrtk | 0:d0f130e27d32 | 9 | union __attribute__((packed)) Buffer { |
mtkrtk | 0:d0f130e27d32 | 10 | uint8_t array[4]; |
mtkrtk | 0:d0f130e27d32 | 11 | uint32_t value; |
mtkrtk | 0:d0f130e27d32 | 12 | }; |
mtkrtk | 0:d0f130e27d32 | 13 | static constexpr int bufSize = 32; |
mtkrtk | 0:d0f130e27d32 | 14 | static uint32_t frameSizes[bufSize]; |
mtkrtk | 0:d0f130e27d32 | 15 | static uint32_t audioSizes[bufSize]; |
mtkrtk | 0:d0f130e27d32 | 16 | static MovFile singleton; |
mtkrtk | 0:d0f130e27d32 | 17 | MovFile(); |
mtkrtk | 0:d0f130e27d32 | 18 | FILE *file; |
mtkrtk | 0:d0f130e27d32 | 19 | uint32_t numOfFrames; |
mtkrtk | 0:d0f130e27d32 | 20 | uint32_t *frameSizesP; |
mtkrtk | 0:d0f130e27d32 | 21 | uint32_t *audioSizesP; |
mtkrtk | 0:d0f130e27d32 | 22 | uint32_t stszAddress; |
mtkrtk | 0:d0f130e27d32 | 23 | uint32_t stcoAddress; |
mtkrtk | 0:d0f130e27d32 | 24 | uint32_t lastFrameAddress; |
mtkrtk | 0:d0f130e27d32 | 25 | int availableCount; |
mtkrtk | 0:d0f130e27d32 | 26 | void search(uint32_t pattern); |
mtkrtk | 0:d0f130e27d32 | 27 | void fillCaches(); |
mtkrtk | 0:d0f130e27d32 | 28 | |
mtkrtk | 0:d0f130e27d32 | 29 | public: |
mtkrtk | 0:d0f130e27d32 | 30 | static MovFile *sharedFile() { |
mtkrtk | 0:d0f130e27d32 | 31 | return &singleton; |
mtkrtk | 0:d0f130e27d32 | 32 | } |
mtkrtk | 0:d0f130e27d32 | 33 | void start(FILE *f); |
mtkrtk | 0:d0f130e27d32 | 34 | bool read(char *videoBuf, char *audioBuf, uint32_t *audioSize); |
mtkrtk | 0:d0f130e27d32 | 35 | }; |
mtkrtk | 0:d0f130e27d32 | 36 | |
mtkrtk | 0:d0f130e27d32 | 37 | #endif |
mtkrtk | 0:d0f130e27d32 | 38 |