Overview of Upipe modules for broadcast professionals Christophe Massiot (FOSDEM 2017) cmassiot@upipe.org http://upipe.org/ Overview of Upipe modules for broadcast professionals
Upipe modules for broadcast professionals What is Upipe? A young (2012) C multimedia framework Initiated by OpenHeadend team 3 supporting companies, 7 contributors Focus on reliability, efficiency and compliance, for broadcast and professional applications MIT and LGPL Upipe modules for broadcast professionals
Upipe modules for broadcast professionals What’s new? (tl;dr) Completed event loop API + easier pthread Pipeline dumping to graphviz format Luajit bindings HLS client H.265 framer VANC support in SDI Pre-release 5 in the works Upipe modules for broadcast professionals
Upipe inputs for broadcast PCIe boards: Blackmagic Decklink SDI DVEO DVB-ASI Native support: File, UDP or HTTP protocols Compliant TS demux RTP demux HLS client Multicat directory External library: Libavformat (Work In Progress) Upipe modules for broadcast professionals
Upipe outputs for broadcast PCIe boards: Blackmagic Decklink SDI (not merged) DVEO DVB-ASI (not merged) Native support: File, UDP, RTP Compliant TS mux Multicat directory External libraries: Libavformat GLX, ALSA Upipe modules for broadcast professionals
Upipe filters for broadcast Native support: Video: deinterlace (blend), blit, crop, asm-optimized v210 pack/unpack Audio: EBU R128 External libraries: Libavcodec Video: libswscale, x264 Audio: libswresample, libspeex Subtitles: libzvbi (CEA 708 encoding) Upipe modules for broadcast professionals
Upipe framers for broadcast Framers act as “bitstream filters” to reshape elementary streams automatically (negotiation) Native support: Video: MPEG-2, H.264, H.265 Audio: MPEG-1 layers I, II, III, MPEG-2 AAC ADTS, A/52, opus, SMPTE 302, SMPTE 337 Subtitles: DVB teletext, DVB subtitles Upipe modules for broadcast professionals
Upipe assets for broadcast Keep both original & system timestamps for reliable + compliant dejittering System timestamp from hardware clock Everything is dynamic: propagation of stream changes Efficient user-defined threading Shared buffers with COW and zero-copy Lua bindings Upipe modules for broadcast professionals
Upipe modules for broadcast professionals Use case 1: player Upipe modules for broadcast professionals
Upipe modules for broadcast professionals Use case 2: TS remux Upipe modules for broadcast professionals
Upipe modules for broadcast professionals Use case 3: recording Upipe modules for broadcast professionals
Upipe modules for broadcast professionals Use case 4: mosaic Upipe modules for broadcast professionals
Other use cases in production Integrated Receiver Decoder from TS or HLS Live encoder/transcoder to TS, RTMP, icecast, etc. File transcoder to TS, mp4, etc. MPTS mux Playout system with overlay Upipe modules for broadcast professionals
Upipe modules for broadcast professionals cmassiot@openheadend.tv