intel smd elements in gstreamer...develop products around gstreamer such as: flumotion streaming...

33
Intel SMD elements in GStreamer Josep Torra a.k.a. ad-n770 josep@fluendo.com

Upload: others

Post on 23-Mar-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Intel SMD elements in GStreamerJosep Torra a.k.a. ad-n770

[email protected]

Page 2: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Sodaville and Canmore

Intel CE4100 Media Processor, Sodaville

Intel CE3100 Media Processor, Canmore

SoC with HW accelerated codecs

Targeted to Consumer Electronics devices

Intel CESDK, a minimalistic Linux system

Page 3: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Media capabilities

Two High Definition video decoders capable of 1080p@60

HW accelerated audio decoders/encoders on DSPs and 7.1 audio support

Noise reduction, motion adaptive de-interlacing and scaling in HW Post-Processor

HW blender for display composition

OpenGL ES 1.1/2.0 capable GPU

Page 4: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Intel Streaming Media Driver (ISMD)

Low-level driver which provides an API for application to control media streams.

Devices, ports, memory ISMD buffers, ISMD events.

A minimalistic media framework.

Page 5: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Application Block Diagram

Hardware layer

Fluendo SW Codecs GDL ISMD

Fluendo ISMD elements

GStreamer

Media ApplicationXPSM

Media Application

Page 6: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

FluendoISMD elements (I)

Wraps ISMD devices

Configurable through GObject properties

GstPads connected to ISMD ports

Converts GstBuffers into ISMD buffers and vice versa

Wraps the GstStates to ISMD states

Page 7: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

FluendoSMD elements (II)

Integrated with autoplug elements uridecodebin, decodebin2 and playbin2

Can be mixed with software elements like sources, demuxers or video decoders

Transparent integration with ISMD BufMon

Advanced features such as trick modes and handling of live pipelines

Page 8: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

DVB Source (I)

Wraps a ISMD Demuxer wired to TSI

MPTS to SPTS filtering

Performs clock recoveries based on PCR samples

Capable to parse and manage PSI pids

Integrated with ISMD BufMon

Page 9: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

DVB Source (II)ismd_dvb_src

ISMD Buffer

ISMD DemuxerDevice

TSI

GstBuffer

Main MemoryMain

Memory

ClockRecovery

Info

ISMD Buffer PSI FilterPSI PIDs

PATInfo GstMessage PMTInfo GstMessage

ES PIDs

Page 10: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Clock Recovery and Provider (I)

Provides a ISMD clock

Integrated with ISMD BufMon

Capable to parse the PCR samples and perform clock recoveries

Page 11: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Clock Recovery and Provider (II)

ismd_clock_recovery_provider

GstBuffer

Main Memory

GstClock

GstBuffer

Main Memory

MPEG TSPCR parser

ClockRecovery

Info

Page 12: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Audio Sink (I)

Wraps ISMD Audio processors

Provides audio rendering for raw PCM and compressed formats (MPEG audio, AAC, AC3, DTS, WMA)

Permits passthrough and encode to AC3 or DTS on digital outputs

Page 13: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Audio Sink (II)

HDMI, SPDIF, I2S0 and I2S1outputs

Integrates with ALSA emulation deamon

Provides an ISMD clock

Page 14: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Audio Sink (III)ismd_audio_sink

ISMD Audio ProcessorDevice

GstBuffer

Main Memory

ISMD Buffer

HDMI

SPDIF

I2S0

I2S1

GstClock

Page 15: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Decoder (I)

Wraps ISMD Video decoder

Performs video decoding

Supported formats are MPEG2, MPEG4 part 2 (only on Sodaville), H264 and VC1

Frame reordering and PTS interpolation

Page 16: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Decoder (II)ismd_h264_viddec

GstBuffer

ISMD Buffer

ISMD Video Decoder Device

GstBuffer

Main Memory

ISMD Buffer

ISMD Buffer

Page 17: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Post-Processor (I)

Wraps ISMD Video Post-Processor

Performs chroma up-sampling, noise reduction filtering, de-interlacing, scaling and Pan&Scan

Converts video frames in standard GstBuffers into ISMD buffers and provides pad alloc capability.

Page 18: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Post-Processor (II)

ismd_vidpproc

GstBuffer

ISMD Buffer

ISMD Video Post-Processor

DeviceISMD Buffer

ISMD Buffer

GstBuffer

ISMD Buffer

Page 19: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Post-Processor (III)ismd_vidpproc

GstBuffer

ISMD Buffer

ISMD Video Post-Processor

DeviceISMD Buffer

ISMD Buffer

GstBuffer

Main Memory

NV

12 c

onve

rt

Page 20: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Sink (I)

Wraps ISMD Video renderer

Presents the video frames on the selected GDL plane

Configurable destination rectangle

Provides an ISMD clock

Page 21: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Sink (II)ismd_vidrend_sink

ISMD Video Render Device

ISMD Buffer

ISMD Buffer

GstBuffer

ISMD Buffer

QoS GstEvent

GstClock

Page 22: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Video Bin

Helper GstBin for integration with playbin2

ismd_vidpproc ! ismd_vidrend_sink

Page 23: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

GDL Video Sink (I)

Derived from GstVideoSink

Presents the ARGB video frames on the selected GDL plane

Designed to overlay subtitles and subpictures

Page 24: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

GDL Video Sink (II)flugdlsink

GDL Plane

GDL Surface

GstBuffer

Main Memory

Page 25: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Source Code

Fluendo ISMD elements:http://core.fluendo.com/gstreamer/src/

FLUB build system for CESDKhttps://core.fluendo.com/gstreamer/trac/browser/trunk/flub-ismd/

Building guide

https://core.fluendo.com/gstreamer/trac/wiki/HowToBuildFromSvn

Page 26: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Application Use Cases

Page 27: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

File playback pipeline

filesrc demuxer

queue

queue

queue

ismd_h264_viddec

textrender flugdlsinkqueue

ismd_audio_sink

ismd_vidrend_bin

ismd_vidpproc ismd_vidrend_sink

Page 28: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Digital TV playback pipeline

flutsdemux

queue

queue

ismd_mpeg2_viddec

ismd_audio_sink

ismd_vidrend_bin

ismd_vidpproc ismd_vidrend_sink

ismd_dvb_src

Page 29: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

IPTV playback pipeline

flutsdemux

queue

queue

ismd_mpeg2_viddec

ismd_audio_sink

ismd_vidrend_bin

ismd_vidpproc ismd_vidrend_sink

udpsrc ismd_clock_recovery_provider

Page 30: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Fluendo Media Center aka Moovida

Fluendo DVD playback engine

Video playback on 3D surfaces

Conclusions and Future

Page 31: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

Q&A

Page 32: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

About FluendoThe Fluendo group was created at the end of 2003 with the very ambitious goal of improving the multimedia experience in the Free Software environment. Indeed at that time there was no reliable solution for multimedia application developers. Existing media players were not legal and there was no media framework to compete with the existing operating systems as an alternative to Microsoft Windows with DirectShow and Mac OS X with Quicktime.

The Fluendo choice was a Free Software project called GStreamer which aimed at being as good as DirectShow or even better and funded a deep refactoring of the framework to bring it up at a professional level. Based on this multimedia expertise Fluendo started to develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida).

Nowadays Fluendo provides a wide range of products and solutions on top of the GStremaer framework and offers its expertise in the form of consultancy services to the main industry players.

Page 33: Intel SMD elements in GStreamer...develop products around GStreamer such as: Flumotion Streaming Server, Fluendo codec pool, Fluendo DVD player and Fluendo Media Center (aka Moovida)

The garden (1977)

Joan Miró i Ferrà (April 20, 1893 – December 25, 1983); was a Catalan painter, sculptor, and ceramicist born in Barcelona.