This is GStreamer Ugly Plugins 1.2.0 Changes since 1.0: New API: • GstContext negotiation / sharing / announcing for sharing a generic context between elements, e.g. a display handle • GL texture upload conversion meta for allowing different buffer types to be converted to an OpenGL texture • GstCapsFeatures as extension to GstCaps for allowing the negotiation of specific memory or meta requirements between elements • GstMemory flags for contiguous and non-mappable memory • The stream-start event has optional flags now, e.g. for signalling sparse streams • The stream-start even has an optional group-id field now to signal all streams that should be played together • Allocators library in gst-plugins-base, currently only with generic dmabuf memory support • insertbin library for easier handling of dynamically linked pipelines (in -bad for now) • EGL helper library (in -bad for now) • MPEG-TS data structure library (in -bad for now) • New GstVideoRegionOfInterestMeta to describe a region of interest on video frames. • GstVideoDecoder/Encoder has new ::flush() vfunc to replace the ill-defined ::reset() vfunc. • The URI query allows to query the redirected URI now. Major changes: • New tool: gst-play-1.0 in gst-plugins-base for basic playback testing on the command line. • New plugins: ∘ mssdemux for Microsoft Smooth Streaming ∘ dashdemux for DASH adaptive streaming protocol ∘ bluez for interaction with Bluetooth devices ∘ openjpeg for JPEG2000 decoding and encoding ∘ daala for experimental Daala decoding and encoding ∘ vpx plugin has experimental VP9 decoding and encoding support ∘ webp plugin for WebP decoding (encoding to be added later) ∘ Various others: yadif, srtp, sbc, fluidsynth, midiparse, mfc, ivtv, accuraterip and audiofxbad • Moved plugins: ∘ dtmf, vp8rtp, scaletempo and rtpmux plugins are in gst-plugins-good now • Video: ∘ Fix handling of interlaced video in converters such as videoscale and videoconvert (e.g. scale both fields independently) ∘ videoconvert will try harder to minimise quality losses when conversion is necessary ∘ The experimental GstSurfaceConverter, GstSurfaceMeta and GstVideoContext APIs from the (confusingly-named) libgstbasevideo-1.0 library in gst-plugins-bad have now been removed and been replaced by new APIs in GStreamer Core and gst-plugins-base (see above). Since that was all that was left in this library, the entire experimental libgstbasevideo-1.0 library has been removed from gst-plugins-bad ∘ Chroma subsampling and chroma siting conversion is better handled in videoconvert and the support for interlaced video was improved. ∘ New pinwheel and spoke patterns in videotestsrc ∘ videomixer can now accept different video formats on its sinkpads and converts to a common format during mixing • Audio: ∘ audioconvert will try harder to minimise quality losses when conversion is necessary ∘ adder now allows muting/unmuting of its input streams, and also per-input stream volume ∘ pulseaudio elements can switch between devices during playback now ∘ aacparse can convert between ADTS←→RAW • Platform specific changes: ∘ Caps, events, etc. are now printed in the GStreamer debug logs with their content instead of just the pointer address even on non-glibc platforms (e.g. Windows, OSX, Android). ∘ Network elements (UDP/TCP) now work better with platforms, where IPv6 sockets can't handle IPv4 (e.g. Windows) ∘ Linux/BSD: v4l2 had many improvements and cleanups • Other changes: ∘ gst-libav now uses libav 9 ∘ Static linking of plugins is supported now (also in 1.0.7) ∘ rtspsrc: add support for NetClientClock: when the server suggests a GstNetTimeProvider in the SDP, set up a GstNetClientClock that slaves to the remote clock and suggest this clock in provide_clock. Simplifies synchronized playback of a resource from an RTSP server. gst-rtsp-server now supports adding this to the SDP and can provide a network clock ∘ RTP retransmission / NACK support and big RTP jitterbuffer improvements ∘ SRTP and DTLS support ∘ Changes to many elements and core to use the correct sticky event order and also not lose any important sticky events during flushing ∘ >1000 fixed bug reports, and many other bug fixes and other improvements everywhere that had no bug report Things to look out for: • Single header includes for all libraries, e.g. #include - this was needed for some bindings. • Stricter (correct) caps subset checking in some cases where this was not correct before. Caps will now always fail to be a compatible subset of another set of caps if the subset caps are missing some fields that the superset caps have. This might lead to not-negotiated errors if caps are incomplete now. However, it also prevents possible data corruption caused by piping data formatted in an incompatible/unexpected way into some elements. Check your h264 caps for stream-format and alignment fields and AAC caps for the stream-format field. This change will also be included in the next stable 1.0.8 release. • Stricter checking for missing events and correct sticky event order (stream-start, caps, segment) in some places; this is not enabled in stable releases by default, but you may get warnings when using git builds, development releases or when compiling with -UG_DISABLE_ASSERT in CFLAGS • x264enc now outputs data in byte-stream by default if downstream has ANY caps (e.g. appsink without caps set, filesink, udpsink, tcpserversink etc.) • The MPEG TS demuxer posts messages contain the PMT, PAT, etc. in a different format now. This new format uses the data structures from the new MPEGTS library • The GstContext API has changed between 1.1.4 and 1.1.90