|
1 | 1 | OpenH264 |
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 |
3 | 49 |
|
4 | | -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. |
0 commit comments