summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md101
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.