state of the gstreamer project - linux.conf.au · ecosystem of companies providing services around...

30
State of the GStreamer Project Jan Schmidt Centricular Ltd [email protected]

Upload: others

Post on 28-May-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

State of the GStreamer Project

Jan Schmidt

Centricular [email protected]

Page 2: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Who am I?

GStreamer developer since 2003Director & Engineer with Centricular Ltd

Page 3: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Introduction

I work here

for

Page 4: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Introduction

Which is here

Page 5: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Introduction

some chickens, cats, fruit trees...

With some of these

Page 6: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

GStreamer

● Pipeline-based multimedia framework● Basic building blocks – elements, connected

through pads

● filesrc location=test.mp3 ! decodebin ! pulsesink

Page 7: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Overview

● Open Source● Cross-platform

– Linux, embedded Linux, Windows, OSX, iOS, Android, …

– x86, ARM, PowerPC, SPARC, …

● Stable GObject based C API/ABI● Bindings for many languages

– Python, C++, JavaScript, .NET, …

Page 8: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Overview

● Not a media player or playback library● Not a codec and protocol library● Not a transcoding tool● Not a streaming server

● But can be (and is) used to implement all that

Page 9: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Overview

● Goals– Flexible and extensible design

– Easy to integrate with other software(in both directions)

● Large, active developer and user community● Ecosystem of companies providing services

around GStreamer and companies building their own products and services on top of GStreamer

Page 10: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

GStreamer Applications

● Media players● Audio/video editors, music composers● VOIP/video communication● Web browsers● Transcoders● Streaming servers and clients● … and many more

Page 11: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

A Brief History

0.0.1 – 10th Jun 1999

0.1.0 – 11th Jan 2001

0.2.0 – 7th Jun 2001

0.3.0 – 12th Dec 2001

0.4.0 – 5th Jul 2002

0.6.0 – 1st Feb 2003

- GNOME 2 integration

0.8.0 – 16th Mar 2004

0.10.0 – 5th Dec 2005

- Stable API guarantees

1.0.0 – 24 Sep 2012

- First API/ABI break since 2005

1.2.0 – 24 Sep 2013

1.4.0 – 19 Jul 2014

Currently 1.5 – 2 million lines of code

Page 12: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

GStreamer 1.0

● Released in 2012● First ABI/API break since 0.10 in 2005● New versioning scheme● Large changes to internals● Relatively small porting effort for apps

Page 13: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Measuring Project Health

● Number of commits/month

Page 14: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Measuring Project Health

● Lines of code/month

Page 15: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Measuring Project Health

● Number of authors/month

Page 16: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Measuring Project Health

● Commit size (lines/commit)

Page 17: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Conclusions

● Bugzilla stats would be interesting● Things have slowed down since 1.0● Less work, easier work, or just works?

Page 18: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Recent Developments

● OpenWebRTC– Open Source WebRTC implementation from

Ericsson Labs

● OpenGL integration– Integrated support for GPU processing operations

● Improving hardware resource usage– Better support for on-chip function units

– Hardware decoders and encoders

Page 19: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Demo

Page 20: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Recent Developments

● TVs – LG and Samsung– LG took over WebOS from HP

– Samsung hiring

● HLS/DASH improvements– Adaptive bitrate switching

– Trick modes

● RTSP retransmission– Improves performance under packet loss

Page 21: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Pitivi

● Ongoing development to make Pitivi work well● http://fundraiser.pitivi.org/

– Raised 22,510 € to fund development so far

● Driving some great development upstream– GstAggregator

– gst-validate

– gst-editing-services

Page 22: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Meanwhile, on the mailing list

● “Hi! Over the last few months I've been working on a project for the European Space Agency that is scheduled to be launched next year for use on the International Space Station, providing astronauts with a mobile procedure viewer in the form of a slightly modified Nexus 5 smartphone."

● Scheduled to go up in Q1/2015, I believe

Page 23: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

More...

● Network clock improvements– More stable & accurate

– Ongoing

Page 24: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

3D Movies

● Stereoscopic 3D video support– In progress

CC-by-nc-sa https://www.flickr.com/photos/louiswu/15394664278/in/set-72157648810821396/

Page 25: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Demo

Page 26: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

More...

● New Device Probing API– Easier discovery of camera and audio devices

– Demo

● Higher level APIs– GstPlayer API

Page 27: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Better Debugging

● Quality Assurance and tools– Continuous Integration

– New tracing subsystem

– gst-debug-viewer

– gst-validate & GstHarness

● gst-devtools repository

Page 28: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Work in Progress

● Bug-fixing/Maintenance● New codecs/formats● KLV● DVB/MPEG-TS improvements● Improving Wayland support● V4l2 encoder/decoder support● Better live mixing

Page 29: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Getting Involved

● IRC - #gstreamer on freenode● Mailing Lists – gstreamer-devel on

http://lists.freedesktop.org/● Bugzilla – http://bugzilla.gnome.org &

http://gstreamer.freedesktop.org/bugs

Page 30: State of the GStreamer Project - linux.conf.au · Ecosystem of companies providing services around GStreamer and companies building their ... – Open Source WebRTC implementation

Questions?Questions?