Google Summer of Code Ideas

Information for students

To learn more about GPAC, you can find information about the project history, some metrics, and a short description.

As indicated on KDE’s GSoC ideas page:

If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you’re looking at this page.

Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

If you have any question, please contact gsoc@gpac.io.

Ideas

 

Idea 1 : More support for 360 videos

Description

Google have added a documented XML metadata to describe the orientation and projection of their 360 videos, Facebook is doing similar things and MPEG has just published the OMAF standard.

GPAC already has native support for 360 videos from equirectilinear projections (video) and some cube map support for images QTVR, both including user navigation.

The aim is to include support for Google/Facebook/OMAF signaling within GPAC, both at the packaging side (MP4Box) and at the client side. Some extensions would be to add support for Youtube URLs in GPAC or support more projections and formats from other popular 360 video providers (Facebook, OMAF…).

Expected results

Play 360 videos from Youtube or other platforms with different projections.

Required skills/knowledge

Basic multimedia knowledge.
We can teach the trainee about the ISOBMF/MP4 muxer specifics.

Mentor:

Ahmed Rida Sekkat  (ahmed.sekkat@telecom-paristech.fr)
Backup Mentor: Jean Le Feuvre (jean.lefeuvre@gpac.io)

Idea 2 : Ambisonic and spatialized audio support for 360 navigation

Description

With the recent growth of 360 video applications, there is a need to provide immersive spatialized audio experience in media players. Two main approaches are used in the industry: object-based coding using multichannel setups, and ambisonic approaches.

GPAC already has support for some spatialization tools and multichannel audio formats.

The aim is to include support for libstatialaudio  in GPAC, and propose packaging guidelines for ambisonic content.

Expected results

Spatialized playback of ambisonic sound within GPAC.

Required skills/knowledge

C knowledge, basic multimedia knowledge.
We can teach the trainee about the ISOBMF/MP4 muxer specifics.

Mentor:

Ahmed Rida Sekkat  (ahmed.sekkat@telecom-paristech.fr)
Backup Mentor: Jean Le Feuvre (jean.lefeuvre@gpac.io)

Idea 3 : Simplify Testing for developers

Description

GPAC provides many tools, mostly playback, packaging and networking ones, with a large number of tests covering many aspects of these tools. At the current time, there is no way for a developper to know which tests should be run after a code modification, and the entire test suite should be re-run in order to check for any regression. This process is quite long and is therefore usually not done by the developer, but by the build bots.

The aim is to provide tools for the developer to simplify testing and code checking before any commits, effectively reducing the number of tests to be run to validate a commit.

Expected results

Faster, context-dependent test suite execution for GPAC developers.

Required skills/knowledge

Basic C knowledge, BASH and git knowledge.

Mentor:

Jean Le Feuvre (jean.lefeuvre@gpac.io)
Backup Mentor: Rodolphe Fouquet (rodolphe.fouquet@gpac.io)

Idea 4 : improve the Signals platform

Description

The GPAC team has started a C++11 initiative called Signals. Signals is a modular framework. It allows to easily separate components, to provide clean testable APIs, and to connect these components together. Signals is simple for both module and application makers. The Signals core is complex but small, TDDed, and architectured with independent layers.

Most of the work is about software architecture using modern C++.

Expected results

Improve the C++ kernel of Signals, make it more accessible and demonstrate new use-cases (to be discussed depending on your C++, multimedia, or system skills).

Required skills/knowledge

Modern C++ demonstrated skills.

Mentor:

Romain Bouqueau (romain.bouqueau@gpac.io)
Backup Mentor: Rodolphe Fouquet (rodolphe.fouquet@gpac.io)

Idea 5 : Improved GPAC dependency build using Zenbuild

Description

The GPAC team has extended a build system called Zenbuild. Zenbuild aims at building projects which usually causes troubles (e.g. FFmpeg with librtmp, Portaudio on Windows, etc.). It could also help with some license issues when distributing the software is not possible (e.g. FFmpeg non-free).

The GPAC framework includes a player. The player has a lot of dependencies including those generated by Zenbuild. The detection and test of these dependencies is hard and generate a lot of support from the GPAC team.

The aim is to develop a script that would generate all the player dependencies using Zenbuild and other packages already available. This may require some tweaking in Zenbuild itself.

One of the missing feature is also the update of dependencies. There is a current cache system. We need to add the version numbers in it.

Expected results

Build GPAC dependencies on popular platforms (covered by our build infrastructure and TravisCI) from a single script. Allow a GPAC static build with zero dependency. Add automatic builds made available as a cache. Add an update capability.

Required skills/knowledge

Basic build skills (make, shell script ; compile, link).
Knowledge on building on different platforms is a plus.

Mentor:

Rodolphe Fouquet (rodolphe.fouquet@gpac.io)
Backup Mentor:  Romain Bouqueau (romain.bouqueau@gpac.io)

Idea 6 : Security and exploits on the GPAC codebase

Description

Security is important when software is exposed to attackers. The GPAC team builds software used by millions of people through demuxers and players. These tools include bitstream parsers and a network stacks which offer surface for attacks. GPAC needs a security policy.

Security tools are also more widely available to developers such as static analyzers (Clang scan build, Coverity as a service), compile tools and options (ASAN) or dynamic (Valgrind, DynamoRIO framework) or independent frameworks (Frama-C). These tools need to be integrated in the existing build and test infrastructure.

Security is also a question of good practices. The GPAC community also identified a few weak points that would highly improved the security experience and mitigate some hard-to-track crashes.

Expected results

Set up a security infrastructure and demonstrate improvements on objective metrics over the GSoC duration (e.g. Coverity).

Required skills/knowledge

Proficiency in C, including pointers and memory management.
Interest in security.

Mentor:

Romain Bouqueau (romain.bouqueau@gpac.io)
Backup Mentor: Jean Le Feuvre (jean.lefeuvre@gpac.io)