Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into add-repair-url-op…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
touatily committed May 7, 2024
2 parents 493a6ee + a01b703 commit b813bd3
Show file tree
Hide file tree
Showing 112 changed files with 5,980 additions and 3,005 deletions.
42 changes: 28 additions & 14 deletions Changelog
@@ -1,4 +1,15 @@
# On-going: GPAC 2.3-DEV
# Ongoing: GPAC 2.5-DEV

## gpac
- Added mode for testing defered graph linking apps

##Emscripten
- Fixes in UI

## Filters
- experimental DVB-I MABR flute demux

#04/2024: GPAC 2.4

## Emscripten|WebAssembly(WASM) support
- Session can run in worker or in main browser loop
Expand Down Expand Up @@ -32,6 +43,7 @@
- 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
Expand All @@ -41,17 +53,19 @@
- 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 6 support
- 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


# 19/12/2022: GPAC 2.2
Expand All @@ -61,7 +75,7 @@
- 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)
- 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
Expand All @@ -78,7 +92,7 @@
- UTC-based range extraction in reframer
- Thumbnail generator filter
- Added unframer filter
- FFMPEG bitstream filters support
- 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
Expand Down Expand Up @@ -238,11 +252,11 @@ It also adds several small features:
- HEVC tile splitting 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
- 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 (ES2002) and bindings for:
* Complete filter API
* GPAC software rasterizer (EVG)
Expand Down Expand Up @@ -721,7 +735,7 @@ It also adds several small features:
- fixed 3GPP text display bug when stopping and changing an animationStream using a 3GPP text object.
- fixed AVC/H264 HP parsing
- added BIFS track visual size info at BT/XMT encoding stage
- MOVED FFMPEG INCLUDE FILES TO LATEST CVS VERSION to support AVC/H264 HP decoding
- MOVED FFmpeg INCLUDE FILES TO LATEST CVS VERSION to support AVC/H264 HP decoding
- added meta self reference item for dual-headed files
- commit MPEG-4 LATM Audio hinting patch and added rtp aggregation. RTP reassembler NOT UPDATED YET
- fixed bugs in TeXML parser
Expand Down Expand Up @@ -867,7 +881,7 @@ It also adds several small features:
- Xiph OGG demuxer: supports file, http download (not tested) and icecast servers.
- Xiph Vorbis decoder
- Xiph Theora support (should work with fluendo but I can't get any data from the server...)
- Better FFMPEG support (moved to latest ffmpeg cvs tarball).
- Better FFmpeg support (moved to latest ffmpeg cvs tarball).
- all file associations in client are made through mime types, and changed handling of service (mime type query if possible before loading plugin)
- network stats & changed all UIs for that.
- decoder stats & changed all UIs for that.
Expand Down Expand Up @@ -1071,16 +1085,16 @@ It also adds several small features:
- PocketPC installer
- OpenDivx plugin
- clean-up extra lib package, install notes and added missing libs
- FFMPEG demuxer done (synchro not good and seeking pbs). GPAC now supports all FFMPEG-supported formats.
- FFmpeg demuxer done (synchro not good and seeking pbs). GPAC now supports all FFmpeg-supported formats.
- new NSIS script for complete install
- fixed hang on PocketPC WavOut and misc cleanups for PocketPC compilation
- H263 in 3GP files (use FFMPEG dec)
- H263 in 3GP files (use FFmpeg dec)
- H263 streaming (RFC 2429)
- B-frame parsing and CTS reconstruction in AVI importer (needs debug).
- muxInfo.duration parameter is now in milliseconds (was in seconds)
- '-node' options to MP4Box to get a given node syntax (fields default value and QP info)
- relative time stamps in BT ('AT D1000 ' means 'at last AU TS + 1000')
- FFMPEG decoder plugin now working with latest CVS snapshot
- FFmpeg decoder plugin now working with latest CVS snapshot
- MediaControl switching (several MC on single object)
- separate file downloader API and streaming client API / cleanup of plugins and ESM module
- base support for non-MPEG4 URLs in the scene (eg, url "http://whatever/resource")
Expand Down
51 changes: 49 additions & 2 deletions Makefile
Expand Up @@ -9,7 +9,7 @@ endif

vpath %.c $(SRC_PATH)

all: version
all: version unit_tests
$(MAKE) -C src all
$(MAKE) -C applications all
ifneq ($(STATIC_BINARY),yes)
Expand Down Expand Up @@ -54,7 +54,7 @@ depend:
$(MAKE) -C applications dep
$(MAKE) -C modules dep

clean:
clean: unit_tests_clean
$(MAKE) -C src clean
$(MAKE) -C applications clean
$(MAKE) -C modules clean
Expand All @@ -77,6 +77,53 @@ doc:
man:
@cd $(SRC_PATH)/share/doc/man && MP4Box -genman && gpac -genman


UT_CFG_PATH:=unittests/build/config

unit_tests:
ifeq ($(UNIT_TESTS),yes)
@echo "Unit Tests:"
@echo "- configuring"
@mkdir -p unittests/build/bin/gcc

@cp config.mak unittests/build/
@sed 's|BUILD_PATH=$(BUILD_PATH)|BUILD_PATH=$(BUILD_PATH)/unittests/build|g' config.mak | \
sed 's|-I"$(BUILD_PATH)"|-I"$(BUILD_PATH)/unittests/build"|g' > $(UT_CFG_PATH).mak.new
@if [ -e $(UT_CFG_PATH).mak ]; then \
if ! diff -q $(UT_CFG_PATH).mak $(UT_CFG_PATH).mak.new >/dev/null ; then \
mv $(UT_CFG_PATH).mak.new $(UT_CFG_PATH).mak; \
fi; \
else \
mv $(UT_CFG_PATH).mak.new $(UT_CFG_PATH).mak; \
fi

@sed 's/GF_STATIC static/GF_STATIC GF_EXPORT/' config.h > $(UT_CFG_PATH).h.new
@if [ -e $(UT_CFG_PATH).h ]; then \
if ! diff -q $(UT_CFG_PATH).h $(UT_CFG_PATH).h.new >/dev/null ; then \
mv $(UT_CFG_PATH).h.new $(UT_CFG_PATH).h; \
fi; \
else \
mv $(UT_CFG_PATH).h.new $(UT_CFG_PATH).h; \
fi

@$(SRC_PATH)/unittests/build.sh > unittests/build/bin/gcc/unittests.c

@echo "- building"
@cd unittests/build && $(MAKE) -C src && $(MAKE) -C src unit_tests

@echo "- executing"
$(SRC_PATH)/unittests/launch.sh

@echo "- done"
endif

unit_tests_clean:
ifeq ($(UNIT_TESTS),yes)
@echo "Cleaning unit tests artifacts"
@rm -rf unittests/build/bin
@cd unittests/build && $(MAKE) -C src clean
endif

test_suite:
@cd $(SRC_PATH)/testsuite && ./make_tests.sh -precommit -p=0

Expand Down
25 changes: 13 additions & 12 deletions README.md
Expand Up @@ -25,9 +25,9 @@

# GPAC Introduction

Current version: 2.3-DEV
Current version: 2.5-DEV

Latest Release: 2.2
Latest Release: 2.4

GPAC is an open-source multimedia framework focused on modularity and standards compliance.
GPAC provides tools to process, inspect, package, stream, playback and interact with media content. Such content can be any combination of audio, video, subtitles, metadata, scalable graphics, encrypted media, 2D/3D graphics and ECMAScript.
Expand Down Expand Up @@ -60,25 +60,25 @@ GPAC can process, analyse, package, stream, encode, decode and playback a wide v
- Python and NodeJS bindings

Features are encapsulated in processing modules called filters:
- to get the full list of available features, you can run the command line `gpac -h filters` or check [filters' wiki](https://wiki.gpac.io/Filters/Filters/).
- to get the full list of playback features, check [the dedicated wiki page](https://wiki.gpac.io/Player/Player/).
- to get the full list of available features, you can run the command line `gpac -h filters` or check [filters' wiki](https://wiki.gpac.io/Filters/Filters).
- to get the full list of playback features, check [the dedicated wiki page](https://wiki.gpac.io/Player/Player).


# Tools

## MP4Box
MP4Box is a multi-purpose MP4 file manipulation for the prompt, featuring media importing and extracting, file inspection, DASH segmentation, RTP hinting, ... See `MP4Box -h`, `man MP4Box` or [our wiki](https://wiki.gpac.io/MP4Box).
MP4Box is a multi-purpose MP4 file manipulation for the prompt, featuring media importing and extracting, file inspection, DASH segmentation, RTP hinting, ... See `MP4Box -h`, `man MP4Box` or [our wiki](https://wiki.gpac.io/MP4Box/MP4Box).


## gpac
GPAC includes a filter engine in charge of stream management and used by most applications in GPAC - [read this post](https://wiki.gpac.io/Rearchitecture) for more discussion on how this impacts MP4Box.
The gpac application is a direct interface to the filter engine of GPAC, allowing any combination of filters not enabled by other applications. See `gpac -h`, `man gpac`, `man gpac-filters` or [our wiki](https://wiki.gpac.io/Filters) for more details.
GPAC includes a filter engine in charge of stream management and used by most applications in GPAC - [read this post](https://wiki.gpac.io/Filters/Rearchitecture) for more discussion on how this impacts MP4Box.
The gpac application is a direct interface to the filter engine of GPAC, allowing any combination of filters not enabled by other applications. See `gpac -h`, `man gpac`, `man gpac-filters` or [our wiki](https://wiki.gpac.io/Filters/Filters) for more details.

# Getting started
## Download
Stable and nightly builds installers for Windows, Linux, OSX, Android, iOS are available on [gpac.io](https://gpac.io/downloads/).

If you want to compile GPAC yourself, please follow the instructions in the [build section](https://wiki.gpac.io/Build-Introduction) of our wiki.
If you want to compile GPAC yourself, please follow the instructions in the [build section](https://wiki.gpac.io/Build/Build-Introduction) of our wiki.

## Documentation
The general GPAC framework documentation is available on [wiki.gpac.io](https://wiki.gpac.io), including [HowTos](https://wiki.gpac.io/Howtos/howtos/).
Expand Down Expand Up @@ -116,8 +116,9 @@ Users are encouraged to use the latest tag or the master branch.

## V2.X
Targets:
- [ ] Web integration (emscripten, Remotery UI)
- [ ] DASH event support
- [ ] Better TTML2 / SMPTE ST 2052-1 support
- [ ] GUI cleanup ?

- [ ] Web GUI
- [ ] QUIC support
- [ ] ROUTE file repair support
- [ ] FLUTE support
- [ ] Rust Bindings

0 comments on commit b813bd3

Please sign in to comment.