openh264/README.md

100 lines
4.1 KiB
Markdown
Raw Normal View History

2013-11-04 18:53:23 -08:00
OpenH264
2014-01-01 14:57:34 +01:00
========
2013-12-09 05:16:54 -08:00
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.
2013-12-09 05:16:54 -08:00
Encoder Features
2014-01-01 14:57:34 +01:00
----------------
2013-12-09 05:16:54 -08:00
- 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
2013-12-09 05:16:54 -08:00
- Annex B byte stream output
- YUV 4:2:0 planar input
2013-12-09 05:16:54 -08:00
Decoder Features
2014-01-01 14:57:34 +01:00
----------------
2013-12-09 05:16:54 -08:00
- 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
2013-12-09 05:16:54 -08:00
OS Support
2014-01-01 14:57:34 +01:00
----------
2013-12-09 05:16:54 -08:00
- 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)
2013-12-09 05:16:54 -08:00
Processor Support
2014-01-01 14:57:34 +01:00
-----------------
2013-12-09 05:16:54 -08:00
- 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
2013-10-27 13:20:33 -07:00
Building the Library
2014-01-01 14:57:34 +01:00
--------------------
NASM needed to be installed for assembly code: workable version 2.07 or above, nasm can downloaded from http://www.nasm.us/
For Windows Builds
2014-01-01 14:57:34 +01:00
------------------
2013-12-09 05:16:54 -08:00
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
2013-12-09 05:16:54 -08:00
: build the encoder shared library via the Visual Studio projects in processing/build/win32/
The command line programs will be bin/win32/decConsoled.exe and bin/win32/encConsole.exe.
Windows batch files also exist for building:
2013-12-09 05:16:54 -08:00
: 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
For Other Platforms
2014-01-01 14:57:34 +01:00
-------------------
From the main project directory:
'make' for 32bit builds
'make ENABLE64BIT=Yes' for 64bit builds
The command line programs h264enc and h264dec will appear in the main project directory.
A shell script to run the command-line apps is in testbin/CmdLineExample.sh
2013-12-09 05:16:54 -08:00
Usage information can be found in testbin/CmdLineReadMe
2013-12-09 05:16:54 -08:00
Using the Source
2014-01-01 14:57:34 +01:00
----------------
2013-12-09 05:16:54 -08:00
codec - encoder, decoder, console (test app), build (makefile, vcproj)
processing - raw pixel processing (used by encoder)
build - scripts for Makefile build system.
test - GTest unittest files.
2013-12-09 05:16:54 -08:00
testbin - autobuild scripts, test app config files, yuv test files
bin - binaries for library and test app
2013-12-09 05:16:54 -08:00
Known Issues
2014-01-01 14:57:34 +01:00
------------
2013-12-09 05:16:54 -08:00
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
2013-12-09 05:16:54 -08:00
License
2014-01-01 14:57:34 +01:00
-------
2013-12-09 05:16:54 -08:00
BSD, see LICENSE file for details.