SLIDE 1
WHAT'S NEW IN GSTREAMER? WHAT'S NEW IN GSTREAMER? FOSDEM 3 - - PowerPoint PPT Presentation
WHAT'S NEW IN GSTREAMER? WHAT'S NEW IN GSTREAMER? FOSDEM 3 - - PowerPoint PPT Presentation
WHAT'S NEW IN GSTREAMER? WHAT'S NEW IN GSTREAMER? FOSDEM 3 February 2018, Brussels Tim-Philipp Mller < tim@centricular.com > INTRODUCTION INTRODUCTION WHO AM I ? WHO AM I ? GStreamer core developer, maintainer, backseat release
SLIDE 2
SLIDE 3
WHO AM I ? WHO AM I ?
GStreamer core developer, maintainer, backseat release manager Centricular co-founder
SLIDE 4
WHAT IS GSTREAMER ? WHAT IS GSTREAMER ?
Most of you know this, so key points only.
SLIDE 5
Framework for multimedia processing. Cross-platform, toolkit agnostic. Any and all use cases. Set of libraries and plugins. Abstract API, very extensible. We oen wrap other libraries.
SLIDE 6
Low-level API and high-level API: playbin, encodebin, RTSP server, non-linear editing, VoIP etc.
SLIDE 7
Integration with other frameworks and projects e.g. WebKit/Blink, Clutter, OpenGL Windows, OS X, Android, iOS Goal is to adapt to and integrate with
- ther platforms and frameworks
(inputs, outputs, decoders, DSPs/GPUs..)
SLIDE 8
SO, WHAT HAVE WE BEEN UP TO ? SO, WHAT HAVE WE BEEN UP TO ?
SLIDE 9
RELEASES! RELEASES!
- 1.12: May 2017
- 1.14: coming up real soon now
SLIDE 10
SOME THINGS THAT LANDED IN 1.12 ... SOME THINGS THAT LANDED IN 1.12 ...
SLIDE 11
VIDEOSCALE + VIDEOCONVERT VIDEOSCALE + VIDEOCONVERT
Multi-threaded scaling and conversion.
SLIDE 12
TIMED TEXT MARKUP LANGUAGE (TTML) TIMED TEXT MARKUP LANGUAGE (TTML)
New ttml plugin. Supports the EBU-TT-D profile for now. Has potential as general intermediary representation for text subtitles.
SLIDE 13
SPLITMUXSINK SPLITMUXSINK
Buffer collection and scheduling rewritten. Splitting should be deterministic now. New "format-location-full" signal. Automatically starts new chunk if caps change.
SLIDE 14
DASH TRICK MODE PLAYBACK DASH TRICK MODE PLAYBACK
SLIDE 15
LOTS OF NEW FEATURES AND PERF LOTS OF NEW FEATURES AND PERF IMPROVEMENTS FOR EMBEDDED IMPROVEMENTS FOR EMBEDDED
v4l, dmabuf, zero-copy, openmax etc.
- -> Olivier's talk
SLIDE 16
HARDWARE-ACCELERATED VIDEO HARDWARE-ACCELERATED VIDEO ENCODING/DECODING ENCODING/DECODING
New msdk plugin for Intel's Media SDK GStreamer VA-API: new features + fixes Encoders are now autoplugged. nvdec for NVIDIA hardware + nvenc improvements v4l + omx for embedded
SLIDE 17
SOME COOL THINGS THAT WILL LAND IN SOME COOL THINGS THAT WILL LAND IN 1.14 ... 1.14 ...
SLIDE 18
AOMEDIA AV1 SUPPORT AOMEDIA AV1 SUPPORT
Next-gen royalty-free video codec! Experimental, but bitstream stabilised (ish?). Encoding still "a bit" slow, but works.
- > Tim's talk at 5pm today in this room.
SLIDE 19
IPCPIPELINE IPCPIPELINE
Split pipelines across multiple processes! Isolate demuxers, parsers, decoders.
- -> Olivier's talk!
SLIDE 20
RING BUFFER FOR DEBUG LOGS RING BUFFER FOR DEBUG LOGS
Useful for long running tasks. Or disk space constrained environments. Retrieve log lines when things fail.
SLIDE 21
TRACING FRAMEWORK IMPROVEMENTS TRACING FRAMEWORK IMPROVEMENTS
Leak tracer: stack traces, snapshotting, live objects Latency tracer improvements are also in the pipeline
SLIDE 22
HLSSINK2 HLSSINK2
Takes elementary streams as input Uses splitmuxsink internally Handles transmuxing better, without encoder up front
SLIDE 23
RTSP RTSP
RTSP 2.0 support in client + server ONVIF audio backchannel (coming up)
SLIDE 24
MISSION: PLUGIN MOVES AND MODULE MISSION: PLUGIN MOVES AND MODULE CONSOLIDATION ... CONSOLIDATION ...
Ongoing effort to move things from -bad into other modules. Going strong!
SLIDE 25
MP3 PATENTS HAVE EXPIRED! MP3 PATENTS HAVE EXPIRED!
mpg123 mp3 decoder -> good LAME mp3 encoder -> good twolame mp2 encoder -> good
SLIDE 26
AC-3 PATENTS HAVE EXPIRED! AC-3 PATENTS HAVE EXPIRED!
a52dec has to stay in -ugly liba52 is GPL :(
SLIDE 27
COMING SOON (HOPEFULLY!) COMING SOON (HOPEFULLY!)
- aggregator base class -> core (done)
- audiomixer + audioaggregator -> base
- incl. audiomixer conversion support
- compositor + videoaggregator -> base
- Next: port muxers, for defined-latency
SLIDE 28
GSTREAMER OPENGL INTEGRATION HAS GSTREAMER OPENGL INTEGRATION HAS MOVED TO -BASE ! MOVED TO -BASE !
Library + plugins API stable now.
SLIDE 29
WEBRTC WEBRTC
"How do I stream to my web browser?" It's going to work everywhere. It's going to be big.
SLIDE 30
WEBRTC: WEBRTCBIN WEBRTC: WEBRTCBIN
New GStreamer WebRTC plugin and library Just landed in git master \o/ \o/ \o/ Uses libnice + plugins for ICE.
- > Nirbheek's blog post
- > https://github.com/centricular/gstwebrtc-demos
SLIDE 31
WEBRTC: EXISTING EFFORTS WEBRTC: EXISTING EFFORTS
OpenWebRTC Kurento some proprietary SDKs libwebrtc: works, but ..
SLIDE 32
WEBRTCBIN: ADVANTAGES WEBRTCBIN: ADVANTAGES
very flexible + full control easy to use with hardware encoders/decoders, zero-copy capture/render where supported leverage existing GStreamer support on embedded devices easy to feed already-encoded content no need to deal with or fork libwebrtc
SLIDE 33
WEBRTCBIN: CAVEATS WEBRTCBIN: CAVEATS
SDP renegotiation is not implemented or incomplete, so dynamically adding/removing streams doesn't work yet recvonly streams aren't implemented properly yet, but that's fixable internals are sound and follow the spec, so easy to identify clear spaces and fit in missing features. help wanted!
SLIDE 34
KLV METADATA SUPPORT KLV METADATA SUPPORT
Generic per-frame KLV metadata (soon) Muxing / demuxing KLV meta per frame
SLIDE 35
PERFORMANCE OPTIMISATIONS.. PERFORMANCE OPTIMISATIONS..
Everywhere, of course. Lots of things in the pipeline.
SLIDE 36
SRT - "SECURE, RELIABLE, TRANSPORT" SRT - "SECURE, RELIABLE, TRANSPORT"
Source/Sink elements now merged. Seems well-placed to replace RTMP.
SLIDE 37
MESON BUILD SYSTEM STATUS UPDATE: MESON BUILD SYSTEM STATUS UPDATE:
Mostly complete, just a few things still missing: full set of options static build untested iOS/Android untested cerbero integration MSVC build works. Also: gst-build
SLIDE 38
RUST RUST
Let's talk about Rust ! ("Fast, safe and productive - pick three.")
SLIDE 39
RUST RUST
No plans to switch to it in the short run. No plans to make it a hard dep in core components. We can do a lot without breaking GStreamer backwards compat. We're playing with it, experimenting, gaining experience. Something for the longer term.
SLIDE 40
GSTREAMER RUST BINDINGS GSTREAMER RUST BINDINGS
Should be in pretty good shape now.
- -> Sebastian's talk tomorrow 11am in the Rust
devroom
SLIDE 41
GSTREAMER C# BINDINGS GSTREAMER C# BINDINGS
Have also been resurrected and updated.
SLIDE 42
ROOM FOR IMPROVEMENT ? ROOM FOR IMPROVEMENT ?
SLIDE 43
ADAPTIVE STREAMING (DASH, HLS, ETC.) ADAPTIVE STREAMING (DASH, HLS, ETC.)
Really need to improve our creation story!
SLIDE 44
MAKE IT EASIER TO WRITE "SIMPLE MAKE IT EASIER TO WRITE "SIMPLE SERVERS" SERVERS"
- souphttpserversink
- rtspserversink
SLIDE 45
THAT'S ALL FOLKS THAT'S ALL FOLKS THANK YOU (AND THANKS TO THANK YOU (AND THANKS TO THE ORGANISERS!) THE ORGANISERS!) QUESTIONS? COMMENTS? QUESTIONS? COMMENTS?
SLIDE 46