Skip to content

Releases: gpac/gpac

GPAC 2.4

17 Apr 17:30
Compare
Choose a tag to compare

We are happy to announce the release of GPAC 2.4

This release marks the beginning of GPAC in your browser with emscripten support, with a live demo at https://wasm.gpac.io !

This release also brings many new features including pcap support, async net IOs, JIT packaging for on-demand content and better subtitle/CC support.

As usual, installers are available on gpac.io for most common platforms.

Enjoy, give us feedback and spread the news!

Detailed changes:

Emscripten|WebAssembly(WASM) support

  • Session can run in worker or in main browser loop
  • Automatic disable of ffdec and ffenc threads when not running in worker
  • Use fetch() api for downloader
  • Support for WebCodecs
  • Support for getUserMedia and canvas readable streams
  • gpac.html demo page

Media Formats

  • Fixes in text subtitle converters
  • Improved DolbyVision muxing from mkv
  • Dasher support for inputs with multiple stsd entries
  • Allow multiplexed representations for LL-HLS
  • Improved eac3 support
  • QT cmov support (reading and writing)
  • QT lpcm support
  • Improved chaptering support
  • Improved timecode inspection
  • Support for big-endian PCM formats
  • Support for uncv (raw video in mp4 and heif)
  • Support for forced subtitles
  • Support for HEVC bitstreams merging in dash (for multi-res tile adaptation)

Filters

  • Async HTTP request in all filters
  • JS/Python/NodeJS bindings for httpout server
  • Fixed CORS and mime types in httpout for wasm and sharedArrayuffer support
  • Allow compilation without threads
  • Allow compilation without network
  • Fixed GF_FileIO for async read and write modes
  • Added seeking in mp4dmx in mem mode
  • vout updated to use VBO (required for gles2)
  • libcaca video output support
  • Allow ffdmx to work as demux filter on gpac input file pids
  • GHI format for pre-indexing DASH/HLS session for JIT packaging/encryption/transcode
  • Zero-copy for mp4dmx and fragmented mp4mx
  • Various speed optimizations (filter session, isomedia lib, disk io, xml)
  • Allow running the session without mutexes
  • Closed Caption decoding filter (CEA708)
  • MPEG-H decoder using IIS mpeghdec
  • Templating for property assignment
  • Conditional filter replacement to identify based on codecID
  • Per-filter logging

MP4Box

  • Add track reordering option

Misc

  • Migrated doc from github's wiki to wiki.gpac.io
  • FFMPEG 7 support
  • Added features for configure (vout, aout, fonts, doc, evg)
  • Allow specifying network interface by name or IP (instead of IP only)
  • UDP/TCP filtering and recording to / playback from pcap, pcapng and GPAC gpc files
  • Added Nix and Docker build files
  • many bug fixes, improvements and security patches

GPAC 2.2.1

27 Apr 08:44
Compare
Choose a tag to compare

This is a security release containing backports of fixes for various CVEs.

Installers are available at gpac.io for most platforms. It can also be built from source by following the various guides on the wiki.

Detailed changes:

Security

Fixes for these security issues

GPAC 2.2

19 Dec 16:12
Compare
Choose a tag to compare

We are happy to announce the release of GPAC 2.2

This release marks the end of MP4Client/Osmo4/Osmo4Ios/Osmo4Android, with gpac being used for all platforms - Android app now supports running gpac and MP4Box command line as well as running the GUI.

This release also brings better support for MKV, DolbyAtmos and DolbyVision.

As usual, installers are available on gpac.io for most common platforms.

Enjoy, give us feedback and spread the news!

Detailed changes:

Media Formats

  • 2-pass encoding for FFmpeg codecs other than libx264
  • Conversion filters for VTT, TXG3 and TTML
  • SubstationAlpha subtitle import (basic)
  • DVB subpictures in M2TS mux and demux
  • FFMPEG (mostly for Matroska) subtitle import and export (SRT/SSA to TX3G, TX3G to SRT, WebVTT and DVB subpictures)
  • EC3+Atmos signaling support
  • ALAC support
  • Improved DolbyVision muxing

Media player

  • subtitle delay and position adjustment
  • audio delay adjustment

MP4Box

  • allow numbers and media types as identifiers for track actions
  • dlba option to update atmos+ec3 signaling

Filters

  • UTC-based range extraction in reframer
  • Thumbnail generator filter
  • Added unframer filter
  • FFMPEG bitstream filters support
  • initseg support in mp4dmx filter
  • Access to GPU textures of decoders in Python and JSF bindings (glpush filter for tests)
  • Chapters editing and original timestamp dispatch in reformer range extraction
  • dual in-band and out-of-band parameter set support in dasher
  • non-blocking IO for RTSP and HTTP servers/clients
  • RTSP over HTTP in rtsp server
  • Source-Specific multicast for udp and rtp inputs
  • User Authentication for HTTP and RTSP servers
  • TLS support for RTSP client and server
  • Per-filter buffering options

Encryption

  • ClearKey support in dasher and decryption

Misc

  • QT metadata tags in MP4Box and qt muxer
  • support for some packet properties in URL templates

GPAC 2.0

22 Feb 16:16
Compare
Choose a tag to compare

We are happy to announce the release of GPAC 2.0, packed with new features!

This release brings support for Python and NodeJS: you can now interact with GPAC media pipelines using these languages, from basic session processing down to packet-level manipulations.

A new JSON-based video editor called avmix has landed in GPAC: it is designed for typical live processing tasks (scheduling, animations and transitions, graphics/text insertion) running from command line with or without GPU.

A lot of work has been put on HLS support for both client and packager, with support for low latency HLS.

MP4Box has been improved as well and is now capable of in-place rewrite, resulting in much faster IOs when editing files.

As usual, installers are available on gpac.io for most common platforms.

Enjoy, give us feedback and spread the news!

New features

Adaptive Streaming

  • Low Latency HLS (LL-HLS, generation and playback)
  • Custom forwarding modes of DASH reader, allowing for example to encrypt/decrypt a live DASH/HLS session
  • DASHing now possible using inband cues (generated by flist, dashin or dasher filters)
  • Cue-generation only mode for dasher
  • HLS/DASH signaling of intra-only representations
  • playback improvements for SRD (HEVC tiling and independent streams)
  • CMAF-compatible signaling
  • PPS injection for inband parameter set modes
  • Improved SmoothStreaming support
  • DASH period continuity support (from playlists or reframer)
  • DASH MPD Chaining support
  • Text segments in native format (WebVTT, TTML) in dasher
  • User tags injection for HLS master and variant playlists

Image File Format (HEIF)

  • Grid creation and other derived images
  • Encryption
  • Time range in -add-image
  • Item to sample data reference (no copy)
  • Item to item data reference (no copy)
  • Generic auxiliary image tagging
  • Image replacement in HEIF collection
  • AV1 (AVIF) and VVC support

MP4Box

  • In-place editing (no file remultiplexing)
  • Improved splitting, including sample-accurate split
  • ISOBMFF edit lists modification through :edits and -edits options
  • Track extraction from non ISOBMFF sources in MP4Box
  • Most import options can now be applied on an existing ISOBMF file or track
  • Multiple filter chains per source in -dash or -add modes
  • Chunk interleaving dumper

Filters

  • Simplified gpac command line (backward compatible syntax) avoiding links directives for common cases
  • Added avmix, a playlist-based audio video mixer/compositor with GPU or software rendering
  • Python bindings for filter session
  • NodeJS bindings for filter session
  • Custom HAS adaptation algorithms (JS, Python and NodeJS)
  • Custom Remotery callbacks (JS, Python and NodeJS)
  • Added avgen, a simple counter generation
  • Splicing support in playlists: raw and compressed domain, vod and live splicing
  • Tile splitting now available as a filter
  • Added restamp, a stream timestamp rewriter filter
  • Added bssplit and bsagg, compressed bitstream splitter and aggregator filters
  • Aspect ratio support in rescaler (ffsws)
  • Raw (uncompressed) modes for flist and reframer
  • Flip and rotate in vout
  • Simple UI for vout to test seeking and speed modes
  • Improved color space support in rendering (OpenGL only)
  • Improved round-trip audio decode
  • Improved audio resampler
  • Added back old arch compositor features (TEMI support, HEVC tiling JS monitoring, MPEG-4 SegmentDescriptor)
  • Reading back frame interface data (GPU, decoder mem) in JS or Python sink filters
  • Memory storage in httpout server file sink
  • FileIO wrapper available in QJS, Python and NodeJS

Protocols

  • HTTP/2 (client and server) through nghttp2
  • ROUTE multiplexer and low-latency ROUTE (mux and demux)

Media Formats

  • Improved MPEG-H audio mux/demux/dashing
  • VVC parsing, inspecting, mux/demux (ISOBMFF, M2TS), RTP, DASH and encryption
  • VUI color info rewrite for AVC, HEVC and VVC (mp4box and bsrw filter)
  • Dolby TrueHD
  • DolbyVision muxing
  • Improved multichannel AAC (>=8) support
  • Improved raw video in ISOBMFF support
  • Bitstream dumping for inspect analyze mode
  • Improved TTML support: metrics, image embedding (IMSC1), TTML sample merging while exporting, subtitle zero in TTML
  • YouTube VR meta-data
  • yuv4mpeg format read/write
  • Extended NHML syntax for properties, reconfiguration, subsamples and sample auxiliary data

Encryption

  • Multi-key per sample encryption
  • HLS full segment encryption and decryption
  • Per-segment or per-period key roll
  • Master/leaf key schemes

Misc

  • Improved HTTP rate limiter and chunk-transfer rate estimator
  • Cleanup of mod-dirs and js-dirs usage, JS filters can now be included in the default available filters
  • Support for windows long path
  • Moved to latest QuickJS (2021-03-27)
  • Added QJS-libc modules, support for exec/waitpid/kill and Workers on most platforms
  • Support for FFmpeg 4.4 +
  • many bug fixes, improvements and security patches

GPAC 1.0.1

10 Sep 16:40
Compare
Choose a tag to compare

This release fixes build and installation issues in 1.0.0, as well as various bugs introduced during the migration to the filters architecture.

It also adds several small features:

  • better ttml import
  • better support for MPEGH audio
  • support fur DASH UTCTiming
  • manifest generation from pre-fragmented DASH/HLS mp4
  • speed optimization in isobmf reading (normal and fragmented)
  • improved JS API for the filter session
  • core tools exposed as JS module (file io, bitstream, etc ...)
  • android fixes

GPAC 1.0

16 Jun 16:52
Compare
Choose a tag to compare

We are thrilled to announce the release of GPAC 1.0, the first official release of GPAC "filters", a complete re-architecture of GPAC streaming core.

You can have a quick overview of the new possibilities of GPAC in our fosdem 2020 talk or our MMSYS'20 presentation.

A lot of new things are present in this release:

  • Complete rewrite of GPAC streaming core:
    • addition of a filter-based architecture, used by MP4Client and MP4Box,
    • moving all decoders and demuxer plugins of MP4Client and most of MP4Box import/export code as filters for this new architecture,
    • moving DASH/HLS segmenter to a filter,
    • moving MP4Client compositor and most of the GF_Terminal internals to a filter,
    • addition of a new application gpac, whose only purpose is to create and run filter chains,
    • removal of MP42TS and DashCast applications since these functionalities are provided by gpac,
    • deprecation of some features (widget management, MSE draft implementation for SVG media, UPnP, TEMI player support).
  • Profile system allowing to override through a static file default options of all filters and libgpac core.
  • Alias system for gpac app to simplify your command lines.
  • Enhanced DASHer:
    • Support for HLS and dual HLS / DASH generation.
    • Support for any input.
    • True low-latency mode for DASH.
    • Support for multiple periods.
    • Support for other segment formats (raw, mkv, webm currently tested).
  • Input and outputs
    • Generic pipe, TCP, UDP, and Unix Domain socket input and output.
    • RTSP server output.
    • HTTP output (client and server), supporting low latency DASH access.
    • Ad-hoc stream format called GSF to allow serialization to file, pipe or socket of a session (for distributed filter chains), supporting AES-128 CBC encryption.
  • Raw audio (PCM) and video (RGB, YUV) reframers and exporters.
  • HEVC tile spliting and merging filters.
  • Compositor is a standalone filter (SVG/BIFS/VRML graphics in a filter chain).
  • Image encoding support through libjpg and libpng.
  • Full FFMPEG support:
    • Encoding/decoding through FFMPEG libavcodec.
    • Multiplexing/demultiplexing through FFMPEG libavformat.
    • Device grabbers through FFMPEG libavdevice.
    • Raw audio and video filters through FFMPEG libavfilter.
  • Support for QuickJS (ES2020) and bindings for:
    • Complete filter API.
    • GPAC software rasterizer (EVG).
    • WebGL 1.0 Core.
    • XmlHttpRequest and uDOM APIs.
    • Storage.
  • Inspect and analyze filter.
  • MPEG-2 TS splitter.
  • Video cropper filter with zero-copy mode.
  • Video flip filter.
  • Source concatenation filter.
  • Simple audio and video output filters.
  • Experimental audio and video rewinder filter.
  • Encryption:
    • On-the-fly encryption and decryption, now available as filters.
    • Segment-based encryption and decryption.
  • ISOBMFF:
    • Box customization.
    • Better QT support, ProRes parsing and dumping.
    • Support for raw media (QT style or ISOBMFF for audio).
    • Simplify HEIF batch conversion through item to track mapping.
    • Reading from pipes (fragmented or progressive files).
    • Writing to packets rather than files.
    • Fast interleaved file creation mode with less storage requirements.
  • FileIO wrapper for cases where files are not stored in a file system known by GPAC.
  • Testing and Documentation:

As usual, installers are available on gpac.io for most common platforms.

Enjoy, give us feedback and spread the news !

0.9.0 Preview

15 Jun 18:20
Compare
Choose a tag to compare
0.9.0 Preview Pre-release
Pre-release

Preview release of GPAC new architecture

GPAC 0.8.1

15 Jun 15:44
Compare
Choose a tag to compare

The 0.8.1 release will be the last release of GPAC under the old architecture (pre-filters).

The 0.8.1 release features:

  • support for Dolby Vision meta-data tagging in ISOBMFF
  • improved QT support
  • bug fixes and security fixes

The code of 0.8.1 will be available in the legacy branch for a while, however no new features will be added to this branch, only critical bug fixes will be done. The installers for this branch will be available for the lifetime of the branch.

GPAC version 0.8.0

27 Jun 11:07
Compare
Choose a tag to compare

We are happy to announce the new release 0.8.0 of GPAC, featuring AV1, full CENC and ATSC3.0 support.

General

  • Many security fixes (static compile and fuzzing through AFL, always ongoing).
  • Many bugs fixes
  • Added :ncl option in log levels to disable color logs
  • More tests and coverage

File Formats

  • Better support of QTFF / ProRes files
  • Support for AV1
    -- import and export
    -- source formats: OBUs (Section 5), IVF and AnnexB
    -- AV1 in HEIF
  • Support for color (nclc, nclx and ICC profiles) in HEIF and ISOBMFF
  • Support for HDR (mdcv, clli) info in HEIF and ISOBMFF
  • Support for alpha in HEIF
  • Support for enforcing pasp presence even for 1:1 ratios
  • HEVC temporal sublayer split in MP4Box
  • Allow meta storage before mdat for meta-only files (heif and co)
  • Added option to keep AU delimiter in isobmff samples
  • Support for opus import
  • Support for pixi and ccst in HEIF
  • DolbyVision 'dvcC' and partial 'dvhe' boxes for HDR
  • Support for VP9 import and playback
  • Sample dependency in avc and hevc importers, and track thinner for non-refs images
  • Support for audio_roll signaling
  • New audio import mode to control AudioSampleEntry creation (v0, v1 ISOBMFF, v1 QTFF)
  • xHE-AAC import with detection of sync samples
  • Added support for MPEG-H 3D audio boxes (no import yet)
  • Handle Vobsub empty SPU packets
  • Added auxv and pict support

Common Encryption

  • Fully compliant CENC supporting cenc, cens, cbc1 and cbcs
  • CENC for AV1
  • Improved DASH+CENC support, pssh in MPD
  • ForceClear mode for CENC to skip encryption without sample groups
  • Made senc in movie fragments always stored before truns
  • Added default values handling for cbcs and possibility to set protection system per track
  • Compatibility with OpenSSL 1.1.x

Streaming and Adaptive Streaming

  • Support for ATSC3.0 both US and Korean versions !
  • Support for for live splices (xlink period insertions) in DASH client
  • Automatic period continuity in DASH when no codec change between periods
  • Added DASH cue-base segmentation (XML based) and -dsap option to generate cue files from source
  • Support for BBA-0 and BOLA implementations
  • Write fragment defaults in trex even when not using them
  • Support for simple ssix for keyframe data byterange at the start of a segment
  • Moved segment template at AdaptationSet level if only one representation
  • Changed default bsmode in dasher if single input file
  • Added init-seg-ext option
  • Added -mvex-after-traks option to MP4Box when dashing for CMAF
  • Added segmentation option to insert a tfdt per traf
  • Added -closest mode for DASH segmentation
  • Added -bound option to use audio segmenting method for video
  • Renamed -dash-run-for to -run-for
  • Added '=' in dash templates
  • Improved bandwith estimation when using HTTP 1.1 chunk transfer
  • Add option to force moof base offsets

MP4Box

  • Added -catpl to concatenate from playlist in MP4Box
  • Added options to set movie timescale at import and dash time
  • Added mpd rip option and top-level box compressor in MP4Box
  • Made -dts skip timing check and added -dtsc for that
  • Made force-cat option more agressive
  • Support for MovieFragmentRandomAccess using -mfra option
  • Added -dtsx to dump timing without offset
  • Added -dnalc opt for nal CRC dump
  • Added chunk extraction up to time until end
  • ISOBMFF single track import now removes references by default

Decoders

  • Updated ffmpeg to 4.0.2
  • Moved to openHEVC 3.0 API
  • Added nvdec support (windows, linux) with reuse of decoder context for tiled VR
  • Added HEVC support to mediacodec on android
  • AV1 playback through ffmpeg
  • Opus playback through ffmpeg

3D, VR and 360

  • Added vrhud for multiviewpoint 360
  • Added forced visibility mode of tiles in VR
  • Added tile visibility debug mode
  • Added forced stereo output for openhevc
  • Disable face nav if mouse grabbed
  • Added simple face tracking vr navigation based on udp commands
  • Added PSVR support
  • Added mouse move emulation at window border to force sphere rotation when inactive
  • Changed tile visibility algo to sample points in mesh

Players (Mobile and Desktop)

  • Added about extension
  • Added multiple audio objects in dynamic scene
  • Added addon splicing of main content
  • Added mosaic://v1:.:vN url support
  • Added gaze simulation through mouse and gaze-sphere visibility test

Subtitles

  • Allow * as argument of -srt|ttxt to dump all possible tracks (#925)
  • Improved support for WebVTT import
  • Improved support for WebVTT DASHing/fragmentation

Misc

  • OSX install now done through PKG and modify PATH env in/etc/paths
  • Added initial PMT version and disc marker to TS muxer
  • Moved dektec output to matrix API, added SDI clipping
  • Added temi periodic toggle and manual toggle in MP42TS

GPAC 0.7.1

26 Apr 11:34
Compare
Choose a tag to compare

Minor bug fixes from 0.7.0