GPAC Changelog

What's new in GPAC 2.4

Apr 18, 2024
  • 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

New in GPAC 2.2 (Dec 20, 2022)

  • 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

New in GPAC 1.0.1 rev 0 (Sep 11, 2020)

  • 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

New in GPAC 0.8.0 rev 1 (Jun 27, 2019)

  • 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

New in GPAC 0.7.0 rev 0 (Oct 24, 2017)

  • Overview of the community activity:
  • ~1550 commits since 0.6.0.
  • Launched a few side projects - cf https://github.com/gpac/.
  • New test public infrastructure.
  • General:
  • Many security fixes (static compile and fuzzing through AFL, always ongoing).
  • Colorized log.
  • Changed default audio volume to 100% instead of 75%.
  • Expose more experimental options through the documentation.
  • Improved GLES renderer on mobile platforms.
  • Improvements on AVI dump.
  • Fixed pkg-config Private.libs.
  • SAT>IP playback support.
  • Codecs and File Formats:
  • Added L-HEVC File Format support (SHVC/MV-HEVC tracks and HEVC Tile Tracks).
  • Added MPEG IFF (image File Format) support.
  • Range extension support for AVC and HEVC.
  • SHVC and MV-HEVC importers and playback: moved to final spec version (SHM6+).
  • Adaptive streaming:
  • Support of HLS with fragmented MP4 playback.
  • APIs: gf_mpd_() functions and new segmenter API.
  • Improved alternate groups.
  • More support for PIFF PSEC and Smooth Streaming ( file format & playback).
  • DASH client: pluggable algorithms + improvements with scalable contents.
  • The counter source from the DASH sequences added to the public content.
  • HLS and DASH playback minor fixes.
  • DASH client logs are clearer.
  • VR and 360:
  • Added support for DASH SRD in 360 for independent videos videos (NxM partial spheres) more
  • Added support for DASH SRD in 360 for HEVC tiled videos (NxM tiles on one sphere) - checkout tuto
  • Mobile:
  • Apple VideoToolBox hardware decoding support for OSX and iOS for AVC|H264.
  • Android hardware decoding hardware acceleration for AVC|H264 (HEVC on its way).
  • YUV422 and YUV444 8 and 10 bit support in GLES renderer.
  • Android build is based on Android Studio.
  • Android: new File Manager.
  • Subtitles:
  • Import of TTML via NHML according to MPEG-4 part 30 improved.