Updated README · cisco/openh264@59dae50

11

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

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.