
2015-06-01 (v1.0.15):
---------------------
  Added feature(s):
     - HEVC dependent slice support
     - Add VP9 segment management for QP per LCU

  Fixed Bug(s)
     - Fix memory leak
     - Fix VPS and SPS flags conformance issue

  Other change(s):
    - Add 64-bit support
    - Add support for Android

2015-06-30 (v1.0.16):
---------------------
  Added feature(s):
    - QpCtrlMode = LOAD_QP allows to load the QP table from an external QP file.
    - more configuration parameters are now available from command line (see section 2 of the user manual)
    - CBR is now available in VP9
    - Add command list support

  Fixed Bug(s):
    -- Fix candidate reference list construction in VP9
    -- Fix Segment data management and VP9 Frame Header

  Other change(s):
    - Remove warnings and errors from static analysis
    - Align Traces with hardware testbenches

2015-07-08 (v1.0.17):
---------------------
  Added feature(s):

  Fixed Bug(s):
    -- Fix rate control initialization and limit.
    -- Fix VP9 encapsulation (IVF), increment frame number.

  Other change(s):
    -- Rename SLICE_SKIP into SLICE_REPEAT for VP9 encoder
    -- Cleanup segment IDs initialisation in QP table
    -- Cleanup config files


2015-07-30 (v1.0.18):
---------------------
  Added feature(s):
    -- Add Preliminary support for VBR rate control
    -- Add support for HW IP that includes monochrome option

  Fixed Bug(s):
    -- Fix output trace file in command list mode with several slices per frame

  Other change(s):
    -- improve Custom Gop by allowing POC value different from source order

2015-08-10 (v1.0.19):
---------------------
  Added feature(s):
    -- Add Preliminary support of Long Term reference picture
    -- Add AllRefInPast flag in command registers
    -- Add Reconstructed and Motion vectors output disabled flag in command registers
    -- Add Driver tests documentation
  Fixed Bug(s):
    -- Remove srand utilization
    -- Add to_string replacement for android libc

2015-09-04 (v1.0.20):
---------------------
  Added feature(s):
    -- Add PYRAMIDAL_GOP
    -- up to 4 consecutives B frame in DEFAULT_GOP mode
  Fixed Bug(s):
    -- Fix multi-core IP management

2015-10-08 (v1.0.21):
---------------------
  Fixed Bug(s):
    -- Fix crash issue when src yuv format was different from reconstructed yuv Format.
    -- Fix relative QP table feature in VP9
    -- Fix Low delay B Gop pattern when number of frame is not multiple of Gop.length

2015-11-13 (v1.0.22):
---------------------
  Added feature(s):
    -- Add mcu firmware in app_mcu
    -- Mcu firmware support HEVC and AVC encoding
    -- SchedulerMcu implements the discussion with the mcu linux driver
  ToDos:
    -- Pyramidal GOP mode on MCU
    -- MultiChannel on MCU (not validated)
    -- Perfs feedback on MCU

2016-02-26 (v1.0.23):
---------------------
  Added feature(s):
    -- dmabuf first step support (take dmabuf as input)

2016-05-19 (v1.0.26):
---------------------
  Added feature(s):
    -- 64 bit compilation support for CtrlSW (runtime not validated)
    -- Improved multichannel scheduling
    -- Redmine #689: Set ForceLoad to true by default
    -- Improved perfs on MCU
    -- Show firmware and libraries footprint at build
  ToDos:
    -- Redmine #673: Improve rate ctrl in low_delay cases

2016-06-03 (v1.0.27):
---------------------
 Fixed Bug(s):
    -- Added missing MCU data cache invalidation
    -- Fix potential missing register field in AVC multicore status merge
    -- Fix POC encoding in slice header
    -- Include testEnc patches from Redmine #576
    -- Improve driver stability for multi-channel

2016-06-07 (v1.0.27b):
-----------
  Added feature(s):
    -- buffer allocation is controlled by the user
    -- dmabuf support

2016-08-08 (v1.0.28):
---------------------
    -- Fix dcache invalidation (dcache invalidation needs to be aligned on 32bit)
    -- Fix firmware WPP in firmware mode (dcache invalidation error)
    -- Fix 64bit (firmware compatibility with its control software)
    -- Fix memory leak in the DevicePool
    -- Fix ioctl structure alignments

2016-09-09 (v1.0.29):
---------------------
    -- Add CBR option for scene change resilience
    -- Fix division by zero when all LCUs are skipped in multi core AVC

2016-09-09 (v1.0.29b):
---------------------
  Added feature(s):
    -- buffer allocation is controlled by the user
    -- dmabuf support

2016-12-23 (v1.0.30):
---------------------
  Added feature(s):
    -- GoP in MCU (Phase 1)
    -- Enhance error feedback
    -- Sync Enc1 / Enc2 (Phase 1)

2017-3-01 (v1.0.32):
--------------------
  Added features (Encoder):
    -- GoP in MCU
    -- Encoder and Decoder in the same package

  Added features (Decoder):
    -- enhance error concealment
    -- fix hang issue

  Missing feature(s):
    -- long terms
    -- pyramidal gop

2017-06-09 (v1.0.33):
--------------------

  Added features (Codec):
    -- Move user API header files into single include folder
    -- Improve conversion function to allow native use of RX0A, RX2A, RXmA
      as inputs.
    -- Remove usage of --relax option while compiling the firmware because of
      code generation bug when it used with --gc-sections
    -- Report mcu errors more precisely
    -- Improve multichannel fairness.
    -- Add support for partial AVC level 6 in the decoder (8K yuvs)

  Missing feature(s):
    -- long terms
    -- pyramidal gop

2017-06-30 (v1.0.34)
--------------------

  Added features (Codec):
    -- pyramidal gop
    -- change eos mechanism to avoid a one frame buffer latency (encode)

  API:
    -- make lib_encode and lib_decode APIs uniform
    -- use std types (uint32_t ...)

  Missing feature(s):
    -- long terms

2017-07-28 (v1.0.35)
--------------------

  Added features (Codec):
    -- fix crashes when the dma allocation failed
    -- fix freqIDR
    -- external SEI support (encode)
    -- Fix command line parsing: hexadecimal value are allowed again

  API:
    -- export less headers in include: We do not export IScheduler.h anymore.
    -- exe_encoder and exe_decoder do not depend on any internal headers anymore
    -- add API to add section in the stream buffer from outside lib_encode (external SEI support)
    -- add decoder AL_Decoder_ForceStop API to terminate decoding regardless of remaining data in 
       the circular buffer and/or input buffer(s), only wait for end of command already sent to the MCU.

  Missing feature(s):
    -- long terms

2017-09-04 (v1.0.36)
--------------------

  Added features (Codec):
    -- fix dpb buffer management (decode)
    -- fix sem_wait and equivalent when signal are present
    -- use minQP, maxQP from channel parameter in AUTO_QP (encoder)
    -- fix compliance when using SEI message (encode)
    -- fix rate control CONST_QP (P-frames, B-frames QPs values were interchanged)
    -- fix potential race condition on EOS: we could miss a frame (encoder)

  Missing feature(s):
    -- long terms

2017-09-21 (v1.0.37)
--------------------

  Added features (Codec):
    -- Fix error paths when signals are sent to the application using lib_encode / lib_decode
    -- Better error reporting when configuration files are wrong
    -- Size optimization: Streampart, Cmdlist and channel context size optimizations
    -- Better error reporting at channel creation
    -- Stream buffer overcommitted while encoding are now properly released at AL_Encoder_Destroy
    -- Fix memory leak in decoder mcu mode
    -- Fix potential data race (decoder)
    -- Fix cmdlist wrapping data race (decoder)
    -- Relaxed watchdog timeout constraint in slicelat

  API:
    -- AL_Settings_CheckCoherency now returns -1 at fatal failure, number of incoherency
    if it corrected some.
    -- HLIBREF was removed, the lib_ref is now fully an AL_TIpCtrl. The destruction
    of the lib_ref is now handled using the virtual destruction of the AL_TIpCtrl
    -- RefAlloc is now fully an AL_TAllocator and implements the virtual destruction too
    -- AL_Encoder_Create and AL_Decoder_Create signature change to enable better error reporting


  Missing feature(s):
    -- long terms

2017-11-14 (v1.0.38)
--------------------

  Added features (Coded):
    -- Fix hardware rate control overflow
    -- Scene Change resilience improvement
    -- Footprint / latency optimization at exe_decoder level. (preallocation)
    -- Better error resilience
    -- Fix watchdog handling in slicelat
    -- partial fix of multichannel scheduling

  API:
    -- Remove I_DecChannel.h header from the decoder api. To fix compilation,
    just include lib_decode.h instead. I_DecChannel type is now a handle for the
    user. This also removes DecBuffers.h, DecPicParam.h, DecSliceParam.h, StartCodeParam.h
    -- Rename AL_Decoder_PutDecPict -> AL_Decoder_PutDisplayPicture
    -- Remove AL_Decoder_ForceStop API. This is now automatically done when you destroy the decoder
    whithout calling AL_Decoder_Flush
    -- Remove AL_Decoder_GetDecPict from decoder API
    -- Remove AL_Decoder_ReleaseDecPict from decoder API. You should use AL_Decoder_PutDisplayPicture
    instead.

  Missing feature(s):
   -- long terms

2018-04-13 (v1.0.40)
--------------------
  API:
    -- Remove DecChanParam.h header from the decoder api
    -- All API functions should have the AL_ prefix
    -- AL_TBuffer now takes ownership of the memory handle passed to it
    -- The encoder source buffer stride can now be different from the the minimum supported pitch.
    -- Some function were renamed for better comprehension (older function were deprecated with a link to the new function)
    -- Documentation for almost all the user facing structure of the libraries
    -- Add adaptive B gop-mode feature
    -- Add interlace alternate field support for encoder and decoder
    -- Decoder now takes a user stride into account

2018-08-23 (v1.0.41)
--------------------
  Added Features:
    -- Add support of 32 channels
    -- Add (VPS), SPS, PPS and SEI Recovery point on first frame of GDR
    -- Multi-channel support in slice lat mode
    -- new API for SEI insertionin Encoder
    -- SEI message callback in Decoder

  Fixes:
    -- L2Prefetch Buffer + Wavefront not allowed
    -- Decoder error resilience improvement
    -- Improve rate control on some specific sequence
    -- Fix dynamic gop length change on I-frame


2018-11-14 (v1.0.42)
--------------------
  Added Features:
    -- LowLatency Phase 2

  API:
    -- Use planes (AL_TPlanes) to describe YUV buffers: SrcMetaData
    -- AL_DPB_LOW_REF becomes AL_DPB_NO_REORDERING
    -- AL_GetMaxNalSize requires codec, dimension, chroma mode, bitdepth, level and profile idc to compute a more accurate value
    -- Version of the API is now 0.10.0
    -- Add AL_VERSION_MAJOR, AL_VERSION_MINOR and AL_VERSION_STEP #defines

  Fixes:
    -- Improve rate control on specific sequences
    -- Handle out of order interrupts in avc low latency case
    -- Improve offline two pass algorithm quality
    -- Memory leak in the decoder destroy channel call

2019-01-18 (v1.0.43)
--------------------
  Added Features:
    -- Encoder dynamic resolution change (DRC)
    -- Decoder dynamic resolution change

  API:
    -- Version of the API is now 0.11.0
    -- Decoder resolution found callback is now called on every valid configuration found and not anymore on the first valid configuration
    -- Add a new encoder API (AL_Encoder_SetInputResolution) to signal the CtrlSW of the new input resolution

  Fixes:
    -- Improve rate control on specific sequences
    -- Sync IP
    -- Several minors bugs

2019-02-15 (v1.0.44)
--------------------
  Added Features:
    -- Temporal layer ID insertion
    -- Frame delta QP based on temporal ID
    -- Lambda factor based on temporal ID
    -- Colorimetry
    -- Frame skipping support (rate control)

  API:
    -- Version of the API is now 0.12.0
    -- Add a new encoder configuration parameter named tempDQP in the GopParam (in cfg: Gop.TempDQP [GOP])
    -- Add a new encoder configuration parameter named LdaFactors in ChanParam (in cfg: LambdaFactors [SETTINGS])

  Fixes:
    -- Improve rate control on specific sequences
    -- Several minors bugs

2019-04-19 (v1.0.46)
--------------------
  Added Features:
    -- Better documentation of the encoder configuration file (using --help-cfg)
    -- Add --show-cfg which show what each of the variable of the cfg is before encoding.
    -- --help-cfg now shows the default value of the value.
    -- Better documentation of the encoder settings
    -- External rate control plugin
    -- Synchronous SEI extraction
    -- Add another input buffers management: decoder metadata transfer from input buffer to output buffer is now possible

  API:
    -- Version of the API is now 0.13.0
    -- Add a new decoder parameter settings called 'bSplitInput': it enables the decoder 1-to-1
    -- Add missing 'AL_' on structs/enums
    -- Remove unneded functions
    -- Add new metadatas:
        - retrieve input buffer when using the new input buffers management
        - retrieve sync SEI

  Fixes:
    -- Several minors bugs

2019-06-28 (v1.0.47)
--------------------
  Added Features:
    -- xAVC support implementation (LongGOP & Intra only)
    -- 2 new GOP mode: AL_DEFAULT_GOP_B, AL_PYRAMIDALE_B
    -- Adaptive Deblocking filter / control at frame level
    -- MaxPicturesize control based on picture type , i.e Set I frame and Pframes sizes separately to avoid flickering effect at Intra/IDR pictures
    -- Relative QP on top of AUTO_QP mode

  API:
    -- Version of the API is now 0.14.0
    -- Add missing 'AL_' on structs/enums
    -- Add AL_Encoder_SetLoopFilterTcOffset and AL_Encoder_SetLoopFilterBetaOffset for the Adaptive DBF feature

  Fixes:
    -- Improve rate control on specific sequences
    -- Several minors bugs

2019-08-12 (v1.0.48)
--------------------
  Added Features:
    -- Reduce mail size for channel creation
    -- HDR 10 support:
        - the user can encode an HDR10 compliant bitstream by setting the appropriate VUI and SEI parameters using the CtrlSW
        - the user can extract the HDR10 parameters from a bitstream
    -- Optimize CPU performance for filler data insertion

  API:
    -- Version of the API is now 0.15.0
    -- Remove users API from CtrlSW API (i.e. ROI, RANDOM, ..)
    -- QpCtrlMode is split at CtrlSW level. We have 2 new parameters: QpCtrl and QpTable. Nothing change for config file
    -- Filler data new enum: AL_EFillerCtrlMode
    -- Add new metadata for HDR 10: AL_THDRMetaData
    -- Add new enum for HDR 10: AL_ETransferCharacteristics, AL_EColourMatrixCoefficients
    -- Add missing 'AL_' on structs/enums

  Fixes:
    -- AL_Encoder_SetLoopFilterTcOffset and AL_Encoder_SetLoopFilterBetaOffset for the Adaptive DBF feature
    -- Several minors bugs

2019-09-13 (v1.0.49)
-------------------
  Added Features:
    -- Reduce the amount of decoder input buffers needed in split-input mode

  API:
    -- Version of the API is now 0.16.0
    -- AL_TIDecChannel becomes AL_IDecScheduler.
       It is now possible to create multiple channels using the same AL_IDecScheduler
    -- The AL_TDecoder doesn't take ownership of the AL_IDecScheduler anymore
    -- Scheduler creation is now present in the API
    -- Introduce a new optional callback for decoder. It's fired when a buffer is fully parsed by the hardware
    -- AL_TBuffer handles multiple memory buffers, called chunks
    -- AL_TSrcMetaData becomes AL_TPixMapMetaData. It allows storing pixel planes on different chunks
    -- Add PixMapBuffer API. It contains helper functions to create and access buffers of pixels
    -- Add AL_TRateCtrlMetaData, providing rate-control statistics while encoding

  Fixes:
    -- Several minors bugs

2019-11-13 (v1.0.51)
-------------------
  Added Features:
    -- Content Light Level SEI for AVC encoder (HDR 10)
    -- ColourDescription can be retrieve at decoder (HDR 10)

  API:
    -- Version of the API is now 0.17.0
    -- Better use of the new Register interface
    -- Cleanup:
        - remove some unnecessary values
        - move some parameters to an adequate header

  Fixes:
    -- Rate control:
        - with gop-length equals to 0
        - interlaced mode (bitrate)
    -- Several minors bugs

2019-12-06 (v1.0.53)
-------------------
  Added Features:
    -- Encoder Watchdog. It can be enabled/disabled with 'AL_ENABLE_ENC_WATCHDOG' define

  API:
    -- Version of the API is now 0.18.0
    -- Better use of the new Register interface
    -- Add missing 'AL_' prefix

  Fixes:
    -- Buffer handles metadata
    -- Several minors bugs

2019-12-23 (v1.0.54)
-------------------
  Added Features:
    -- Add frame skipped information
    -- User can choose between ROI enum or a numeric value to describe the quality in the ROI file

  API:
    -- Version of the API is now 0.19.0
    -- Add 'bSkipped' in Picture Metadata
    -- Rename AL_TStreamSection 'uFlags' -> 'eFlags'
    -- Use 'AL_TStreamSection' instead of 'uint32_t'
    -- Change 'AL_ESectionFlags' enum values

  Fixes:
    -- Several minors bugs

2020-01-21 (v1.0.55)
-------------------
  Added Features:
    -- Performances logs for rate control

  API:
    -- Version of the API is now 0.20.0
    -- Modify 'AL_ENABLE_PERF_MONITOR' usage

  Fixes:
    -- Several minors bugs

2020-05-26 (v1.0.56)
-------------------
  Added Features:
    -- Add max consecutive skipped frames
    -- RC Plugin extension (support external)

  API:
    -- Version of the API is now 0.21.0
    -- Modify 'bSplitInput' -> 'eInputMode' at decoder side. Enums values: AL_DEC_UNSPLIT_INPUT, AL_DEC_SPLIT_INPUT
    -- Add zRcPluginDmaSize and pRcPluginDmaContext at encoder side
    -- Add PluginInterface in API
    -- AL_CB_EndParsing now retrieve the iParsingID. The iParsingID corresponds to the id in the AL_HandleMetaData associated with the buffer.

  Fixes:
    -- Potential race condition at scheduler level (especially with eInputMode == AL_DEC_SPLIT_INPUT)
    -- Several minors bugs

2020-06-25 (v1.0.57)
-------------------
  Added Features:
    -- HDR: added support of HLG, HDR10+ and DolbyVision metadata in encoder and decoder

  API:
    -- Version of the API is now 0.22.0
    -- Add AL_Buffer_AllocateChunkNamed: Allocate and bind a new memory chunk to the buffer
    -- Modify AL_PixMapBuffer_Allocate_And_AddPlanes: Add the name of the buffer (for debug and allocation tracking purpose)
    -- Add AL_TRANSFER_CHARAC_BT_2100_HLG transfer characteristics
    -- Add AL_TDynamicMeta_ST2094_10 dynamic SEI in AL_THDRSEIs structure
    -- Add AL_TDynamicMeta_ST2094_40 dynamic SEI in AL_THDRSEIs structure
    -- Function AL_Encoder_SetHDRSEIs can be called dynamically to change the value of ST2094_10 and ST2094_40 SEIs

  Fixes:
    -- Several minors bugs

2020-07-13 (v1.0.58)
-------------------
  Added Features:
    -- Reviewed how slice-lat is handled:
        - In AVC slice-lat (multicore or old single core), wait for both (enc1 and enc2) all interrupts instead of just all enc2
        - Generate only one end-request at a time, otherwise we can erase end-requests that haven't been outputted (queue size in only 3!). End-requests now generated either at interrupt-callbacks, or when user output an end-request from the channel manager
    -- Force SEI in XAVC

  API:
    -- Version of the API is now 0.23.0

  Fixes:
    -- AVC Buffering Period SEI
    -- XAVC (long gop):
        - close GOP
        - Recovery Point SEI
    -- Several minors bugs

2020-08-06 (v1.0.59)
-------------------
  Added Features:
    -- Add Plane-U and Plane-V in the CtrlSW API

  API:
    -- Version of the API is now 0.24.0
    -- Decoder: Remove unused bConceal parameter/member and replace bUseBoard by more generic sPrefix (similar to the encoder API)
    -- New chroma planes in CtrlSW API changes are:
        - Planar buffers must me allocated with Plane-U/Plane-V (Plane-UV usage restricted to semiplanar)
        - In the decoder, AL_DecGetAllocSize_Frame_Y/AL_DecGetAllocSize_Frame_UV replaced by AL_DecGetAllocSize_Frame_PixPlane
        - In the encoder, AL_GetAllocSizeSrc_Y/AL_GetAllocSizeSrc_UV replaced by AL_GetAllocSizeSrc_PixPlane
        - Required planes for a FourCC can be obtained with AL_Plane_GetBufferPixelPlanes/AL_Plane_GetBufferPlanes

  Fixes:
    -- Force Picture Timing SEI dpb_output_delay = 0, on intra only profile
    -- Fix max consecutive skip
    -- Fix Rtos_WaitEvent on system where pthread_cond_wait wan return EINTR
    -- Several minors bugs

2020-08-19 (v1.0.61)
-------------------
  Added Features:
    -- cfg Arithmetic value can now handle (K, Ki, M, Mi, G, Gi) as prefix identifier. They are respectively 1000, 1024, 1000², 1024², 1000³, 1024³

  API:
    -- Version of the API is now 0.25.0
    -- Cfg parser API add MaxPictureSizeInBits (I,P,B). Values are in bits instead of Kbits (MaxPictureSize)
    -- Add new file lib_common/PicFormat.h (Picture's formats extracted from lib_common/SliceConsts.h)
    -- Add new file lib_common/CodecHook.h to hook the code (it can helps user application)
    -- Better handling of decoder register. They're now more generic

  Fixes:
    -- XAVC:
        - User should set AspectRatio in order to follow the requirement of the profile
        - User should set MaxPictureSizeInBits in order to pad Intra CBG profile
    -- Several minors bugs
