==== version 0.11.1 (2015-07-29) ====

* vpu: decoder: Keep track of unfinished gstvideo frames
  This was causing pipeline errors and memory leaks with GStreamer 1.4

* blitter fixes and enhancements:
  * Fix vsync setup in video sink base class
  * Cropping reintroduced in video sinks and transform elements
  * videotransform: offset, offset-end, and duration of input buffers are now
    copied

* ipu: All pages are now cleared when page flipping is used (needed for vsync),
  not just the first one

* compositor: Added support for cropping input streams

* imxv4l2src fixes and enhancements:
  * Use GLib gchar instead of char
  * Add support for imxv4l2://<devicename> URIs via the GstUriHandler
  * Add special case to support YUYV data (GStreamer expects YUY2 in its place)


==== version 0.11.0 (2015-07-23) ====

* new common codebase for rectangular regions and video canvases

* new blitter-based video sink with full support for vsync to eliminate tearing

* complete rewrite of blitter base code to better support aspect ratio correction,
  rotation, empty region filling, and compositing

* new compositor elements, API compatible with the upstream GStreamer compositor
  These new elements allow for combining N input video streams into one output
  stream with alpha blending, scaling, rotation, color space conversions etc.
  and hardware accelerated via G2D, IPU, PxP

* vpu: decoder: Memory leaks fixed
  Decoder is now drained when stopping
  Fixed incorrect gst_allocator_free() call
  GstImxPhysMemory slices weren't being freed properly
  VPU allocator instances are now instantiated per-decoder

* vpu: encoder: Bitrate can now be set on the fly

* eglvivsink: In Wayland, window x/y coordinates are now supported

* several v4l2src fixes:
  Removed experimental and deprectated WITH_CHIP_IDENTIFICATION ioctl
  Use pixelformat reported by the driver instead of hardcoding I420
  The format fourcc is now read properly (not just as a string)
  Call VIDIOC_QUERYBUF twice to get a physical address (important for zerocopy)
  Add interlace-mode to src caps to allow for deinterlacing camera feeds
  If possible, the actual frame rate is retrieved


==== version 0.10.2 (2015-06-02) ====

* uniaudio: Create correct config header even if no codecs were found
  This prevents compilation errors in this case

* g2d/ipu/pxp blitter sink: Respect aspect ratio also in 90/270 degree rotations
  For these rotations, width and height have to be swapped prior to calculating
  the aspect-corrected frame

* v4l2src: Call the buffer pool baseclass stop() function
  This fixes segmentation faults during shutdown

* audio: new MP3 encoder element using the libfslcodec MP3 encoder
  This encoder is suitable for real-time encoding, since it encodes much faster
  than LAME for example (though not reaching LAME's compression efficiency)

* pxp: Remove broken/unsupported formats
  PxP unfortunately does not have consistent format support; the formats that
  actually work properly had to be determined empirically

* eglvivsink: Fix double mutex unlock
  Double unlocks occurred in X11 builds with gst-play and gtk-play

* Cleanup phys mem meta naming

==== version 0.10.1 (2015-02-12) ====

* uniaudio: fix memory leak in decoder
  Decoded buffers weren't freed properly, leading to rapidly
  increasing memory leaks

* eglvivsink: fix deadlock
  This deadlock occurred in the NULL->READY state change if said
  state change failed

* vpu: encoder: pass input video codec state to derived classes
  This is interesting for the MJPEG encoder for example, to properly
  choose the configured color format

* vpu: decoder: handle missing width and height values in caps
  Typically, containers do have this information and set it in the caps,
  but there are corner cases where this isn't true. Before, these caused
  assertions inside the decoder. Now they are handled properly. (The
  values detected by the VPU are used then.)

* fixed video info size bug in phys mem buffer pool
  This bug caused a mismatch between the configured size and the actual
  size of video buffers. This lead to excessive physmem free calls
  in the buffer pool, which in turn means that physical memory was
  constantly being allocated and freed.

* fixes to base blitter:
  * don't draw anything if the video region is invisible
  * set output and video region visibility to FULL by default, fixing
    some cases of "green screen" output (which means nothing was being
    blitted)

==== version 0.10.0 (2014-12-27) ====

* new codebase for 2D blitter based video sinks and transform elements
  The new code introduces the GstImxBaseBlitter base class, which is the
  foundation for blitter-based elements. This class, along with the
  GstImxBlitterVideoTransform and GstImxBlitterVideoSink base classes,
  take care of most of the work for blitter-based operations. Derived
  classes mostly just implement their blitter specific parts on top.
  This makes it easy to support G2D, IPU, and PxP based operations.
  The GstImxBlitterVideoSink also preserves the aspect ratio, and
  areas left empty by the correction are filled with black pixels.

* new G2D elements: imxg2dvideosink imxg2dvideotransform
  G2D is an API on top of the Vivante GPU's Pixel Engine. Starting with
  this release, imxg2dvideosink is considered the video sink of choice,
  along with imxeglvivsink. G2D is generally easier to operate than IPU.

* new PxP elements: imxpxpvideosink imxpxpvideotransform
  The PxP system is particularly useful with cameras, since it is the
  only one which can convert from the Y42B colorspace to another one,
  and Y42B is often used by USB webcams.

* ipu: rewrite code from scratch to be based on the blitter base classes
  Note that imxipusink has been renamed to imxipuvideosink. Also, thanks
  to the GstImxBlitterVideoSink, the IPU sink now preserves the aspect ratio.

* ipu: fix memory protection bits in mmap() calls

* phys mem buffer pool now uses a default horizontal alignment of 16 instead of 8
  This alignment works better with all blitters

* eglvivsink: fix deadlock in set_caps() function
  The deadlock appeared in some situations when the eglvivsink was embedded
  inside another window

* vpu: decoder: add interlace information to output buffers

* vpu: encoder:
  * fix gst_buffer that was not set to NULL after unref
  * configure bitrate and intra refresh period in set_format() call
  * fix get_property() requests for slice size and intra refresh period
  * IDR interval was sometimes unsetting the nForceIPicture flag even if it was
    set before (for example, because the frame is a sync point)

* new elements for audio decoding based on Freescale's unified audio (UniAudio) architecture
  These elements depend on the libfslcodec library. Tested with libfslcodec 4.0.1.
  Supported formats:
  * MPEG-1 layer 1/2/3
  * Ogg Vorbis
  * AAC Low Complexity (LC)
  * WMA (up to WMA version 10) (*)
  * AMR-Narrowband
  * AMR-Wideband

  (*) codec is not included in libfslcodec by default; to obtain the specific
  codec, a license for this format must be presented to your Freescale FAE

* preliminary support for Android builds
  Android requires some changes in the building process. Most importantly, the
  plugins and common lib must be built as static libraries.

==== version 0.9.9 (2014-09-21) ====

* ipu, vpu, v4l2src: use reference counting for resources
  This ensures that resources are freed only after when every entity
  that uses them has been shut down

  ipu: use a global FD and increase/decrease refcount for each blitter
  instance and for every (de)allocation

  vpu: increment/decrement refcount not only when creating/shutting down
  decoder instances, but also for every (de)allocation

  v4l2src: instead of using a raw FD, use a reference-counted FD object

* ipu: use a global FD instead of per-blitter FDs
  This circumvents bugs in the IPU kernel driver which are triggered
  when multiple IPU FDs are open at the same time

* introduce a proper physical address type and a printf conversion specifier

* remove cpu address from GstImxPhysMemory and add an "internal" pointer
  as an optional, internal, allocator-specific extra parameter
  (for example, a handle to an internal DMA buffer object)

* rplace obsolete "padding" member in phys mem meta with better defined
  x_padding/y_padding ones
  This avoids having to do calculations like "padding / stride" to get to
  the number of additional rows, for example

* use a reference counter for mapping physical memory
  Necessary because the same physical memory might get mapped multiple times
  (commonly done by gst_video_frame_map() and multi-planar formats like I420)
  until now, it was mapped the first time, and subsequent mapping calls were
  just ignored, but a reference counter is much cleaner and safer

* ipu: fix kernel version detection and include paths in wscript
  Now, the <3.5.0 kernel version check works properly

* eglvivsink: remove RGB from the list of supported formats
  Vivante direct textures support various RGBA/RGBx formats, but not RGB

* Miscelleanous:
  * Logging improvements
  * Added notes to functions that return floating references
  * Removed obsolete todo file
