• Stars
    star
    1,573
  • Rank 29,762 (Top 0.6 %)
  • Language
    C++
  • License
    Other
  • Created over 11 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open h.265 video codec implementation.

libde265 - open h.265 codec implementation

libde265

libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a plain C API to enable a simple integration into other software.

libde265 supports WPP and tile-based multithreading and includes SSE optimizations. The decoder includes all features of the Main profile and correctly decodes almost all conformance streams (see [wiki page]).

A list of supported features are available in the wiki.

For latest news check our website at http://www.libde265.org

The library comes with two example programs:

  • dec265, a simple player for raw h.265 bitstreams. It serves nicely as an example program how to use libde265.

  • sherlock265, a Qt-based video player with the additional capability to overlay some graphical representations of the h.265 bitstream (like CU-trees, intra-prediction modes).

Example bitstreams can be found, e.g., at this site: ftp://ftp.kw.bbc.co.uk/hevc/hm-10.1-anchors/bitstreams/ra_main/

Approximate performance for WPP, non-tiles streams (measured using the timehevc tool from the GStreamer plugin). The tool plays a Matroska movie to the GStreamer fakesink and measures the average framerate.

Resolution avg. fps CPU usage
720p 284 fps 39 %
1080p 150 fps 45 %
4K 36 fps 56 %

Environment:

  • Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz (4 physical CPU cores)
  • Ubuntu 12.04, 64bit
  • GStreamer 0.10.36

Building

Build Status Build Status

If you got libde265 from the git repository, you will first need to run the included autogen.sh script to generate the configure script.

libde265 has no dependencies on other libraries, but both optional example programs have dependencies on:

  • SDL2 (optional for dec265's YUV overlay output),

  • Qt (required for sherlock265),

  • libswscale (required for sherlock265 if libvideogfx is not available).

  • libvideogfx (required for sherlock265 if libswscale is not available, optional for dec265).

Libvideogfx can be obtained from http://www.dirk-farin.net/software/libvideogfx/index.html or http://github.com/farindk/libvideogfx

You can disable building of the example programs by running ./configure with

  --disable-dec265        Do not build the dec265 decoder program.
  --disable-sherlock265   Do not build the sherlock265 visual inspection program.

Additional logging information can be turned on and off using these ./configure flags:

  --enable-log-error      turn on logging at error level (default=yes)
  --enable-log-info       turn on logging at info level (default=no)
  --enable-log-trace      turn on logging at trace level (default=no)

Build using cmake

cmake scripts to build libde265 and the sample scripts dec265 and enc265 are included and can be compiled using these commands:

mkdir build
cd build
cmake ..
make

See the cmake documentation for further information on using cmake on other platforms.

Building using vcpkg

You can build and install libde265 using the vcpkg dependency manager:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install libde265

The libde265 port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Prebuilt binaries

Binary packages can be obtained from this launchpad site.

Software using libde265

Libde265 has been integrated into these applications:

Packaging status

libde265 packaging status

License

The library libde265 is distributed under the terms of the GNU Lesser General Public License. The sample applications are distributed under the terms of the MIT license.

See COPYING for more details.

The short video clip in the 'testdata' directory is from the movie 'Girl Shy', which is in the public domain.

Copyright (c) 2013-2014 Struktur AG Copyright (c) 2013-2023 Dirk Farin Contact: Dirk Farin [email protected]

More Repositories

1

libheif

libheif is an HEIF and AVIF file format decoder and encoder.
C++
1,383
star
2

spreed-webrtc

WebRTC audio/video call and conferencing server.
JavaScript
1,077
star
3

libde265.js

JavaScript-only version of libde265 HEVC/H.265 decoder.
JavaScript
573
star
4

nextcloud-spreed-signaling

Standalone signaling server for Nextcloud Talk.
Go
322
star
5

docker-webrtc-turnserver

Docker image for a TURN server suitable for WebRTC
Shell
97
star
6

vlc-libde265

Standalone plugin for VLC 2.x to support decoding of HEVC/H.265 using libde265.
C
89
star
7

gstreamer-libde265

HEVC/H.265 video decoder using libde265 (GStreamer plugin)
C
59
star
8

nextcloud-spreedme

Spreed.ME Nextcloud app
JavaScript
55
star
9

VLCKit

Fork of http://git.videolan.org/?p=vlc-bindings/VLCKit.git to integrate a version of VLC supporting libde265.
Objective-C
51
star
10

vlc-2.1

Fork of http://git.videolan.org/?p=vlc/vlc-2.1.git to integrate libde265. Main integration development happens in https://github.com/strukturag/vlc.
C
51
star
11

pdfdraw

Nextcloud app to annotate PDF documents
JavaScript
42
star
12

libde265-ffmpeg

h.265 codec for ffmpeg using libde265
C
40
star
13

heif-gimp-plugin

Plugin for GIMP to load HEIF files.
C
23
star
14

phoenix

Go library providing support functionality for application startup, configuration, logging, and profiling.
Go
17
star
15

vlc-ports-ios

Fork of git://git.videolan.org/vlc-ports/ios.git to integrate a version of VLC supporting libde265.
Objective-C
9
star
16

vlc-2.2

Fork of http://git.videolan.org/?p=vlc/vlc-2.2.git to integrate libde265.
C
8
star
17

httputils

Go support library for HTTP servers.
Go
7
star
18

libde265-data

Example video stream data for libde265.
6
star
19

spreedme-iosapp

Spreed.ME iOS app
Objective-C
6
star
20

xudnsd

Tiny single host/IP DNS server
Go
4
star
21

tlsdumpster

TLS dumpster prints incoming TLS requests details (host, url, headers and body) to stdout and aborts the request with HTTP status 500.
Go
4
star
22

sloth

Tiny REST framework for Go
Go
3
star
23

gst-plugins-good

GStreamer "good" plugins with support for HEVC/H.265 decoding using libde265
C
3
star
24

webrtc-ios

WebRTC fork for Spreed.ME iOS app
C++
3
star
25

spreed-turnservicecli

TURN service client implementation for Go
Go
3
star
26

sling

Go support library for HTTP clients
Go
3
star
27

goacceptlanguageparser

Go library for parsing HTTP request header "Accept-Language".
Go
2
star
28

file-browser-ios

File browser for iOS
Objective-C
2
star
29

SortedDictionary

Sorted dictionary class for iOS/ macOS
Objective-C
2
star
30

spreed-webrtc-snap

Spreed WebRTC Ubuntu Snappy Snapcraft build repository.
Python
2
star
31

lavfilters-ffmpeg

ffmpeg with custom patches for LAV Filters (deprecated and no longer required by https://github.com/strukturag/LAVFilters)
C
2
star
32

gst-plugins-bad

GStreamer "bad" plugins with support for HEVC/H.265 decoding using libde265
C
2
star