A port of the powerful audio/video encoding/decoding library FFmpeg to libretro. This core allows playback of a variety of audio and video formats, with a fancy audio visualizer and the ability to do interframe blending for smoother scrolling of non-native framerates.
This is a project based on libretro FFmpeg core used by Retroarch. Since the original core is included inside the main Retroarch project, it is not feasible to directly fork the same. I've reorganized the file and folder structure and performed some code refactoring to allow its isolation into a sepparated new project.
Original Media-Player FFmpeg based project is authored by
- Fabrice Bellard
- FFmpeg team
An fully refactored by
- Rubén Tomás (RTA)
https://docs.libretro.com/library/ffmpeg/ https://github.com/libretro/docs/blob/master/docs/library/ffmpeg.md
just execute make or make DEBUG=1 if you want a more verbose execution
This core has been modified focusing on Raspberry Pi devices using a development version of RePlay OS, so it is not guarantee that it works in other systems or platforms (Linux only).
- JOYPAD_START - play/pause
- JOYPAD_A - display progress
- JOYPAD_B - display media title
- JOYPAD_X - enable/disable video subtitles
- JOYPAD_Y - change video lang audio track
- JOYPAD_L - previous track (m3u)
- JOYPAD_R - next track (m3u)
- JOYPAD_LEFT - seek -15s
- JOYPAD_RIGHT - seek +15s
- JOYPAD_UP - seek +180s (3 min)
- JOYPAD_DOWN - seek -180s (3 min)
- JOYPAD_L2 - seek -300s (5 min)
- JOYPAD_R2 - seek +300s (5 min)
- Auto Resume - ON/OFF, stores the current position for supported seekable files on unload and resumes on the next load
- View Mode - Auto, Zoom, Stretch 4:3, Stretch 16:9 or Custom
- Zoom Amount - Custom mode only, supports zoom-out below
1.00x - Aspect Correction - Custom mode only
- Frame Blending - Off, Low, Medium, High or Full
- Zoom fills 16:9 by default, or 4:3 when
replay_is_crt=true
If a video has an external subtitle file with the same name and a .srt extension, it will be loaded automatically.
- Added new Video options allowing different video-formats:
- View Mode - Auto, Zoom, Stretch 4:3, Stretch 16:9 or Custom
- Zoom Amount - Custom mode only
- Aspect Correction - Custom mode only
- Zoom fills 16:9 by default, or 4:3 in CRT screen
- Added new
AUTO RESUMEoption (when supported) - Added check for videos with no alternate audio tracks
- Added fallback to display the file name when no metadata exists
- Added real frame blending with configurable strength: Off, Low, Medium, High, Full
- Added
DISABLED SUBTITLESvirtual track cycling state - Changed Alpha Player’s timing base from hardcoded 60.0 to the frontend target refresh when available
- Fixed controller port initialization so input works correctly on direct boot
- Removed the redundant subtitle enable/disable core option
- Refactored code to support libavutil >= 57
- Added support for tracker music (s3m|it|xm|mod)
- Added support for external .srt files
- Added option to disable subtitles
- Added option to disable visualizer
- Replaced FFT visualizer
- Removed unused hardware decoder path
- Optimized software video path by eliminating an extra full-frame CPU copy (use video_buffer RGB output directly).
- Improved GL upload performance by allocating textures once per size and updating via glTexSubImage2D instead of glTexImage2D each frame.
- Reduced decode-thread allocation churn by reusing AVPacket and reusing a drain AVFrame on EAGAIN.
- Fixed video_buffer ring-buffer head wraparound when returning an open slot (avoids negative modulus / potential stalls).
- Changed POINT to BILINEAR scaling for better image quality
- Fixed seek functionality
- Fixed random crash when changing audio tracks
- Reverted back changes made in v2.0.2 causing video issues
- Added audio gain for videos having 6 channel (5.1) audio tracks
- Fixed crash when seeking in many videos
- Fixed crash when music contains embeded image information in GIF or BMP formats
- Upgraded code base to make use of modern FFmpeg API
- Upgraded code base to make use of modern libretro API v2
- Added M3U support for creating playlists
- Added new option to enable different loop modes (track, loop and shuffle)
- Added compilation flag to enable/disable FFmpeg debug messages
- Added ability to display video title on start (when available)
- Added ability to display music title on start (when available)
- Added ability to display video audio track title when changing
- Added ability to display music or video title when pressing B (when available)
- Added ability to display current progress time when pressing A
- Added ability to display current progress % in addition to time stamps
- Disabled audio and subtitle track change when playing music
- Changed API shutdown request on media finish to blank screen / last frame
- Changed video audio track button mapping from L1 to Y
- Changed video subtitle track button mapping from R1 to X
- Changed some option labels and categorized by Music and Video
- Changed Audio Visualizer Resolution (FFT Resolution) option values:
- 320x240 for 4:3
- 320x180 for 16:9
- Changed HW decoder default value to Auto
- Changed seek time from 10s to 15s (left/right) and from 60s to 180s (up/down) and added new one 300s (L2/R2)
- Changed audio track OSD message to also display the track name
- Fixed Fast Fourier Transform (FFT) OpenGL bug preventing the frontend from being displayed
- Fixed critical memory leak causing crashes randomly
- This version was based on the original media player from retroarch with some quick fixes
- Find workaround for videos using non standard timings (i.e 288p PAL 60Hz) when played in CRT