Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update developer section, add Filter API tutorials #10

Merged
merged 6 commits into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 46 additions & 5 deletions docs/Developers/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,49 @@
---
title: GPAC developer guide
---

## Developer resources
## Contributing

A complex project like GPAC wouldn’t exist and persist without the support of its community. Please contribute: a nice message, supporting us in our communication, reporting issues when you see them … any gesture, even the smallest ones, counts.

## Getting support and reporting issues

Please use [github issues](https://github.com/gpac/gpac/issues) for feature requests and bug reports. When filing a request there, please tag it as feature-request.


## API documentation

The [API documentation](https://doxygen.gpac.io/modules.html) provides information on the GPAC Filter API.

GPAC's core is writen in C, but it can be easily extended using [Javascipt Filters](/Developers/javascript), used in a [Python](/Howtos/python) or [NodeJS application](/Developers/javascript).


## Tutorials

- [Intro to Filter Session](/Developers/tutorials/filter-session-intro)
- [Writing a custom Filter](/Developers/tutorials/custom-filter)


## Building

Detailed build [Build](/Build/Build-Introduction) instructions for MP4Box and GPAC on all supported platforms.


## Testing

Learn how to [build and run GPAC's test suite](/Build/tests/GPAC_tests).

The <a href="https://github.com/gpac/testsuite/tree/master/scripts" target="_blank">testsuite scripts</a> is always a good place to understand GPAC tools usage.


## Continuous integration

GPAC is continuously built and tested through a buildbot server:

* Build status of GPAC: <a href="https://buildbot.gpac.io" target="_blank">buildbot.gpac.io</a>
* Tests status of GPAC: <a href="https://tests.gpac.io" target="_blank">tests.gpac.io</a>


## Archives

* current build status of GPAC: <a href="https://buildbot.gpac.io" target="_blank">buildbot.gpac.io</a>
* current test suite status of GPAC: <a href="https://tests.gpac.io" target="_blank">tests.gpac.io</a>
* C API documentation: <a href="https://doxygen.gpac.io/modules.html" target="_blank"> doxygen.gpac.io</a>
* the <a href="https://github.com/gpac/testsuite/tree/master/scripts" target="_blank">testsuite scripts</a> might give you additional info on how to use GPAC tools
* tips and tricks in our [github discussions](https://github.com/gpac/gpac/issues?utf8=%E2%9C%93&q=) and our old [sourceforge forums](https://sourceforge.net/p/gpac/discussion/)
16 changes: 16 additions & 0 deletions docs/Developers/javascript.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

Javascript developers have two options to work with GPAC, the most appropriate solution depends on the project's goal:

## Javascript Filters

The JS filter API makes it easy to **extend gpac** using the internal QuickJS runtime, giving access to the Filter API for frame and packet processing, but also APIs foradaptative streaming, compositing, storage, ...
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

foradaptive -> for adaptive (missing space)


Some of the gpac built-in filters - eg. [avgen](Filters/avgen), [avmix](Filters/avmix) - are actualy implemented as custom javascript filters. Their source code can be found under the[`share/scripts/jsf`](https://github.com/gpac/gpac/tree/master/share/scripts/jsf) directory.

[JSF documentation](/Howtos/jsf/jsfilter){ .md-button }

## NodeJS

GPAC's NodeJS bindings allow **writing custom NodeJS applications**. It differs slightly from the Javascript Filters API available in the QuickJS runtime.

[NodeJS documentation](/Howtos/nodejs){ .md-button }
40 changes: 40 additions & 0 deletions docs/Developers/tutorials/GPAC-concepts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

## What is GPAC ?

The **GPAC Filter API** is at the core of the [MP4Box and GPAC](Howtos/gpac-mp4box) applications.

The `gpac` application allows building media pipeplines by conveniently [combining and configuring Filters](Filters/filters_general) from the command line.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pipeplines => pipelines


Filters are configurable processing units consuming and producing data packets.

GPAC provides a wide range of Filters supporting advanced media protocols, formats, codecs, for input, output and processing tasks.

It defines the infrastructure and helper classes to develop applications with advanced media capabilities.


### Concepts

**Filter Session**

- [API documentation](https://doxygen.gpac.io/group__fs__grp.html#details)
- [tutorial](https://git.gpac-licensing.com/slarbi/API_FIlters_tutos/src/branch/master/T0_Filters_session/simple%20gpac%20session.md)

**Filter**
- [API documentation](https://doxygen.gpac.io/group__fs__filter.html#details)

**Filter Properties**
- [API documentation](https://doxygen.gpac.io/group__fs__props.html#details)
- [Built in Properties](https://wiki.gpac.io/Filters/filters_properties/?h=properties)

**Filter Events**
- [API documentation](https://doxygen.gpac.io/group__fs__evt.html#details)

**Filter PIDs & Capabilities**
- [API documentation](https://doxygen.gpac.io/group__fs__pid.html)

**Filter Packet**
- [API documentation](https://doxygen.gpac.io/group__fs__pck.html#details)

**Custom Filter**
- [doxygen](https://doxygen.gpac.io/group__filters____cust__grp.html#details)
- [writing a custom Filter]()
Loading