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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4