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:
Sun Mar 12 02:01:46 2017 +0000
Revision:
1:3e638b9e91cd
Parent:
0:d0f130e27d32
fixed lcd contrast pin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mtkrtk 0:d0f130e27d32 1 #ifndef __MovPlayer__
mtkrtk 0:d0f130e27d32 2 #define __MovPlayer__
mtkrtk 0:d0f130e27d32 3
mtkrtk 0:d0f130e27d32 4 #include "rtos.h"
mtkrtk 0:d0f130e27d32 5 #include "LCD.hpp"
mtkrtk 0:d0f130e27d32 6 #include "R_BSP_Ssif.h"
mtkrtk 0:d0f130e27d32 7 #include "MovFile.hpp"
mtkrtk 0:d0f130e27d32 8 #include "CppStandardHelper.hpp"
mtkrtk 0:d0f130e27d32 9
mtkrtk 0:d0f130e27d32 10 class MovPlayer {
mtkrtk 0:d0f130e27d32 11 public:
mtkrtk 0:d0f130e27d32 12 static constexpr int BufferLength = 20;
mtkrtk 0:d0f130e27d32 13 typedef mbed::Callback<int32_t (void * const, uint32_t, const rbsp_data_conf_t *)> AudioCallback;
mtkrtk 0:d0f130e27d32 14
mtkrtk 0:d0f130e27d32 15 private:
mtkrtk 0:d0f130e27d32 16 struct VideoBuffer {
mtkrtk 0:d0f130e27d32 17 char MBED_ALIGN(0x20) buf[65535];
mtkrtk 0:d0f130e27d32 18 };
mtkrtk 0:d0f130e27d32 19 struct AudioBuffer {
mtkrtk 0:d0f130e27d32 20 char MBED_ALIGN(4) buf[0x1B90];
mtkrtk 0:d0f130e27d32 21 uint32_t size;
mtkrtk 0:d0f130e27d32 22 };
mtkrtk 0:d0f130e27d32 23 static VideoBuffer videoBuf[BufferLength];
mtkrtk 0:d0f130e27d32 24 static AudioBuffer __attribute__((section("NC_BSS"))) audioBuf[BufferLength];
mtkrtk 0:d0f130e27d32 25 static MovPlayer singleton;
mtkrtk 0:d0f130e27d32 26 static unsigned char audioThreadStack[DEFAULT_STACK_SIZE];
mtkrtk 0:d0f130e27d32 27 rtos::Thread audioThread;
mtkrtk 0:d0f130e27d32 28 rtos::RtosTimer frameTimer;
mtkrtk 0:d0f130e27d32 29 rtos::Semaphore frameSemaphore;
mtkrtk 0:d0f130e27d32 30 rtos::Queue<VideoBuffer, BufferLength - 2> videoQueue;
mtkrtk 0:d0f130e27d32 31 MovFile *mov;
mtkrtk 0:d0f130e27d32 32 AudioCallback output;
mtkrtk 0:d0f130e27d32 33 volatile uint32_t queueTimeout;
mtkrtk 0:d0f130e27d32 34 MovPlayer();
mtkrtk 0:d0f130e27d32 35 void frameTimerCallback();
mtkrtk 0:d0f130e27d32 36 void audioProcessor();
mtkrtk 0:d0f130e27d32 37
mtkrtk 0:d0f130e27d32 38 public:
mtkrtk 0:d0f130e27d32 39 static MovPlayer *defaultPlayer() {
mtkrtk 0:d0f130e27d32 40 return &singleton;
mtkrtk 0:d0f130e27d32 41 }
mtkrtk 0:d0f130e27d32 42 void play(MovFile *mov, LCD *lcd, AudioCallback callback);
mtkrtk 0:d0f130e27d32 43 };
mtkrtk 0:d0f130e27d32 44
mtkrtk 0:d0f130e27d32 45 #endif
mtkrtk 0:d0f130e27d32 46