Open Source H.264 Codec

Related tags

Video openh264
Overview

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 (Max frame size is 36864 macro-blocks)
  • 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
  • Simulcast AVC up to 4 resolutions from a single input
  • 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 (Max frame size is 36864 macro-blocks)
  • 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
  • Mac OS X 64-bit and 32-bit
  • Linux 64-bit and 32-bit
  • Android 64-bit and 32-bit
  • iOS 64-bit and 32-bit
  • Windows Phone 32-bit

Processor Support

  • Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
  • ARMv7 optionally with NEON, AArch64 optionally with NEON
  • Any architecture using C/C++ fallback functions

Building the Library

NASM needed to be installed for assembly code: workable version 2.10.06 or above, NASM can downloaded from http://www.nasm.us/. For Mac OSX 64-bit NASM needed to be below version 2.11.08 as NASM 2.11.08 will introduce error when using RIP-relative addresses in Mac OSX 64-bit

To build the arm assembly for Windows Phone, gas-preprocessor is required. It can be downloaded from git://git.libav.org/gas-preprocessor.git

For Android Builds

To build for android platform, You need to install android sdk and ndk. You also need to export **ANDROID_SDK**/tools to PATH. On Linux, this can be done by

export PATH=**ANDROID_SDK**/tools:$PATH

The codec and demo can be built by

make OS=android NDKROOT=**ANDROID_NDK** TARGET=**ANDROID_TARGET**

Valid **ANDROID_TARGET** can be found in **ANDROID_SDK**/platforms, such as android-12. You can also set ARCH, NDKLEVEL according to your device and NDK version. ARCH specifies the architecture of android device. Currently arm, arm64, x86 and x86_64 are supported, the default is arm. (mips and mips64 can also be used, but there's no specific optimization for those architectures.) NDKLEVEL specifies android api level, the default is 12. Available possibilities can be found in **ANDROID_NDK**/platforms, such as android-21 (strip away the android- prefix).

By default these commands build for the armeabi-v7a ABI. To build for the other android ABIs, add ARCH=arm64, ARCH=x86, ARCH=x86_64, ARCH=mips or ARCH=mips64. To build for the older armeabi ABI (which has armv5te as baseline), add APP_ABI=armeabi (ARCH=arm is implicit). To build for 64-bit ABI, such as arm64, explicitly set NDKLEVEL to 21 or higher.

For iOS Builds

You can build the libraries and demo applications using xcode project files located in codec/build/iOS/dec and codec/build/iOS/enc.

You can also build the libraries (but not the demo applications) using the make based build system from the command line. Build with

make OS=ios ARCH=**ARCH**

Valid values for **ARCH** are the normal iOS architecture names such as armv7, armv7s, arm64, and i386 and x86_64 for the simulator. Another settable iOS specific parameter is SDK_MIN, specifying the minimum deployment target for the built library. For other details on building using make on the command line, see 'For All Platforms' below.

For Linux Builds

You can build the libraries (but not the demo applications) using the make based build system from the command line. Build with

make OS=linux ARCH=**ARCH**

You can set ARCH according to your linux device . ARCH specifies the architecture of the device. Currently arm, arm64, x86 and x86_64 are supported

NOTICE: If your computer is x86 architecture, for build the libnary which be used on arm/aarch64 machine, you may need to use cross-compiler, for example: make OS=linux CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ARCH=arm64 or make OS=linux CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ ARCH=arm

For Windows Builds

Our Windows builds use MinGW which can be downloaded from http://www.mingw.org/

To build with gcc, add the MinGW bin directory (e.g. /c/MinGW/bin) to your path and follow the 'For All Platforms' instructions below.

To build with Visual Studio you will need to set up your path to run cl.exe. The easiest way is to start MSYS from a developer command line session. Instructions can be found at http://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx. If you need to do it by hand here is an example from a Windows 64bit install of VS2012:

export PATH="$PATH:/c/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin:/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE"

You will also need to set your INCLUDE and LIB paths to point to your VS and SDK installs. Something like this, again from Win64 with VS2012 (note the use of Windows-style paths here).

export INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include;C:\Program Files (x86)\Windows Kits\8.0\Include\um;C:\Program Files (x86)\Windows Kits\8.0\Include\shared"
export LIB="C:\Program Files (x86)\Windows Kits\8.0\Lib\Win8\um\x86;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib"

Then add OS=msvc to the make line of the 'For All Platforms' instructions.

For Windows Phone Builds

Follow the instructions above for normal Windows builds, but use OS=msvc-wp instead of OS=msvc. You will also need gas-preprocessor (as mentioned below "Building the Library").

If building for Windows Phone with MSVC 2013, there's no included bat file that sets the lib paths to the Windows Phone kit, but that can be done with a command like this:

export LIB="c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\store\arm;c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\arm;c:\Program Files (x86)\Windows Phone Kits\8.1\lib\arm"

This is only necessary for building the DLL; the static library can be built without setting this.

Note, only Windows Phone 8.1 or newer is supported, 8.0 is no longer supported.

For All Platforms

Using make

From the main project directory:

  • make for automatically detecting architecture and building accordingly
  • make ARCH=i386 for x86 32-bit builds
  • make ARCH=x86_64 for x86 64-bit builds
  • make V=No for a silent build (not showing the actual compiler commands)
  • make DEBUGSYMBOLS=True for two libraries, one is normal libraries, another one is removed the debugging symbol table entries (those created by the -g option)

The command line programs h264enc and h264dec will appear in the main project directory.

A shell script to run the command-line apps is in testbin/CmdLineExample.sh

Usage information can be found in testbin/CmdLineReadMe

Using meson

Meson build definitions have been added, and are known to work on Linux and Windows, for x86 and x86 64-bit.

See http://mesonbuild.com/Installing.html for instructions on how to install meson, then:

meson builddir
ninja -C builddir

Run the tests with:

meson test -C builddir -v

Install with:

ninja -C builddir install

Using the Source

  • codec - encoder, decoder, console (test app), build (makefile, vcproj)
  • build - scripts for Makefile build system
  • test - GTest unittest files
  • testbin - autobuild scripts, test app config files
  • res - yuv and bitstream test files

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
  • Decoder errors when compressed frame size exceeds 1MB
  • Encoder RC requires frame skipping to be enabled to hit the target bitrate, if frame skipping is disabled the target bitrate may be exceeded

License

BSD, see LICENSE file for details.

Comments
  • x86 library has text relocations, can't be used on Android 6

    x86 library has text relocations, can't be used on Android 6

    When compiling openH264 for Android x86 using make libraries -j4 OS=android ARCH=x86 NDKROOT=$(NDK_PATH) TARGET=android-19

    The generated libopenh264.so has text relocation issue that causes Android 6 to crash when trying to load it. You can check using: readelf -d -r libopenh264.so | grep TEXT

    I've tried with commit id 21ad38f430f62d11ff0c02f245a1df904f89f99a, and I'm using NDK r10e-rc4 on Linux 64bits.

    enhancement 
    opened by Viish 52
  • Makefile, pkg-config: Add INCLUDE_PREFIX variable, use include/openh2…

    Makefile, pkg-config: Add INCLUDE_PREFIX variable, use include/openh2…

    Makefile, pkg-config:

    Add INCLUDE_PREFIX variable, use $(PREFIX)/include/openh264 as default, include correct default in the pkg-config file

    People who use the pkg-config mechanism will benefit from this immediately and may not have to make any local changes to their own code.

    People who hardcoded the paths may need to start using pkg-config or tweak their paths as they prefer.

    opened by dpocock 46
  • Reintroduced Frame-Order bug in master/v2.2.0

    Reintroduced Frame-Order bug in master/v2.2.0

    Bug reported in https://github.com/cisco/openh264/issues/3305 has been reintroduced in master and https://github.com/cisco/openh264/tree/v2.2.0

    Offending commit: dc17ceea7aae76131e30d72c69f801185e917b05

    Easy way to test:

    1. Compile FreeRDP from https://github.com/FreeRDP/FreeRDP/tree/master with cmake -GNinja -DWITH_OPENH264=ON
    2. Connect to some windows RDP server with xfreerdp /v:someserver (AVC mode enabled)
    3. Create a selection rectangle with a mouse left click
    4. Release the rectangle
    5. See that the rectangle is (in part) still visible

    To verify the stream can be decoded properly:

    1. Compile FreeRDP from https://github.com/FreeRDP/FreeRDP/tree/master with cmake -GNinja -DWITH_FFMPEG=ON
    2. Retry above
    opened by akallabeth 31
  • x264 encoding + openh264 decoding = decoding bitstream errors?

    x264 encoding + openh264 decoding = decoding bitstream errors?

    I'm using wirecast to encode a screen capture via x264 (@ 480p, 30fps, keyframes every 1 second, baseline profile). I have an application which decodes using openh264. About every 2-10 seconds I get about 10-30 frames of chain decoding errors every frame. It usually starts with a bitstream error.

    x264 has many encoding options. I'm assuming it is encoding in a way openh264 doesn't support, but perhaps there is an option I can turn off to make openh264 decode properly. Does anyone have a clue as to what I should attempt to disable in order to have openh264 decode without errors?

    Here's the error I get:

    [OpenH264] this = 0x0x7fb7d9736ac0, Warning:invalid syntax vertical mv 23913
    [OpenH264] this = 0x0x7fb7d9736ac0, Warning:DecodeCurrentAccessUnit() failed (1035) in frame: 3 uiDId: 0 uiQId: 0
    [OpenH264] this = 0x0x7fb7d9736ac0, Info:decode failed, failure type:36 
    

    Note: when I turn on error concealment it does an okay job at concealing this problem, but I still get visual artifacts, depending on the data, every 30s or so.

    answered 
    opened by dapirian 21
  • Get rid of the OpenSSL dependency by bundling a simple SHA1 implementation

    Get rid of the OpenSSL dependency by bundling a simple SHA1 implementation

    The SHA1 implementation is taken from RFC 3174, and the license should be compatible as far as I can see, and nothing of it gets included in actual distributed binaries of OpenH264 anyway.

    The whole replacement process is split into a few small, easily readable commits.

    opened by mstorsjo 21
  • Please either add source, or remove this project

    Please either add source, or remove this project

    It is embarrassing for Cisco, and a bit insulting to those of us who work in Open Source, to call this project "Open Source", and not actually have any source code in it. Rather than getting any goodwill from announcing your intent to share the code of your H.264 implementation, you will likely find that the community will react with scorn and derision.

    I recommend removing this project from Github until the source code IS available. I understand that it takes time to do this for various legal and organizational reasons, but jumping the gun, and releasing a project that doesn't have any source code, and calling it "Open Source", is insulting to our intelligence, our hard work, and it incurs a dramatic credibility cost for Cisco with the very people that I presume you're trying to befriend.

    Please. Don't do this. Don't go down this tired BigDumbCorp road. Take this empty thing down, or add the source code. It's offensive and insulting, and the internet is already descending on you with jokes and jibes. If the goal is marketing, then this is absolutely the wrong way to go about it.

    opened by isaacs 21
  • meson: Use pkg-config generator and some cleanups

    meson: Use pkg-config generator and some cleanups

    When using library() instead of shared_library() and static_library, meson will build shared, static, or both depending on the value of static_library option.

    As far as I know extract_all_objects() was uses as workaround for Meson bugs fixed a while ago when using not installed static libraries.

    opened by xclaesse 20
  • Very different compressed file sizes when using 2 slices vs. 1 slice.

    Very different compressed file sizes when using 2 slices vs. 1 slice.

    I am using openh264 (current master) with FFmpeg. With all other parameters the same, the compressed file size is radically different depending on the number of slices specified, and whether or not load balancing is on:

              load     compressed
    slices  balancing  file size
    ------  ---------  ----------
      1        N/A      2,880,193
      2        on       4,777,473
      2        off     19,301,756
    

    There are two unexpected results here:

    (1) Why is the 2-slice-with-load-balancing output 66% bigger than the 1-slice output?

    (2) Why is the 2-slice-without-load-balancing output 4 times bigger than the 2-slice-with-load-balancing output?

    I also have an implementation of SSIM that I use to measure the output compressed video quality vs. the original losslessly compressed video. The SSIM numbers correlate with the compressed file sizes, with the largest file having the highest quality (as expected).

    For these test runs I have set the bit rates to be very high, equal to the bit rate needed for uncompressed YUV 420 video.

    If this is not a bug, then I would like to know how to set the compression parameters so that I get similar output file sizes from all three cases. In particular, I am wondering if I need to set iMinQp and iMaxQp?

    Below is diagnostic output showing some of the compression parameters:

    1 slice:

    Info:CWelsH264SVCEncoder::SetOption(), openh264 codec version = .
    Info:CWelsH264SVCEncoder::InitEncoder(), openh264 codec version = 
    Info:iUsageType = 0,iPicWidth= 1920;iPicHeight= 1080;iTargetBitrate= 597196800;iMaxBitrate= 597196800;iRCMode= 0;iPaddingFlag= 0;iTemporalLayerNum= 1;iSpatialLayerNum= 1;fFrameRate= 24.000000f;uiIntraPeriod= 96;eSpsPpsIdStrategy = 0;bPrefixNalAddingCtrl = 0;bSimulcastAVC=0;bEnableDenoise= 0;bEnableBackgroundDetection= 1;bEnableSceneChangeDetect = 1;bEnableAdaptiveQuant= 1;bEnableFrameSkip= 0;bEnableLongTermReference= 0;iLtrMarkPeriod= 30;iComplexityMode = 1;iNumRefFrame = 1;iEntropyCodingModeFlag = 0;uiMaxNalSize = 0;iLTRRefNum = 0;iMultipleThreadIdc = 1;iLoopFilterDisableIdc = 0 (offset(alpha/beta): 0,0;iMaxQp = 51;iMinQp = 0)
    Info:sSpatialLayers[0]: .iVideoWidth= 1920; .iVideoHeight= 1088; .fFrameRate= 24.000000f; .iSpatialBitrate= 597196800; .iMaxSpatialBitrate= 0; .sSliceArgument.uiSliceMode= 1; .sSliceArgument.iSliceNum= 1; .sSliceArgument.uiSliceSizeConstraint= 1500;uiProfileIdc = 66;uiLevelIdc = 0
    Info:SliceArgumentValidationFixedSliceMode(), uiSliceNum(1) you set for SM_FIXEDSLCNUM_SLICE, now turn to SM_SINGLE_SLICE type!
    Warning:bEnableFrameSkip = 0,bitrate can't be controlled for RC_QUALITY_MODE,RC_BITRATE_MODE and RC_TIMESTAMP_MODE without enabling skip frame.
    Info:WELS CPU features/capacities (0x4007fe3f) detected:    HTT:      Y, MMX:      Y, MMXEX:    Y, SSE:      Y, SSE2:     Y, SSE3:     Y, SSSE3:    Y, SSE4.1:   Y, SSE4.2:   Y, AVX:      Y, FMA:      Y, X87-FPU:  Y, 3DNOW:    N, 3DNOWEX:  N, ALTIVEC:  N, CMOV:     Y, MOVBE:    Y, AES:      Y, NUMBER OF LOGIC PROCESSORS ON CHIP: 8, CPU CACHE LINE SIZE (BYTES):        64
    Info:WelsInitEncoderExt() exit, overall memory usage: 26749630 bytes
    Info:CWelsH264SVCEncoder::~CWelsH264SVCEncoder()
    Info:CWelsH264SVCEncoder::Uninitialize(), openh264 codec version = .
    Info:WelsUninitEncoderExt(), pCtx= 04810fc8, iMultipleThreadIdc= 1.
    Info:FreeMemorySvc(), verify memory usage (0 bytes) after free..
    

    2 slices, load balancing on:

    Info:CWelsH264SVCEncoder::SetOption(), openh264 codec version = .
    Info:CWelsH264SVCEncoder::InitEncoder(), openh264 codec version = 
    Info:iUsageType = 0,iPicWidth= 1920;iPicHeight= 1080;iTargetBitrate= 597196800;iMaxBitrate= 597196800;iRCMode= 0;iPaddingFlag= 0;iTemporalLayerNum= 1;iSpatialLayerNum= 1;fFrameRate= 24.000000f;uiIntraPeriod= 96;eSpsPpsIdStrategy = 0;bPrefixNalAddingCtrl = 0;bSimulcastAVC=0;bEnableDenoise= 0;bEnableBackgroundDetection= 1;bEnableSceneChangeDetect = 1;bEnableAdaptiveQuant= 1;bEnableFrameSkip= 0;bEnableLongTermReference= 0;iLtrMarkPeriod= 30;iComplexityMode = 1;iNumRefFrame = 1;iEntropyCodingModeFlag = 0;uiMaxNalSize = 0;iLTRRefNum = 0;iMultipleThreadIdc = 2;iLoopFilterDisableIdc = 0 (offset(alpha/beta): 0,0;iMaxQp = 51;iMinQp = 0)
    Info:sSpatialLayers[0]: .iVideoWidth= 1920; .iVideoHeight= 1088; .fFrameRate= 24.000000f; .iSpatialBitrate= 597196800; .iMaxSpatialBitrate= 0; .sSliceArgument.uiSliceMode= 1; .sSliceArgument.iSliceNum= 2; .sSliceArgument.uiSliceSizeConstraint= 1500;uiProfileIdc = 66;uiLevelIdc = 0
    Warning:bEnableFrameSkip = 0,bitrate can't be controlled for RC_QUALITY_MODE,RC_BITRATE_MODE and RC_TIMESTAMP_MODE without enabling skip frame.
    Info:WELS CPU features/capacities (0x4007fe3f) detected:    HTT:      Y, MMX:      Y, MMXEX:    Y, SSE:      Y, SSE2:     Y, SSE3:     Y, SSSE3:    Y, SSE4.1:   Y, SSE4.2:   Y, AVX:      Y, FMA:      Y, X87-FPU:  Y, 3DNOW:    N, 3DNOWEX:  N, ALTIVEC:  N, CMOV:     Y, MOVBE:    Y, AES:      Y, NUMBER OF LOGIC PROCESSORS ON CHIP: 8, CPU CACHE LINE SIZE (BYTES):        64
    Info:WelsInitEncoderExt() exit, overall memory usage: 39296476 bytes
    Info:CWelsH264SVCEncoder::~CWelsH264SVCEncoder()
    Info:CWelsH264SVCEncoder::Uninitialize(), openh264 codec version = .
    Info:WelsUninitEncoderExt(), pCtx= 047c0fc8, iMultipleThreadIdc= 2.
    Info:FreeMemorySvc(), verify memory usage (0 bytes) after free..
    

    2 slices, load balancing off:

    Info:CWelsH264SVCEncoder::SetOption(), openh264 codec version = .
    Info:CWelsH264SVCEncoder::InitEncoder(), openh264 codec version = 
    Info:iUsageType = 0,iPicWidth= 1920;iPicHeight= 1080;iTargetBitrate= 597196800;iMaxBitrate= 597196800;iRCMode= 0;iPaddingFlag= 0;iTemporalLayerNum= 1;iSpatialLayerNum= 1;fFrameRate= 24.000000f;uiIntraPeriod= 96;eSpsPpsIdStrategy = 0;bPrefixNalAddingCtrl = 0;bSimulcastAVC=0;bEnableDenoise= 0;bEnableBackgroundDetection= 1;bEnableSceneChangeDetect = 1;bEnableAdaptiveQuant= 1;bEnableFrameSkip= 0;bEnableLongTermReference= 0;iLtrMarkPeriod= 30;iComplexityMode = 1;iNumRefFrame = 1;iEntropyCodingModeFlag = 0;uiMaxNalSize = 0;iLTRRefNum = 0;iMultipleThreadIdc = 2;iLoopFilterDisableIdc = 0 (offset(alpha/beta): 0,0;iMaxQp = 51;iMinQp = 0)
    Info:sSpatialLayers[0]: .iVideoWidth= 1920; .iVideoHeight= 1088; .fFrameRate= 24.000000f; .iSpatialBitrate= 597196800; .iMaxSpatialBitrate= 0; .sSliceArgument.uiSliceMode= 1; .sSliceArgument.iSliceNum= 2; .sSliceArgument.uiSliceSizeConstraint= 1500;uiProfileIdc = 66;uiLevelIdc = 0
    Warning:bEnableFrameSkip = 0,bitrate can't be controlled for RC_QUALITY_MODE,RC_BITRATE_MODE and RC_TIMESTAMP_MODE without enabling skip frame.
    Info:WELS CPU features/capacities (0x4007fe3f) detected:    HTT:      Y, MMX:      Y, MMXEX:    Y, SSE:      Y, SSE2:     Y, SSE3:     Y, SSSE3:    Y, SSE4.1:   Y, SSE4.2:   Y, AVX:      Y, FMA:      Y, X87-FPU:  Y, 3DNOW:    N, 3DNOWEX:  N, ALTIVEC:  N, CMOV:     Y, MOVBE:    Y, AES:      Y, NUMBER OF LOGIC PROCESSORS ON CHIP: 8, CPU CACHE LINE SIZE (BYTES):        64
    Info:WelsInitEncoderExt() exit, overall memory usage: 39296476 bytes
    Info:CWelsH264SVCEncoder::~CWelsH264SVCEncoder()
    Info:CWelsH264SVCEncoder::Uninitialize(), openh264 codec version = .
    Info:WelsUninitEncoderExt(), pCtx= 047d0fc8, iMultipleThreadIdc= 2.
    Info:FreeMemorySvc(), verify memory usage (0 bytes) after free..
    
    question 
    opened by GregoryJWolfe 20
  • Serious bug in version 1.6

    Serious bug in version 1.6

    Version 1.6 encoder has a serious bug. Using following parameters to encode will produce illformed bitstream; when decoding, it will trigger errors in CheckIntra16x16PredMode.

    pPtrEnc->GetDefaultParams (&sSvcParam); sParam.iUsageType = CAMERA_VIDEO_REAL_TIME; sParam.fMaxFrameRate = 30.0f; // input frame rate sParam.iPicWidth = 1280; // width of picture in samples sParam.iPicHeight = 720; // height of picture in samples sParam.iTargetBitrate = 200000; // target bitrate desired sParam.iMaxBitrate = UNSPECIFIED_BIT_RATE; sParam.iRCMode = RC_TIMESTAMP_MODE; // rc mode control sParam.iTemporalLayerNum = 1; // layer number at temporal level sParam.iSpatialLayerNum = 1; // layer number at spatial level sParam.bEnableDenoise = 0; // denoise control sParam.bEnableBackgroundDetection = 1; // background detection control sParam.bEnableAdaptiveQuant = 1; // adaptive quantization control sParam.bEnableFrameSkip = 1; // frame skipping sParam.bEnableLongTermReference = 0; // long term reference control sParam.iLtrMarkPeriod = 30; sParam.uiIntraPeriod = 0; // period of Intra frame sParam.eSpsPpsIdStrategy = INCREASING_ID; sParam.bPrefixNalAddingCtrl = 0; sParam.iComplexityMode = MEDIUM_COMPLEXITY; sParam.bSimulcastAVC = true; int iIndexLayer = 0; sParam.sSpatialLayers[iIndexLayer].uiProfileIdc = PRO_BASELINE; sParam.sSpatialLayers[iIndexLayer].iVideoWidth = 1280; sParam.sSpatialLayers[iIndexLayer].iVideoHeight = 720; sParam.sSpatialLayers[iIndexLayer].fFrameRate = 30.0f; sParam.sSpatialLayers[iIndexLayer].iSpatialBitrate = 200000; sParam.sSpatialLayers[iIndexLayer].iMaxSpatialBitrate = UNSPECIFIED_BIT_RATE; sParam.sSpatialLayers[iIndexLayer].sSliceArgument.uiSliceMode = SM_FIXEDSLCNUM_SLICE; sParam.iMultipleThreadIdc = 2;

    There are three key parameters related to this problem.

    1. sParam.bEnableFrameSkip must be enabled;
    2. sParam.iMultipleThreadIdc = 2 must be multithreaded
    3. sParam.iTargetBitrate = 200000; sParam.sSpatialLayers[iIndexLayer].iSpatialBitrate = 200000; bitrate should be small to enough to trigger frame skip.
    opened by zjudongze 17
  • build fail for android on linux

    build fail for android on linux

    I want to use openh264 with ffmpeg for android app. I tried to build openh264 for android by below command. make OS=android NDKROOT=~/Android/android-ndk-r18b TARGET=android-28 NDKLEVEL=28

    but I failed with this error message. ysroot=/home/cheolhwi/Android/android-ndk-r18b/platforms/android-28/arch-arm -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,-soname,libopenh264.so /usr/bin/ld: unrecognised emulation mode: armelf_linux_eabi Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om i386pep i386pe clang++: error: linker command failed with exit code 1 (use -v to see invocation) Makefile:240: recipe for target 'libopenh264.so' failed make: *** [libopenh264.so] Error 1

    I think that it failed by usage of wrong ld(/usr/bin/ld). Is it right? Please help me if someone has any idea.

    opened by sunjin1233 16
  • OPEN H264 SVC

    OPEN H264 SVC

    Hi Team, I ám new to open h264 org and i have downloaded source code in to Linux machine and tried test/sample examples apps, when i decode the h264 svc encoded contents, decoder was throwing following error.

    command to encode: ../h264enc welsenc_vd_1d.cfg

    #layers defination(All are spatial sampling) PrefixNALAddingCtrl 1
    NumLayers 3 # Number of layers LayerCfg layer2.cfg # Layer 0 configuration file LayerCfg layer2_vd_rc.cfg # Layer 1 configuration file LayerCfg layer2_vd.cfg # Layer 2 configuration file

    [OpenH264] this = 0x0x1a5f040, Warning:UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU. [OpenH264] this = 0x0x1a5f040, Warning:UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU. [OpenH264] this = 0x0x1a5f040, Warning:UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU.

    I am actually looking in to H264 SVC funtionality and as a server, stream less bandwidth layer to client who is on bad network. Please provide me

    1. document or link which describes how to link openh264 binary in to my project.
    2. param's required to set at encoder side for SVC support.
    3. How to extract SVC layers.
    opened by VPBalaRama 15
  • ffmpeg and constrained_baseline profile

    ffmpeg and constrained_baseline profile

    It seems that some years ago, ffmpeg started to specify the constrained flag as part of the baseline profile for openh264.

    Doing so, it passes the profile PRO_BASELINE | (1 << 9), or 578.

    However, openh264 doesn't check for those flags very well, and will default to the PRO_UNKNOWN

    https://github.com/cisco/openh264/blob/3429eae277c17d9b505c8a264d88cad98474ed05/codec/encoder/core/src/encoder_ext.cpp#L130

    Would you accept patches to alleviate this situation. Maybe masking the upper bits? or explicitly checking for the constrained flag?

    opened by hmaarrfk 1
  • Is there any plan for h264 decoding to support qnx system?

    Is there any plan for h264 decoding to support qnx system?

    I want to test the performance of h264 decoding on qnx, how difficult is the transplantation? By the way, do you consider supporting qnx in the future?

    opened by brilliant-yan 1
  • Warning: Potential Security Risk Ahead when downloading binarry from github

    Warning: Potential Security Risk Ahead when downloading binarry from github

    When downloading this file: https://ciscobinary.openh264.org/openh264-2.3.1-win32.dll.bz2 using firefox or chrome you get this warning about the https certificate - see attached: Warning: Potential Security Risk Ahead

    Firefox detected a potential security threat and did not continue to ciscobinary.openh264.org. If you visit this site, attackers could try to steal information like your passwords, emails, or credit card details.

    What can you do about it?

    The issue is most likely with the website, and there is nothing you can do to resolve it. You can notify the website’s administrator about the problem.

    h_err

    opened by bobj1212 1
  • Output frames from openh264 in chronological order by DecodeFrameNoDelay

    Output frames from openh264 in chronological order by DecodeFrameNoDelay

    Openh264 does NOT always output video frames in chronological order when calling by DecodeFrameNoDelay()

    The output PTSs are as below; some of them are out-of-order. Should I reorder myself? If so, is there a sample code?

    0	0
    1	33333
    2	66666
    3	100000
    4	133333
    5	166666
    6	200000
    7	266666 *
    8	233333 #
    9	300000
    10	333333
    11	400000 *
    12	366666 #
    13	433333
    14	466666
    15	533333 *
    16	500000 #
    17	566666
    18	600000
    19	666666 * 
    20	633333 #
    21	700000
    22	733333
    23	800000 *
    24	766666 #
    25	833333
    26	900000 *
    27	866666 #
    28	933333
    

    test file can be accessed here: https://drive.google.com/file/d/1B2-C-UL1QgMY8MRPec1mRgxQSKoO4yKq/view?usp=share_link

    opened by WeiChungChang 16
  • Release notes - include glibc version for binary

    Release notes - include glibc version for binary

    I just spent many hours trying to debug why my ffmpeg build would not work, finally ending up on this - debian bullseye does not have a glibc version that would match the openh264.so in its package repositories. The latest openh264 requires glibc 2.34, but the os ships with glibc 2.31. This could've been avoided if I knew about the required glibc version ahead of time.

    It'd be swell if you included the version of glibc the binary was built with in the release notes.

    I think it'd make life easier for integrators (e. g. #2347) and it only takes one line :)

    opened by kdojeteri 2
  • Decode key frame but get dsRefLost + dsNoParamSets error

    Decode key frame but get dsRefLost + dsNoParamSets error

    Hi:

    When I decode a video frame, it works fine by ffmpeg.

    However, with openh264, it deocde failed when, e.g. start to decode from 2nd key frame.

    The report error is dsRefLost + dsNoParamSets From the NALU information, the 1st key has (1)SPS + (2)PPS + (3)IDR. However, the 2nd key frame(where issue happens when start decode from there) has (1)SPS, (2)PPS, (3)SEI, (4)code slice. (no IDR NALU)

    I wonder if it is the root cause which lead to decode from 2nd key frame fails?

    If so, is there any setting to avoid such error?

    Or I need to change the NALU label to have openh264 work?

      0th : PTS =         0 us, size =  19633,     key, NRI  3, NALUs = SPS, PPS, IDR, 
      1th : PTS =     83422 us, size =   8690, non-key, NRI  2, NALUs = code slice, 
      2th : PTS =     41711 us, size =   3316, non-key, NRI  0, NALUs = code slice, 
      3th : PTS =    166833 us, size =  10572, non-key, NRI  2, NALUs = code slice, 
      4th : PTS =    125122 us, size =   6364, non-key, NRI  0, NALUs = code slice, 
      5th : PTS =    208544 us, size =  11369, non-key, NRI  2, NALUs = code slice, 
      6th : PTS =    291955 us, size =  12820, non-key, NRI  2, NALUs = code slice, 
      7th : PTS =    250255 us, size =   5175, non-key, NRI  0, NALUs = code slice, 
    ...
     58th : PTS =   2377377 us, size =   3231, non-key, NRI  0, NALUs = code slice, 
     59th : PTS =   2460788 us, size =   4075, non-key, NRI  2, NALUs = code slice, 
     60th : PTS =   2502500 us, size =  22296,     key, NRI  3, NALUs = SPS, PPS, SEI, code slice, 
     61th : PTS =   2585922 us, size =  10693, non-key, NRI  2, NALUs = code slice, 
     62th : PTS =   2544211 us, size =   4995, non-key, NRI  0, NALUs = code slice, 
     63th : PTS =   2669333 us, size =  10940, non-key, NRI  2, NALUs = code slice,
    
    opened by WeiChungChang 3
Releases(v2.3.1)
  • v2.3.1(Sep 21, 2022)

    Releases

    v2.3.1

    • update SHAREDLIB_MAJORVERSION value in Makefile

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed.

    v2.3.1 http://ciscobinary.openh264.org/libopenh264-2.3.1-android-arm.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-android-arm.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-android-arm64.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-android-arm64.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-android-x64.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-android-x64.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-android-x86.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-android-x86.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-ios.a.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-linux32.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-linux32.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-linux64.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-linux64.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-linux-arm.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-linux-arm.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-linux-arm64.7.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-linux-arm64.7.so.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-mac-arm64.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-mac-arm64.dylib.signed.md5.txt http://ciscobinary.openh264.org/libopenh264-2.3.1-mac-x64.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-2.3.1-mac-x64.dylib.signed.md5.txt http://ciscobinary.openh264.org/openh264-2.3.1-win32.dll.signed.md5.txt http://ciscobinary.openh264.org/openh264-2.3.1-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-2.3.1-win64.dll.bz2 http://ciscobinary.openh264.org/openh264-2.3.1-win64.dll.signed.md5.txt

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Aug 1, 2022)

    Releases

    v2.3.0

    • Decoder bug fix to correct the B-frame order in some case
    • Fixes to avoid hanging for multi-thread decoding
    • Some Enhancements and fixes for rate control
    • Assembly optimization for loongson platform
    • Some minor bug fixes

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed.

    v2.3.0
    http://ciscobinary.openh264.org/libopenh264-2.3.0-android-arm.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-android-arm64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-android-x86.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-android-x64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-ios.a.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-linux32.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-linux64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-linux-arm.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-linux-arm64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-mac-arm64.6.dylib.bz2
    http://ciscobinary.openh264.org/libopenh264-2.3.0-mac-x64.6.dylib.bz2
    http://ciscobinary.openh264.org/openh264-2.3.0-win32.dll.bz2
    http://ciscobinary.openh264.org/openh264-2.3.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jan 28, 2022)

    Releases

    v2.2.0

    • Add support for B-slice error concealment
    • Thread decoding support for multi-slice frame
    • SIMD optimization for loongson platform
    • Support the arm64 compilation on Windows and MacOS platform
    • Some Bug fixes for B-frame decoding
    • Some minor bug fixes

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed.

    v2.2.0

    http://ciscobinary.openh264.org/libopenh264-2.2.0-android-arm.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-android-arm64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-android-x86.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-android-x64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-ios.a.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-linux32.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-linux64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-linux-arm.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-linux-arm64.6.so.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-osx-arm64.6.dylib.bz2
    http://ciscobinary.openh264.org/libopenh264-2.2.0-osx-x64.6.dylib.bz2
    http://ciscobinary.openh264.org/openh264-2.2.0-win32.dll.bz2
    http://ciscobinary.openh264.org/openh264-2.2.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(May 22, 2020)

    Releases

    v2.1.1

    • release x86 and x64 libraries for android platform
    • release arm and arm64 libraries for linux platform
    • Bug fixes

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed. binaries for windows and mac platform have been signed on the binaries itself, binaries on other platform are signed on an additional file with a .sig extension, which includes the corresponding SHA hashes.

    v2.1.1

    http://ciscobinary.openh264.org/libopenh264-2.1.1-android-arm.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-arm.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-arm64.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-arm64.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-x86.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-x86.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-x64.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-android-x64.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-ios.a.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux32.6.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux32.6.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux64.6.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux64.6.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux-arm.6.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux-arm.6.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux-arm64.6.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-linux-arm64.6.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-osx32.6.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.1-osx64.6.dylib.bz2 http://ciscobinary.openh264.org/openh264-2.1.1-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-2.1.1-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-2.1.1-android-arm.so.bz2(522.32 KB)
    libopenh264-2.1.1-android-arm.so.sig.bz2(420 bytes)
    libopenh264-2.1.1-android-arm64.so.bz2(477.89 KB)
    libopenh264-2.1.1-android-arm64.so.sig.bz2(413 bytes)
    libopenh264-2.1.1-android-x64.so.bz2(543.09 KB)
    libopenh264-2.1.1-android-x64.so.sig.bz2(424 bytes)
    libopenh264-2.1.1-android-x86.so.bz2(530.60 KB)
    libopenh264-2.1.1-android-x86.so.sig.bz2(421 bytes)
    libopenh264-2.1.1-ios.a.bz2(5.70 MB)
    libopenh264-2.1.1-ios.a.sig.bz2(420 bytes)
    libopenh264-2.1.1-linux-arm.6.so.bz2(545.10 KB)
    libopenh264-2.1.1-linux-arm.6.so.sig.bz2(411 bytes)
    libopenh264-2.1.1-linux-arm64.6.so.bz2(578.13 KB)
    libopenh264-2.1.1-linux-arm64.6.so.sig.bz2(412 bytes)
    libopenh264-2.1.1-linux32.6.so.bz2(594.87 KB)
    libopenh264-2.1.1-linux32.6.so.sig.bz2(408 bytes)
    libopenh264-2.1.1-linux64.6.so.bz2(594.29 KB)
    libopenh264-2.1.1-linux64.6.so.sig.bz2(418 bytes)
    libopenh264-2.1.1-osx32.6.dylib.bz2(529.73 KB)
    libopenh264-2.1.1-osx64.6.dylib.bz2(524.04 KB)
    openh264-2.1.1-win32.dll.bz2(359.81 KB)
    openh264-2.1.1-win64.dll.bz2(397.86 KB)
  • v2.1.0(Mar 24, 2020)

    Releases

    v2.1.0

    • Experimentally support for multi-thread decoding(default disabled,and may result in random problems if enabled)
    • Assembly optimization for loongson platform
    • Update meson version to 5
    • Some minor bug fixes

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed. binaries for windows and mac platform have been signed on the binaries itself, binaries on other platform are signed on an additional file with a .sig extension, which includes the corresponding SHA hashes.

    v2.1.0

    http://ciscobinary.openh264.org/libopenh264-2.1.0-android-arm.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-android-arm.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-android-arm64.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-android-arm64.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-ios.a.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-linux32.5.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-linux32.5.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-linux64.5.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-linux64.5.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-osx32.5.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-2.1.0-osx64.5.dylib.bz2 http://ciscobinary.openh264.org/openh264-2.1.0-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-2.1.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-2.1.0-android-arm.so.bz2(522.40 KB)
    libopenh264-2.1.0-android-arm.so.sig.bz2(405 bytes)
    libopenh264-2.1.0-android-arm64.so.bz2(478.01 KB)
    libopenh264-2.1.0-android-arm64.so.sig.bz2(414 bytes)
    libopenh264-2.1.0-ios.a.bz2(5.70 MB)
    libopenh264-2.1.0-ios.a.sig.bz2(422 bytes)
    libopenh264-2.1.0-linux32.5.so.bz2(595.21 KB)
    libopenh264-2.1.0-linux32.5.so.sig.bz2(408 bytes)
    libopenh264-2.1.0-linux64.5.so.bz2(594.29 KB)
    libopenh264-2.1.0-linux64.5.so.sig.bz2(415 bytes)
    libopenh264-2.1.0-osx32.5.dylib.bz2(486.59 KB)
    libopenh264-2.1.0-osx64.5.dylib.bz2(509.53 KB)
    openh264-2.1.0-win32.dll.bz2(356.92 KB)
    openh264-2.1.0-win64.dll.bz2(407.16 KB)
  • v2.0.0(Jun 17, 2019)

    Releases

    v2.0.0

    • B-frame decoding support for Main and High Profile with two test cases
    • Add support for loongson(https://en.wikipedia.org/wiki/Loongson) platform
    • Add clang support for arm/arm64/x86 for NDK version over 17
    • Enable stack protector
    • Add some test cases
    • Avoid using C++/CX code for threads for Windows Phone/Windows Store/UWP
    • Remove extra visual studio projects for the decoder
    • Remove check for working compiler in NDK
    • Bug fixes

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed. binaries for windows and mac platform have been signed on the binaries itself, binaries on other platform are signed on an additional file with a .sig extension, which includes the corresponding SHA hashes.

    v2.0.0

    http://ciscobinary.openh264.org/libopenh264-2.0.0-android.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-android.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-android-arm64.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-android-arm64.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-ios.a.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-linux32.5.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-linux32.5.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-linux64.5.so.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-linux64.5.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-osx32.5.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-2.0.0-osx64.5.dylib.bz2 http://ciscobinary.openh264.org/openh264-2.0.0-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-2.0.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-2.0.0-android-arm64.so.bz2(526.32 KB)
    libopenh264-2.0.0-android-arm64.so.sig.bz2(410 bytes)
    libopenh264-2.0.0-android.so.bz2(500.21 KB)
    libopenh264-2.0.0-android.so.sig.bz2(418 bytes)
    libopenh264-2.0.0-ios.a.bz2(6.08 MB)
    libopenh264-2.0.0-ios.a.sig.bz2(412 bytes)
    libopenh264-2.0.0-linux32.5.so.bz2(576.26 KB)
    libopenh264-2.0.0-linux32.5.so.sig.bz2(423 bytes)
    libopenh264-2.0.0-linux64.5.so.bz2(579.08 KB)
    libopenh264-2.0.0-linux64.5.so.sig.bz2(411 bytes)
    libopenh264-2.0.0-osx32.5.dylib.bz2(514.11 KB)
    libopenh264-2.0.0-osx64.5.dylib.bz2(496.15 KB)
    openh264-2.0.0-win32.dll.bz2(353.06 KB)
    openh264-2.0.0-win64.dll.bz2(406.70 KB)
    Source.Code.tar.gz(57.45 MB)
    Source.Code.zip(58.20 MB)
  • v1.8.0(Jun 27, 2018)

    Releases

    v1.8.0

    • Add meson build for Linux/Windows platform
    • Disable background detection for screen route
    • Add a workaround for Visual Studio 2013 C++ x64 compiler bug on AVX2. That bug will cause crash and has been fixed in Visual Studio 2014
    • Change the default profile from baseline to high if user does not set it and CABAC is specified
    • Skip frames that are marked as IDR due to scene change and simultaneously marked as skip frame to reduce bit rate
    • Refine threshold calculation algorithms for rate control in lower frame rate to get better effect
    • Encoder return with a specific return value instead of uninitialize encoder when input resolution is invalid
    • Refine strategy on level change to avoid frequent IDR. Encoder will not be reset if level is changed to a smaller one
    • Support to set the min and max QP values on screen content mode
    • Fix a memory issue that may cause encoder crash when temporal layer change
    • Corrected some statistics information
    • Refine error concealment algorithms to improve user experience
    • Support to get information about current output picture is reference picture or not on decoder side
    • Bug fix for decoder when 8x8 prediction mode is enabled on the input bitstream
    • Enable NEON for ChromeOS devices
    • Support for Fuchsia operating systerm
    • Support for building arm64 with MSVC
    • Remove some warnings when building with MSVC
    • Fix clang compiler error when building arm assembly funtions
    • Bug fixes for unit test

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed. binaries for windows and mac platform have been signed on the binaries itself, binaries on other platform are signed on an additional file with a .sig extension, which includes the corresponding SHA hashes.

    v1.8.0

    http://ciscobinary.openh264.org/libopenh264-1.8.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-android19.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-ios.a.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-linux32.4.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-linux32.4.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-linux64.4.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-linux64.4.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-osx32.4.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.8.0-osx64.4.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.8.0-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-1.8.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.8.0-android19.so.bz2(439.76 KB)
    libopenh264-1.8.0-android19.so.sig.bz2(415 bytes)
    libopenh264-1.8.0-ios.a.bz2(4.95 MB)
    libopenh264-1.8.0-ios.a.sig.bz2(417 bytes)
    libopenh264-1.8.0-linux32.4.so.bz2(506.23 KB)
    libopenh264-1.8.0-linux32.4.so.sig.bz2(421 bytes)
    libopenh264-1.8.0-linux64.4.so.bz2(516.79 KB)
    libopenh264-1.8.0-linux64.4.so.sig.bz2(418 bytes)
    libopenh264-1.8.0-osx32.4.dylib.bz2(433.57 KB)
    libopenh264-1.8.0-osx64.4.dylib.bz2(425.64 KB)
    openh264-1.8.0-win32.dll.bz2(328.51 KB)
    openh264-1.8.0-win64.dll.bz2(378.78 KB)
    Source.Code.tar.gz.gz(36.89 MB)
    Source.Code.zip.zip(37.32 MB)
  • v1.7.0(Jun 16, 2017)

    Releases

    v1.7.0

    • Changed SPS/PPS strategy option name,See enum ENCODER_OPTION
    • Changed NAL size length parameter from static array to pointer to support more NALs.See struct SParserBsInfo
    • Changed semaphores to condition variables on apple platform
    • Changed version update mechanism as Major.Minor.patch,like 1.7.0
    • Supported to force IDR independently for each layer in simulcast AVC case.See API ForceIntraFrame()
    • Supported LTR request independently for each layer in simulcast AVC case.See struct SLTRRecoverRequest and SLTRMarkingFeedback
    • Supported to set sample aspect ratio in VUI on encoder side. See struct SSpatialLayerConfig
    • Supported to set profile and level, changed the default level as 4.1 if the user doesn’t set it. See enum ELevelIdc
    • Supported to get profile and level info on decoder side.See enum DECODER_OPTION
    • Supported for enable/disable AVX2 build option. Build option: HAVE_AVX2
    • Supported to set decoder statistics log interval, Add DECODER_OPTION_STATISTICS_LOG_INTERVAL.See DECODER_OPTION.
    • Supported for AU delimiter NAL on decoder side. AU delimiter refers to section 7.3.2.4
    • Supported for x86 PIC assembly and build option. Build option: ENABLEPIC. git issues:#2263 #2534
    • Supported for Cygwin x86_64 build
    • Supported to get sample aspect ratio by GetOption on decoder. Add option: DECODER_OPTION_GET_SAR_INFO
    • Set constraint_set4_flag constraint_set5_flag to align to CHP definition in latest H264 standard
    • Improved VUI support on decoder side
    • Improved decoder statistics info output
    • Refined the return value when failed in memory allocation
    • Added SSSE3 motion compensation routines
    • Added AVX2 motion compensation routines
    • Optimization on some of SSE2/MMX functions
    • Refactor rate control for RC_BUFFERBASED_MODE and RC_QUALITY_MODE mode
    • Added more unit tests for random resolution input,slice mode switch,profile/level setting
    • Refined logs
    • Bug fixes for 4:0:0 format support on decoder
    • Bug fixes for complexity calculation for screen content mode
    • Bug fixes for loadbalancing turn on, git issue:#2618
    • Bug fixes for parser subsps, scalling list, parser longer bitstream

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    All the binaries have been digitally signed. binaries for windows and mac platform have been signed on the binaries itself, binaries on other platform are signed on an additional file with a .sig extension, which includes the corresponding SHA hashes.

    v1.7.0

    http://ciscobinary.openh264.org/libopenh264-1.7.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-android19.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-ios.a.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-linux32.4.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-linux32.4.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-linux64.4.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-linux64.4.so.sig.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-osx32.4.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.7.0-osx64.4.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.7.0-win32.dll.bz2 http://ciscobinary.openh264.org/openh264-1.7.0-win64.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.7.0-android19.so.bz2(437.79 KB)
    libopenh264-1.7.0-android19.so.sig.bz2(401 bytes)
    libopenh264-1.7.0-ios.a.bz2(5.38 MB)
    libopenh264-1.7.0-ios.a.sig.bz2(412 bytes)
    libopenh264-1.7.0-linux32.4.so.bz2(496.35 KB)
    libopenh264-1.7.0-linux32.4.so.sig.bz2(421 bytes)
    libopenh264-1.7.0-linux64.4.so.bz2(505.98 KB)
    libopenh264-1.7.0-linux64.4.so.sig.bz2(413 bytes)
    libopenh264-1.7.0-osx32.4.dylib.bz2(421.20 KB)
    libopenh264-1.7.0-osx64.4.dylib.bz2(421.79 KB)
    openh264-1.7.0-win32.dll.bz2(321.88 KB)
    openh264-1.7.0-win64.dll.bz2(367.89 KB)
  • v1.6.0(Jul 13, 2016)

    Releases

    v1.6.0

    • Adjusted the encoder API structures
    • Removed the unused data format in decoder API
    • Encoder support of simulcast AVC
    • Added support of video signal type present information
    • Added support of encoder load-balancing
    • Improved encoder multi-threads, rate control and down-sampling
    • Fixed the frame size constraint in encoder
    • Bug fixes for rate control, multi-threading, simulcasting in encoder
    • Bug fixes for interface call, return value check, memory leak in decoder
    • Bug fixes for UT and statistic information
    • Bug fixes for assembly code
    • Remove the unused and redundant code
    • Improvements on UT, memory allocation failed protection, error-protection in decoder, input parameters checking in encoder, assembly for AVX2 support, assembly code performance, logging and documentation
    • Correct some typos in source code and documents

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    v1.6.0

    http://ciscobinary.openh264.org/libopenh264-1.6.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.6.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-1.6.0-linux32.3.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.6.0-linux64.3.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.6.0-osx32.3.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.6.0-osx64.3.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.6.0-win32msvc.dll.bz2 http://ciscobinary.openh264.org/openh264-1.6.0-win64msvc.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.6.0-android19.so.bz2(450.21 KB)
    libopenh264-1.6.0-ios.a.bz2(5.28 MB)
    libopenh264-1.6.0-linux32.3.so.bz2(481.44 KB)
    libopenh264-1.6.0-linux64.3.so.bz2(491.13 KB)
    libopenh264-1.6.0-osx32.3.dylib.bz2(420.38 KB)
    libopenh264-1.6.0-osx64.3.dylib.bz2(420.14 KB)
    openh264-1.6.0-win32msvc.dll.bz2(313.33 KB)
    openh264-1.6.0-win64msvc.dll.bz2(357.37 KB)
  • v1.5.0(Oct 26, 2015)

    Releases

    v1.5.0

    • Correct a typo in codec return value (github issue#2046, cmUnkonwReason -> cmUnknownReason)
    • Added Codec demo and auto build script for WP8
    • Decoder support of 'Constrained High Profile' of H.264
    • Encoder support of CABAC of H.264
    • Encoder support of input frame rate 60
    • Improved syntax of gaps_in_frame_num_value_allowed_flag in encoder
    • Improved memory usage for multi-threading in encoder
    • Added VUI info for base layer in encoder
    • Added encoder interface to get external setting of iMaxQp and iMinQp for rate control
    • Bug fixes for Rate Control, multi-threading and simulcasting in encoder
    • Bug fixes for NoDelay API, ParseOnly functions, error-concealment off functiond and error-detection in decoder
    • Bug fixes for UT
    • Fixes to avoid valgrind warnings, potential crash and calculation overflow
    • Merged files for decoder/encoder and remove unused files
    • Improvements on build scripts, UT, error-protection in decoder, input param checking in encoder, assembly for 64bit support, downsampling, logging and documentation

    Note: 'Constrained High Profile' = 'Constrained Baseline Profile' plus:

    • CABAC
    • Intra 8x8 mode support
    • 8x8 transform
    • QP scaling matrices
    • QP per chroma component
    • Mono 4:0:0 (experimental)
    • Weighted prediction

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    v1.5.0

    http://ciscobinary.openh264.org/libopenh264-1.5.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.5.0-ios.a.bz2 http://ciscobinary.openh264.org/libopenh264-1.5.0-linux32.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.5.0-linux64.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.5.0-osx32.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.5.0-osx64.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.5.0-win32msvc.dll.bz2 http://ciscobinary.openh264.org/openh264-1.5.0-win64msvc.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.5.0-android19.so.bz2(431.42 KB)
    libopenh264-1.5.0-ios.a.bz2(1.14 MB)
    libopenh264-1.5.0-linux32.so.bz2(441.09 KB)
    libopenh264-1.5.0-linux64.so.bz2(451.59 KB)
    libopenh264-1.5.0-osx32.dylib.bz2(375.13 KB)
    libopenh264-1.5.0-osx64.dylib.bz2(365.49 KB)
    openh264-1.5.0-win32msvc.dll.bz2(290.84 KB)
    openh264-1.5.0-win64msvc.dll.bz2(332.96 KB)
  • v1.4.0(Mar 30, 2015)

    v1.4.0

    • Decoder new interface of DecodeFrameNoDelay
    • Encoder by default uses VUI for AVC
    • Added new encoder and decoder statistics
    • Added option for generating pdb in windows builds
    • Added new rate control mode (RC_TIMESTAMP_MODE) for inconstant frame rate input
    • Added new Sps/Pps strategies for real-time video (replace the old setting variable 'bEnableSpsPpsIdAddition' with 'eSpsPpsIdStrategy')
    • Added support for simulcast AVC in encoder
    • Improvements in code structure, assembly, input parameter checking, logging, console applications, UT and comments
    • In gmp-openh264, return decoder error correctly and other fixes
    • Decoder bug fixes when for Error Concealment disabled
    • Bug fixes for ParseOnly functions
    • Bug fixes for encoding large frame size (>32767MBs)
    • Fixes to avoid valgrind warnings, potential crash and calculation overflow

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    v1.4.0

    http://ciscobinary.openh264.org/libopenh264-1.4.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.4.0-linux32.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.4.0-linux64.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.4.0-osx32.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.4.0-osx64.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.4.0-win32msvc.dll.bz2 http://ciscobinary.openh264.org/openh264-1.4.0-win64msvc.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.4.0-android19.so.bz2(390.54 KB)
    libopenh264-1.4.0-linux32.so.bz2(410.52 KB)
    libopenh264-1.4.0-linux64.so.bz2(419.82 KB)
    libopenh264-1.4.0-osx32.dylib.bz2(331.47 KB)
    libopenh264-1.4.0-osx64.dylib.bz2(327.80 KB)
    openh264-1.4.0-win32msvc.dll.bz2(271.71 KB)
    openh264-1.4.0-win64msvc.dll.bz2(296.81 KB)
  • v1.3.1(Dec 31, 2014)

    Releases

    v1.3.1

    • Fixed and enhanced protection to avoid crash when reading lossy bitstreams
    • Adjust the default mode of Error Concealment used by gmp-openh264

    Binaries

    These binary releases are distributed under this license: http://www.openh264.org/BINARY_LICENSE.txt

    v1.3.1

    http://ciscobinary.openh264.org/libopenh264-1.3.1-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.1-linux32.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.1-linux64.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.1-osx32.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.1-osx64.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.3.1-win32msvc.dll.bz2 http://ciscobinary.openh264.org/openh264-1.3.1-win64msvc.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.3.1-android19.so.bz2(382.02 KB)
    libopenh264-1.3.1-linux32.so.bz2(403.92 KB)
    libopenh264-1.3.1-linux64.so.bz2(416.50 KB)
    libopenh264-1.3.1-osx32.dylib.bz2(326.08 KB)
    libopenh264-1.3.1-osx64.dylib.bz2(322.79 KB)
    openh264-1.3.1-win32msvc.dll.bz2(264.42 KB)
    openh264-1.3.1-win64msvc.dll.bz2(289.23 KB)
  • v1.3(Dec 22, 2014)

    v1.3.0

    • Removed manual API document, now using wiki: https://github.com/cisco/openh264/wiki (0af48e5 for v1.3.0)
    • Added API version in API header files
    • Added pkg-config file
    • Added decoder support of parsing only (bParseOnly) for only parsing bit stream but not decoding
    • Added timestamp and max nal size in gmp-openh264.cpp when calling encoding
    • Added timestamp info in decoder input and return structure
    • Added support of level 9 in decoder
    • Added total length of the encoded frame in encoder return structure
    • Added SetOption(ENCODER_OPTION_SVC_ENCODE_PARAM_BASE,&base) for encoder
    • Set constraint set 0 and 1 flags for non-scalable
    • Improved error concealment algorithms and provide more modes of error-concealment
    • Improved rate control algorithms and reference selection algorithms for screen content encoding
    • Added encoder and decoder statistics interface
    • Improved input parameter checking and logging
    • Bug fixes, warning reductions, and test improvements

    v1.3.0

    http://ciscobinary.openh264.org/libopenh264-1.3.0-android19.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.0-linux32.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.0-linux64.so.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.0-osx32.dylib.bz2 http://ciscobinary.openh264.org/libopenh264-1.3.0-osx64.dylib.bz2 http://ciscobinary.openh264.org/openh264-1.3.0-win32msvc.dll.bz2 http://ciscobinary.openh264.org/openh264-1.3.0-win64msvc.dll.bz2

    Source code(tar.gz)
    Source code(zip)
    openh264v1.3.0.zip(2.34 MB)
  • v1.2(Dec 18, 2014)

    v1.2.0

    • Add and modify encoder APIs related to rate control and screen content encoding
    • Remove PauseFrame in encoder APIs
    • Improve rate control and compression ratio for screen content encoding
    • Improve error concealment algorithm
    • Improve validation of input parameters
    • Add ARM64 assembly
    • bug fixes
    Source code(tar.gz)
    Source code(zip)
    libopenh264-1.2.0-android19.so.bz2(335.38 KB)
    libopenh264-1.2.0-linux32.so.bz2(362.52 KB)
    libopenh264-1.2.0-linux64.so.bz2(379.48 KB)
    libopenh264-1.2.0-osx32.dylib.bz2(293.90 KB)
    libopenh264-1.2.0-osx64.dylib.bz2(291.86 KB)
    openh264-1.2.0-win32msvc.dll.bz2(237.94 KB)
    openh264-1.2.0-win64msvc.dll.bz2(258.80 KB)
  • v1.0.0(May 23, 2014)

Owner
Cisco Systems
Open Source Projects from Cisco Systems
Cisco Systems
Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

null 124 Oct 9, 2022
🤟Super fast H.264/H.265 FLV player

??Super fast H.264/H.265 FLV player

Eros Zhao 1.2k Jan 7, 2023
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

struktur AG 1.4k Dec 30, 2022
A free, fast, cross-platform volumetric codec for everyone.

The open source Universal Volumetric (".uvol") compressed interchange format for streaming mesh sequences. This project also includes a cross-platform player implementation using h.264 video for texture.

XR Foundation 85 Dec 28, 2022
ffmpeg supporting EVC codec and file formats.

ffevc ffmpeg supporting EVC codec and file formats. MPEG-5 Essential Video Coding (EVC) integration with FFmpeg project. It is supported under Linux a

MPEG-5 28 Nov 23, 2022
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support

Vita-Media-Player An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support 1080i output supported on the PSTV natively and on the

Jaylon Gowie 50 Nov 25, 2022
Shotcut - a free, open source, cross-platform video editor

cross-platform (Qt), open-source (GPLv3) video editor

MLT Framework 7.3k Dec 29, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Team Kodi 15k Jan 2, 2023
GStreamer open-source multimedia framework

GStreamer open-source multimedia framework

GStreamer GitHub mirrors 1.5k Jan 1, 2023
Free and open-source media player written in C++

Liquid Media Player Free and open-source media player written in C++. Currently in development. Build Guide Windows Install the MSYS2 Building Platfor

Arrow Interactive 4 Sep 20, 2022
OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

OpenShot Studios, LLC 936 Jan 4, 2023
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

NVIDIA DesignWorks Samples 132 Dec 15, 2022
Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

Sentry-Picam is a simple wildlife / security camera solution for the Raspberry Pi Zero W, providing 1080p/30fps motion activated H.264 video capture.

null 124 Oct 9, 2022
🤟Super fast H.264/H.265 FLV player

??Super fast H.264/H.265 FLV player

Eros Zhao 1.2k Jan 7, 2023
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

struktur AG 1.4k Dec 30, 2022
Simple Binary Encoding (SBE) - High Performance Message Codec

Simple Binary Encoding (SBE) SBE is an OSI layer 6 presentation for encoding and decoding binary application messages for low-latency financial applic

Real Logic 2.8k Dec 28, 2022
hessian2-codec it is a complete C++ implementation of hessian2 spec

hessian2-codec is a C++ library from Alibaba for hessian2 codec. It is a complete C++ implementation of hessian2 spec. Because it was originally intended to implement the Dubbo Filter of Envoy, it did not provide good support for serialization of user-defined types (there is only one way to implement user-defined types using ADL, but it is not very complete and does not support nested types well). At the moment it is simply deserializing content into some C++ intermediate types.

Alibaba 16 Nov 15, 2022
Lossless data compression codec with LZMA-like ratios but 1.5x-8x faster decompression speed, C/C++

LZHAM - Lossless Data Compression Codec Public Domain (see LICENSE) LZHAM is a lossless data compression codec written in C/C++ (specifically C++03),

Rich Geldreich 641 Dec 22, 2022
Lyra: a generative low bitrate speech codec

Lyra is a high-quality, low-bitrate speech codec that makes voice communication available even on the slowest networks.

Google 3.5k Dec 27, 2022
A bespoke sample compression codec for 64k intros

pulsejet A bespoke sample compression codec for 64K intros codec pulsejet lifts a lot of ideas from Opus, and more specifically, its CELT layer, which

logicoma 34 Jul 25, 2022