2017/07/10: release libxcam version 1.0.0
 * 360 video stitching performance and quality improvement.
   - enable geometry map to improve performance.
   - quality tuned on different resolutions (1080P and 4K).
   - support CPU and OpenCL path in feature match.
   - enable lens shading correction based on fisheye image.

 * gyroscope-based video stabilization enabling.
   - enable gyroscope 3-DoF (orientation) assist video stabilization.
   - orientation (gyro) data should be measured by quaternion as the pose
     of target frame reference to base frame

 * CL framework refine.
   - enable CL argument template instead of member variables in kernel.
   - CL kernel support async mode.
   - image handler take over input/output buffer management from image kernel.

 * prepare libxcam debian package and fix most warnings.

2017/04/01: release libxcam version 0.9.0
 * 360 video stitching improvement.
   - remove sharp boundary in sphere mode by local/global area resize.
   - tune algorithm parameters to preserve blinking.
   - integrate 360 stitching pipeline into libxcam module.
   - gst-xcam-filter supports 360 stitching case.

 * export C APIs for each OpenCL feature.
   - support stich/3d-nr/wavelet-nr/defog features by xcam handle.
   - be designed for FFmpeg xcam video filter usage.

2016/12/30: release libxcam version 0.8.0
 * Digital Video Stabilization (DVS)
   - enable DVS smart analysis plugin.
   - algorithms used in DVS (feature detect, optical flow, motion model estimation) are based on OpenCV.
   - implement image warp perspective algorithm in CL kernel.

 * Image stitching to create panorama photography
   - implement fisheye calculation which map location to equirectangular.
   - enable feature detection and match based on OpenCV optical flow algorithm.
   - enable seam mask to improve the quality of blender.

 * gstreamer plugin xcamfilter can co-work with xcamsrc

2016/09/30: release libxcam version 0.7.0
 * 3D-NR quality and performance improvement.
   - use image exposure parameters to adjust global denoise strength.
   - calculate image local variation to adjust local denoise strength.
   - optimize OCL kernel by shared local memory and sub-group to
     improve performance.

 * defog/dehaze quality improvement based on DCP(dark channel prior).
   - enable dark channel prior to improve hazy image quality.
   - fix image corruption in recover step.
   - add lateral-range filter to smooth dark channel and remove
     halo effect.

 * enable multi-band blender for image stitching.
   - based on gaussian and laplacian pyramid and blend images in each
     band, then reconstruct stitching image from pyramid level.
   - blender can smooth seams and prevent ghosting.

 * enable geometry correction.
   - map 2D image from src to dst image based on coordinate table which
     is center aligned.
   - prevent sawtooth edge by OCL sampler.
 * gst-xcamfilter feature supports.
   - xcamfilter can co-work with different camera source.

2016/07/29: release libxcam version 0.6.1
* enable 3D noise reduction, performance stay tuned.
   - suppress image noise in both temporal and spatial domain.
   - the algorithm applies denoise filter based on pixel-block differences
     in neighbor blocks and previous frames.
   - the processed image is much more clean and preserves motion objects
     edge in low-light conditions.

 * support gst xcamfilter plugin which is independent from camera source.
   - xcamfilter plugin can work with gstreamer source plugins,
     e.g. videotestsrc/filesrc/v4l2src.
   - xcamfilter features support defog/wireframe/waveletNR/3d-denoise.
   - sink pad supports format NV12, src pad supports DMA buffer-sharing
     for performace if links to HW plugin(encoder).
   - wireframe/scaler/waveletNR moved to post image processor which can
     co-work with isp processor(as pre-image processor)

2016/06/30: release libxcam version 0.6.0
 * enable block-split version of histogram based WDR tone-mapping algorithm.
   - divide image into several blocks and apply bidirectional log based
     function on luminance to improve the contrast inside each block.
   - apply weight function based on distance between target pixel and center
     pixel of each neighbor block to smooth and eliminate block boundaries.
   - apply weight function based on pixel intensity deviation between neighbor
     blocks keep differentiation and weaken boundaries.
   - image quality is improved and more details in both over-exposured and
     under-exposured area can be shown clearly on screen.

 * Bayesian wavelet shrinkage for adaptive noise filtering.
    - enable adaptive noise filtering based on Bayesian shrinkage estimation
    - estimate the image’s background noise level by analyzing.
      wavelet coefficient.
    - optimize the threshold T which minimizes the Bayesian risk,
      i.e, the expected value of the mean square error.

 * Haar wavelet tuning improvement.
    - fine tuning the threshold statistic data for ultra-low light condition.
      to prevent edge from over smoothing.

 * face detection supports.
   - enable face detection framework and support FD plugins.
   - enable wire-frame to track faces.

 * fog removal improvement based on Retinex algorithm.
   - support multi-scale algorithm to reduce halo effects.
   - tune parameters to keep brightness and clear edge.
   - improve saturation based on chroma enhancement.

 * image processing service framework.
   - add pipe-manager to support smart-analysis and post image processor.
   - separate major code into different modules, e.g. xcore/isp/ocl/3a.
   - support NV12 stream as fake input instead of camera sensor.

2016/03/28: release libxcam version 0.5.0
 * enable new WDR tone mapping based on histogram adjustment.
    - apply bidirectional log based function on luminance to improve
      image contrast.
    - transmit wide dynamic range image data to 8-bit color data by
      novel histogram adjustment algorithm.
    - details in both over-exposured and under-exposured area clearly
      show up on screen.
 * enable wavelet-based algorithm for noise reduction.
    - decompose image into multiple-scales by wavelet transform with
      low pass and high pass filters.
    - perform soft threshold on smaller coefficients(high-pass)
      to reduce noise.
    - threshold should be suitably decided by tuned parameters.
    - reconstruct image from scaled low-pass and high-pass images.
    - enable Haar-wavelet and Hat-wavelet NR filters.
 * enable fog removal feature based on retinex algorithm.
    - base on retinex single-scale algorithm.
    - scale down image for gaussian blur to improve performance.
    - scale up blured image and amplify log differences with original
      image.
 * improve sharpness in normal light with extreme profile.
 * support cl post processing with isp mode.
 * support swap-buffer on nv12 format if only single plane need to
   process.

2015/12/30: release libxcam version 0.4.0
 * improve performance on OCL pipeline.
    - design new formats and pipeline to save memory IO.
    - improve bayer noise reduction with bilateral filter.
    - support edge enhancement into bayer pipe.
    - make gpu/cpu working together for 3a-statistics calculation.
    - move tonemapping kernel from RBG to bayer format.
 * improve WDR-tonemapping algorithm for quality.
    - utilize an new adaptive local tone mapping algorithm.
    - provide the mapping between 16-bit wide dynamic range images to
      8-bit images to have “nice looking”.
    - preserve more information on luminance values of the scene
      especially for high contrast images.
 * tonemapping parameters calculated to increase the contrast between
   high light and low light.
    - tone mapping regularization parameters are calculated according
      to the distribution of brightness histogram.
    - the local adaptive parameter are calculated by weighting the
      neighbor pixels with a Gaussian blur filter.
 * add bayer raw video input to simulate camera sensor.

2015/10/19: release libxcam version 0.3.0
 * improved OCL pipeline on basic and advanced/extreme pipeline
    - add new bayer noise-reduction into demosaic
    - merged yuv-tnr into yuv-pipe kernel
    - merged TNR-yuv and TNR-rgb together
 * support WDR(wide dynamic range) feature
 * add 3a analysis tuner framework for more features tunning, e.g TNR
 * add hybrid 3a analysis framework
    - support partial customized 3a algorith, e.g AWB/AE
 * add smart analysis framework
    - generate small scaled picture
    - support customized to analyze small picture and feedback results
    - support loading user-defined method on smart analysis

2015/07/31: release libxcam version 0.2.1
 * improved OCL pipeline on basic 3a image processing
    - merged bayer kernels with blc, wb, gamma, demosaic and 3a stats.
    - merged yuv kernerls with rgb2yuv color conversion and macc.
    - support async framework as option on cl features
    - support OCL buffer allocation which can choose tiling mode.
 * support different AIQ versions.
 * fix capture of dead-loop and sensor format setting.

2015/07/02: release libxcam version 0.2.0
 * add gstreamer plugin 'xcamsrc' for Linux media framework support
 * support loading user-defined 3a algorithm lib dynamically
 * support more manual 3a features on ISP, e.g multiple-ae-window, ae/awb speed...
 * add OpenCL pipeline for 3a image processing
   - bayer format features, black level correction, defect pixel
     correction, whitebalance, 3a statistics calculation,
     demosaic, gamma correction, HDR(high dynamic range)
   - RGBA format features, bilateral NR(noise reduction), simple NR,
     temporal NR, macc, color correction
   - YUV format features,  temporal NR, edge enhancement, color conversion
   - support any user-defined 3a algorithms(e.g AIQ)
 * rich test cases, e.g. test-device-manager, test-cl-image

2015/01/15: Initial xcam version 0.1
