f9dea46712
Most of it was removed in ff6b669176
from C++ source files,
but other files were left unchanged.
98 lines
4.2 KiB
Markdown
98 lines
4.2 KiB
Markdown
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.
|