Updated README · cisco/openh264@59dae50
11OpenH264
2-========
2+=======
3+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.
4+5+Encoder Features
6+------------------------
7+- Constrained Baseline Profile up to Level 5.2 (4096x2304)
8+- Arbitrary resolution, not constrained to multiples of 16x16
9+- Rate control with adaptive quantization, or constant quantization
10+- Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
11+- Multiple threads automatically used for multiple slices
12+- Temporal scalability up to 4 layers in a dyadic hierarchy
13+- Spatial simulcast up to 4 resolutions from a single input
14+- Long Term Reference (LTR) frames
15+- Memory Management Control Operation (MMCO)
16+- Reference picture list modification
17+- Single reference frame for inter prediction
18+- Multiple reference frames when using LTR and/or 3-4 temporal layers
19+- Periodic and on-demand Instantaneous Decoder Refresh (IDR) frame insertion
20+- Dynamic changes to bit rate, frame rate, and resolution
21+- Annex B byte stream output
22+- YUV 4:2:0 planar input
23+24+Decoder Features
25+------------------------
26+- Constrained Baseline Profile up to Level 5.2 (4096x2304)
27+- Arbitrary resolution, not constrained to multiples of 16x16
28+- Single thread for all slices
29+- Long Term Reference (LTR) frames
30+- Memory Management Control Operation (MMCO)
31+- Reference picture list modification
32+- Multiple reference frames when specified in Sequence Parameter Set (SPS)
33+- Annex B byte stream input
34+- YUV 4:2:0 planar output
35+36+OS Support
37+----------------
38+- Windows 64-bit and 32-bit (initial release is only 32-bit, 64-bit will follow soon)
39+- Mac OS X 64-bit (initial release does not include this target, will follow soon)
40+- Linux 64-bit and 32-bit (initial release is only 32-bit, 64-bit will follow soon)
41+- Android 32-bit (initial release does not include this target, will follow soon)
42+- iOS 64-bit and 32-bit (not supported yet, may be added in the future)
43+44+Processor Support
45+-------------------------
46+- Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
47+- ARMv7 optionally with NEON (initial release does not include this target, will follow later)
48+- Any architecture using C/C++ fallback functions
3494-This goal of this project is to build a BSD-licensed open source H.264
5-codec that is suitable for use in real time applications such as WebRTC. See
6-http://www.openh264.org/ for more details.
7-8-This repo has no codec code yet (only the code for the website, in the gh-pages
9-branch). The code exists, and is used internally in Cisco products. But before
10-we can release it and start the public project, we need to do the following
11-things:
12-13-* Separate the code from its dependencies on Cisco source code which is not
14- intended to be open sourced;
15-16-* Check that we won't 0-day other Cisco products by releasing code which
17- has known unpublished security vulnerabilities;
18-19-* Make sure all the legal processes necessary before opening code have been
20- completed.
21-22-We hope to have these steps completed soon.
50+Using the Library
51+-----------------------
52+Linux makefiles for 32 bit builds are available:
53+ : build the decoder library and executable via codec/build/linux/dec/makefile
54+ : build the encoder library and executable via codec/build/linux/enc/makefile
55+ : build the encoder shared library via processing/build/linux/makefile
56+57+Windows Visual Studio 2008/2010/2012 projects are available:
58+ : build the decoder via the Visual Studio projects in codec/build/win32/dec
59+ : build the encoder via the Visual Studio projects in codec/build/win32/dec
60+ : build the encoder shared library via the Visual Studio projects in processing/build/win32/
61+62+NASM needed to be installed for assembly code: workable version 2.07 or above, nasm can downloaded from http://www.nasm.us/
63+64+API details to be provided later.
65+66+Using the Test App
67+-------------------------
68+Linux shell scripts to build the test apps:
69+ : build via testbin/AutoBuild_Linux.sh
70+ : clean via testbin/AutoClean_Linux.sh
71+72+Windows batch files to build the test apps:
73+ : Visual Studio 2008 use testbin/AutoBuild_Windows_VS2008.bat
74+ : Visual Studio 2010 use testbin/AutoBuild_Windows_VS2010.bat
75+ : Visual Studio 2012 use testbin/AutoBuild_Windows_VS2012.bat
76+77+Usage information can be found in testbin/CmdLineReadMe
78+Command line options and details to be provided later.
79+80+Using the Source
81+-----------------------
82+codec - encoder, decoder, console (test app), build (makefile, vcproj)
83+processing - raw pixel processing (used by encoder)
84+testbin - autobuild scripts, test app config files, yuv test files
85+bin - binaries for library and test app
86+87+Known Issues
88+-------------------
89+See the issue tracker on https://github.com/cisco/openh264/issues
90+- Encoder errors when resolution exceeds 3840x2160
91+- Encoder errors when compressed frame size exceeds half uncompressed size
92+- Encoder console app only support multiple of 16 width/height for now
93+- Decoder errors when compressed frame size exceeds 1MB
94+95+License
96+----------
97+BSD, see LICENSE file for details.