All Projects → lieff → Minih264

lieff / Minih264

Licence: cc0-1.0
Minimalistic H264/SVC encoder single header library

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Minih264

ffcvt
ffmpeg convert wrapper tool
Stars: ✭ 32 (-91.79%)
Mutual labels:  encoding, encoder, codec
gonvert
Golang character encoding converter with an automatic code-estimation.
Stars: ✭ 24 (-93.85%)
Mutual labels:  encoding, encoder
sms
A Go library for encoding and decoding SMSs
Stars: ✭ 37 (-90.51%)
Mutual labels:  encoding, encoder
codec
Encode keys, values and range options, with built-in or custom encodings.
Stars: ✭ 27 (-93.08%)
Mutual labels:  encoding, codec
Binary
Generic and fast binary serializer for Go
Stars: ✭ 86 (-77.95%)
Mutual labels:  encoding, codec
Ffmpeg Video Player
An FFmpeg and SDL Tutorial.
Stars: ✭ 149 (-61.79%)
Mutual labels:  encoding, codec
urlpack
Pure JavaScript toolkit for data URLs (MessagePack, Base58 and Base62)
Stars: ✭ 51 (-86.92%)
Mutual labels:  encoder, codec
schifra
C++ Reed Solomon Error Correcting Library https://www.schifra.com
Stars: ✭ 28 (-92.82%)
Mutual labels:  encoder, codec
x264
🎥 A safe x264 wrapper for Rust.
Stars: ✭ 35 (-91.03%)
Mutual labels:  encoding, h264
android-opus-codec
Implementation of Opus encoder and decoder in C++ for android with JNI
Stars: ✭ 44 (-88.72%)
Mutual labels:  encoder, codec
Qs
Go module for encoding structs into URL query parameters
Stars: ✭ 55 (-85.9%)
Mutual labels:  encoding, encoder
Vorbis
Reference implementation of the Ogg Vorbis audio format.
Stars: ✭ 271 (-30.51%)
Mutual labels:  encoder, codec
Ks265codec
ks cloud hevc(h265) encoder decoder test and description
Stars: ✭ 192 (-50.77%)
Mutual labels:  encoder, codec
VideoCodecKit
iOS macOS 编解码库 脱离ffmpeg等外部依赖 支持H.264 H.265裸流播放 硬件编解码 rtmp推流等
Stars: ✭ 78 (-80%)
Mutual labels:  h264, codec
Ffmediatoolkit
FFMediaToolkit is a cross-platform video decoder/encoder library for .NET that uses FFmpeg native libraries. It supports video frames extraction, reading stream metadata and creating videos from bitmaps in any format supported by FFmpeg.
Stars: ✭ 156 (-60%)
Mutual labels:  encoder, h264
Screen Recorder Ffmpeg Cpp
*Multimedia project* A screen recording application to capture your desktop and store in a video format. Click here to watch the demo
Stars: ✭ 98 (-74.87%)
Mutual labels:  encoder, codec
Ffmediaelement
FFME: The Advanced WPF MediaElement (based on FFmpeg)
Stars: ✭ 733 (+87.95%)
Mutual labels:  h264, codec
Digital video introduction
A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding).
Stars: ✭ 12,184 (+3024.1%)
Mutual labels:  h264, codec
h264-roi
H.264 video Region of Interest encoding tool, using x264
Stars: ✭ 44 (-88.72%)
Mutual labels:  encoding, h264
AnimatedGif
📼 A high performance .NET library for reading and creating animated GIFs
Stars: ✭ 106 (-72.82%)
Mutual labels:  encoding, encoder

minih264

Build Status

Small, but yet reasonably fast H264/SVC encoder single-header library with SSE/NEON optimizations. Decoder can be popped up in future.

Disclaimer: code highly experimental.

Comparison with x264

Rough comparison with x264 on an i7-6700K:

x264 -I 30 --profile baseline --preset veryfast --tune zerolatency -b 0 -r 1 --qp 33 --ipratio 1.0 --qcomp 1.0 -o x264.264 --fps 30 vectors/foreman.cif --input-res 352x288 --slices 1 --threads 1

vs

./h264enc_x64 vectors/foreman.cif

x264 minih264
source: ~4.6mb 409kb
binary: 1.2mb 100kb
time: 0,282s 0,503s
out size: 320kb 391kb

PSNR:

x264:     PSNR y:32.774824 u:38.874450 v:39.926132 average:34.084281 min:31.842667 max:36.630286
minih264: PSNR y:33.321686 u:38.858879 v:39.955914 average:34.574459 min:32.389171 max:37.174073

First intra frame screenshot (left-to-right: original 152064, minih264 5067, x264 5297 bytes):

Intra screenshot

You can compare results in motion using ffplay/mpv players on vectors/out_ref.264 and vectors/x264.264 .

Usage

TBD

SVC

Minih264 supports both spatial and temporal layers. Spatial layers are almost same as encode 2 independent AVC streams except for Intra frames prediction. Following diagram shows minih264 SVC scheme for two spatial layers:

SVC diargam

That's because P frames spatial prediction are almost useless in practice. But for Intra frames there is a ~20% benefit in full resolution frame size. Note that decoder must have both base layer I frame and full resolution SVC I frame to decode whole sequence of next P frames in full resolution.

Limitations

The following major features are not supported compared to x264 (baseline):

  • Trellis quantization.
  • Select prediction mode using Sum of Absolute Transform Differences (SATD).
  • 4x4 motion compensation.

Interesting links

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].