Go to file
adamroach a8d125f52e Merge pull request #44 from ethanhugg/travis1
Exempt gh-pages from Travis.
2013-12-13 15:41:30 -08:00
build Remove trailing whitespace 2013-12-13 11:24:17 +02:00
codec Fix warnings on OSX compile 2013-12-13 13:03:38 -07:00
processing Merge pull request #32 from mstorsjo/cosmetics 2013-12-13 08:54:14 -08:00
test Pretty printed the C++ code with astyle 2013-12-12 14:21:12 -08:00
testbin Remove trailing whitespace 2013-12-13 11:24:17 +02:00
.gitignore Initial commit 2013-10-27 13:20:33 -07:00
.travis.yml Exempt gh-pages from Travis. 2013-12-13 15:33:22 -08:00
CODING_STYLE Added notes in CODING_STYLE 2013-12-12 14:54:36 -08:00
CONTRIBUTORS Updated contributors file 2013-12-13 12:52:52 -08:00
LICENSE Initial commit 2013-10-27 13:20:33 -07:00
Makefile Add make test to Travis 2013-12-13 13:09:59 -08:00
README.md Remove trailing whitespace 2013-12-13 11:24:17 +02:00

OpenH264

OpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See http://www.openh264.org/ for more details.

Encoder Features

  • Constrained Baseline Profile up to Level 5.2 (4096x2304)
  • Arbitrary resolution, not constrained to multiples of 16x16
  • Rate control with adaptive quantization, or constant quantization
  • Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
  • Multiple threads automatically used for multiple slices
  • Temporal scalability up to 4 layers in a dyadic hierarchy
  • Spatial simulcast up to 4 resolutions from a single input
  • Long Term Reference (LTR) frames
  • Memory Management Control Operation (MMCO)
  • Reference picture list modification
  • Single reference frame for inter prediction
  • Multiple reference frames when using LTR and/or 3-4 temporal layers
  • Periodic and on-demand Instantaneous Decoder Refresh (IDR) frame insertion
  • Dynamic changes to bit rate, frame rate, and resolution
  • Annex B byte stream output
  • YUV 4:2:0 planar input

Decoder Features

  • Constrained Baseline Profile up to Level 5.2 (4096x2304)
  • Arbitrary resolution, not constrained to multiples of 16x16
  • Single thread for all slices
  • Long Term Reference (LTR) frames
  • Memory Management Control Operation (MMCO)
  • Reference picture list modification
  • Multiple reference frames when specified in Sequence Parameter Set (SPS)
  • Annex B byte stream input
  • YUV 4:2:0 planar output

OS Support

  • Windows 64-bit and 32-bit (initial release is only 32-bit, 64-bit will follow soon)
  • Mac OS X 64-bit (initial release does not include this target, will follow soon)
  • Linux 64-bit and 32-bit (initial release is only 32-bit, 64-bit will follow soon)
  • Android 32-bit (initial release does not include this target, will follow soon)
  • iOS 64-bit and 32-bit (not supported yet, may be added in the future)

Processor Support

  • Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
  • ARMv7 optionally with NEON (initial release does not include this target, will follow later)
  • Any architecture using C/C++ fallback functions

Using the Library

Linux makefiles for 32 bit builds are available: : build the decoder library and executable via codec/build/linux/dec/makefile : build the encoder library and executable via codec/build/linux/enc/makefile : build the encoder shared library via processing/build/linux/makefile

Windows Visual Studio 2008/2010/2012 projects are available: : build the decoder via the Visual Studio projects in codec/build/win32/dec : build the encoder via the Visual Studio projects in codec/build/win32/enc : build the encoder shared library via the Visual Studio projects in processing/build/win32/

NASM needed to be installed for assembly code: workable version 2.07 or above, nasm can downloaded from http://www.nasm.us/

API details to be provided later.

Using the Test App

Linux shell scripts to build the test apps: : build via testbin/AutoBuild_Linux.sh : clean via testbin/AutoClean_Linux.sh

Windows batch files to build the test apps: : Visual Studio 2008 use testbin/AutoBuild_Windows_VS2008.bat : Visual Studio 2010 use testbin/AutoBuild_Windows_VS2010.bat : Visual Studio 2012 use testbin/AutoBuild_Windows_VS2012.bat

Usage information can be found in testbin/CmdLineReadMe Command line options and details to be provided later.

Using the Source

codec - encoder, decoder, console (test app), build (makefile, vcproj) processing - raw pixel processing (used by encoder) testbin - autobuild scripts, test app config files, yuv test files bin - binaries for library and test app

Known Issues

See the issue tracker on https://github.com/cisco/openh264/issues

  • Encoder errors when resolution exceeds 3840x2160
  • Encoder errors when compressed frame size exceeds half uncompressed size
  • Encoder console app only support multiple of 16 width/height for now
  • Decoder errors when compressed frame size exceeds 1MB

License

BSD, see LICENSE file for details.