diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..037626a --- /dev/null +++ b/README.md @@ -0,0 +1,101 @@ +# SDL_kitchensink + +[![Build Status](https://travis-ci.org/katajakasa/SDL_kitchensink.svg?branch=master)](https://travis-ci.org/katajakasa/SDL_kitchensink) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/7585/badge.svg)](https://scan.coverity.com/projects/katajakasa-sdl_kitchensink) + +FFmpeg and SDL2 based library for audio and video playback, written in C99. + +This library is still very much todo, but it's slowly getting there. + +Features: +* Decoding video & audio via FFmpeg +* Dumping video data on SDL_textures +* Dumping audio data in the usual mono/stereo interleaved formats +* Automatic audio and video conversion to SDL2 friendly formats +* Synchronizing video & audio to clock +* Seeking forwards and backwards +* Bitmap & libass subtitle support. No text (srt, sub) support yet. + +## 1. Library requirements + +Build requirements: +* CMake (>=3.0) +* GCC (C99 support required) + +Library requirements: +* SDL2 (>=2.0.3) (Note! Examples require 2.0.4!) +* FFmpeg (>=3.0) +* libass +* CUnit (optional, for unittests) + +Note that Clang might work, but is not tested. Older SDL2 and FFmpeg library versions +may or may not work; versions noted here are the only ones tested. + +### 1.1. Debian / Ubuntu + +``` +sudo apt-get install libsdl2-dev libavcodec-dev libavdevice-dev libavfilter-dev \ +libavformat-dev libavresample-dev libavutil-dev libswresample-dev libswscale-dev \ +libpostproc-dev libass-dev +``` + +### 1.2. MSYS2 64bit + +These are for x86_64. For 32bit installation, just change the package names a bit . +``` +pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-ffmpeg mingw-w64-x86_64-libass +``` + +## 2. Compiling + +By default, both static and dynamic libraries are built. +* Dynamic library is called libSDL_kitchensink.dll or .so +* Static library is called libSDL_kitchensink_static.a +* If you build in debug mode (```-DCMAKE_BUILD_TYPE=Debug```), libraries will be postfixed with 'd'. + +Change CMAKE_INSTALL_PREFIX as necessary to change the installation path. The files will be installed to +* CMAKE_INSTALL_PREFIX/lib for libraries (.dll.a, .a, etc.) +* CMAKE_INSTALL_PREFIX/bin for binaries (.dll, .so) +* CMAKE_INSTALL_PREFIX/include for headers + +### 2.1. Building the libraries on Debian/Ubuntu + +1. ```mkdir build && cd build``` +2. ```cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..``` +3. ```make -j``` +4. ```sudo make install``` + +### 2.2. Building the libraries on MSYS2 + +1. ```mkdir build && cd build``` +2. ```cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..``` +3. ```make``` +4. ```make install``` + +### 2.3. Building examples + +Just add ```-DBUILD_EXAMPLES=1``` to cmake arguments and rebuild. + +### 2.4. Building unittests + +Make sure CUnit is installed, then add ```-DBUILD_UNITTESTS=1``` to the cmake arguments and rebuild. + +You can run unittests by running ```make unittest```. + +## 3. License + +MIT. Please see ```LICENSE``` for details. + +Note that FFmpeg has a rather complex license. Please take a look at [FFmpeg Legal page](http://ffmpeg.org/legal.html) +for details. + +## 4. Why SDL_kitchensink + +Because pulling major blob of library code like ffmpeg feels like bringing in a whole house with its +kitchensink and everything to the project. Also, it sounded funny. Also, SDL_ffmpeg is already reserved :( + +## 5. Examples + +Please see examples directory. You can also take a look at unittests for some help. +Note that examples are NOT meant for any kind of real life use; they are only meant to +show simple use cases for the library. |