Release 1.3.1
[platform/upstream/gstreamer.git] / NEWS
diff --git a/NEWS b/NEWS
index 2da4fe6..5e74e9f 100644 (file)
--- a/NEWS
+++ b/NEWS
-This is GStreamer 1.2.0
+This is GStreamer 1.3.1
 
-Changes since 1.0:
+Changes since 1.2:
 
 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.
+ • GstMessageType has GST_MESSAGE_EXTENDED added. All types before
+   that can be used together as a flags type as before, but from
+   that message onwards the types are just counted incrementally.
+   This was necessary to be able to add more message types.
+   In 2.0 GstMessageType will just become an enum and not a flags
+   type anymore.
+ • GstDeviceMonitor for device probing, e.g. to list all available
+   audio or video capture devices. This is the replacement for
+   GstPropertyProbe from 0.10.
+ • Events accumulate the running-time offset now when travelling
+   through pads, as set by the gst_pad_set_offset() function. This
+   allows to compensate for this in the QOS event for example.
+ • GstBuffer has a new flag "tag-memory" that is set automatically
+   when memory is added or removed to a buffer. This allows buffer
+   pools to detect if they can recycle a buffer or need to reset
+   it first.
+ • GstToc has new API to mark GstTocEntries as loops.
+ • A not-authorized resource error has been defined to notify
+   applications that accessing the resource has failed because
+   of missing authorization and to distinguish this case from others.
+   This change is actually already in 1.2.4.
+ • GstPad has a new flag "accept-intersect", that will let the default
+   ACCEPT_CAPS query handler do an intersection instead of subset check.
+   This is interesting for parser elements that can handle incomplete
+   caps.
+ • GstCollectPads has support for flushing and a default handler for
+   SEEK events now.
+ • GstSegment has new API to offset the running time by a specific
+   value and this is used in GstPad to allow positive and negative
+   offsets in gst_pad_set_offset() in all situations.
+ • Support for h265/HEVC and VP8 has been added to the codec utils and codec
+   parsers library, and was integrated into various elements.
+ • API for adjusting the TLS validation of RTSP connection has been added.
+ • The RTSP and SDP library has MIKEY (RFC 3830) support now, and
+   there is API to distinguish between the different RTSP profiles.
+ • API to access RTP time information and statistics.
+ • Support for auxiliary streams was added to rtpbin.
+ • Support for tiled, raw video formats has been added.
+ • GstVideoDecoder and GstAudioDecoder have API to help aggregating tag
+   events and merge custom tags into them consistently.
+ • playbin/playsink has support for application provided audio and video
+   filters.
+ • The GL library was merged from gst-plugins-gl to gst-plugins-bad,
+   providing a generic infrastructure for handling GL inside GStreamer
+   pipelines and a plugin with some elements using these, especially
+   a video sink. Supported platforms currently are Android, Cocoa (OS X),
+   DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11,
+   Wayland and EGL platforms.
+   This replaces eglglessink and also is supposed to replace osxvideosink.
 
-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
+Major changes:
+ • New plugins and elements:
+   ∘ v4l2videodec element for accessing hardware codecs on
+     platforms that make them accessible via V4L2, e.g.
+     Samsung Exynos. This comes together with major refactoring
+     of the existing V4L2 elements and the corresponding
+     infrastructure.
+     The v4l2videodec element replaces the mfcdec element.
+   ∘ rtpstreampay and rtpstreamdepay elements for transmitting
+     RTP packets over a stream API (e.g. TCP) according to
+     RFC 4571.
+   ∘ rtprtx elements for standard compliant implementation of
+     retransmissions, integrated into the rtpmanager plugin.
+   ∘ audiomixer element that mixes multiple audio streams together
+     into a single one while keeping synchronization. This is
+     planned to become the replacement of the adder element.
+   ∘ OpenNI2 plugin for 3D cameras like the Kinect camera.
+   ∘ OpenEXR plugin for decoding high-dynamic-range EXR images.
+   ∘ curlsshsink and curlsftpsink to write files via SSH/SFTP.
+   ∘ videosignal, ivfparse and sndfile plugins ported from 0.10.
+   ∘ avfvideosrc, vtdec and other elements were ported from 0.10 and
+     are available on OS X and iOS now.
 
  • 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
+   ∘ gst-libav now uses libav 10, and gained support for H265/HEVC.
+   ∘ Support for hardware codecs and special memory types has been
+     improved with bugfixes and feature additions in various plugins
+     and base classes.
+   ∘ Various bugfixes and improvements to buffering in queue2 and
+     multiqueue elements.
+   ∘ dvbsrc supports more delivery mechanisms and other features
+     now, including DVB S2 and T2 support.
+   ∘ The MPEGTS library has support for many more descriptors.
+   ∘ Major improvements to tsdemux, especially time related.
+   ∘ souphttpsrc now has support for keep-alive connections,
+     compression, configurable number of retries and configuration
+     for SSL certificate validation.
+   ∘ hlsdemux has undergone major refactoring and works more
+     reliable now and supports more HLS features like trick modes.
+     Also fragments are pushed downstream while they're downloaded
+     now instead of waiting for each fragment to finish.
+   ∘ videoflip can automatically flip based on the orientation tag.
+   ∘ openjpeg supports the OpenJPEG2 API.
+   ∘ gst-rtsp-server supports SRTP and MIKEY now.
+   ∘ Lots of fixes for coverity warnings all over the place.
+   ∘ 400+ 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
-   <gst/video/video.h> - 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
+ • The eglglessink element was removed and replaced by the glimagesink
+   element.
+ • The mfcdec element was removed and replaced by v4l2videodec.
+ • osxvideosink is only available in OS X 10.6 or newer.