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.