foss-xtensa / xaf-hostless

Cadence Audio Framework - Hostless

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#
# Copyright (c) 2015-2022 Cadence Design Systems, Inc.
# 
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
# 
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#

======================================================================
Xtensa Audio Framework (XAF) - Hostless solution
======================================================================

======================================================================
Revision History
======================================================================

Version 2.10 API 2.1 : November 24, 2021

+ GA Release

+ Built with RI.6 tools

+ Compiled with xt-clang compiler


+ [J3058] In AEC23 plugin, added changes to return non-fatal error if
  both input ports have 0 length input data. Also non-fatal error is
  returned during execution if the output buffer is NULL.

+ [J3066] Added checks to prevent the input buffer fill level from
  going negative in xf_input_port_consume function if input-port 
  bypass is enabled and a corresponding CRITICAL trace print. 
  This could happen if the component plugin incorrectly reports 
  consumed bytes to be greater than the input bytes. 

+ [J3070] Corrected components' default priority calculation logic to
  ensure that the default priority remains the highest priority among
  the DSP worker threads.

+ [J3077] Modified TIMEBASE_FREQ value to support 1 to 16 channels;
  1,2,3 or 4 bytes per PCM-sample and commonly used sample rates 
  between 4000 to 192000 Hz. Also made changes in prepare_runtime 
  function of all the classes to support 8 bits per PCM-sample.

+ Compiler warning fixes:
  Fixed two "comparison of integers of different signs" warnings
  observed with -Wextra build option in xf-proxy.c.

+ Testbench changes:
  Corrected the argument type of comp_cycles passed to
  compute_comp_mcps function from 'int' to 'long long'.

----------------------------------------------------------------------

Version 2.9_Beta API 2.1 : September 24, 2021

+ Built with RI.6 tools

+ Compiled with xt-clang compiler

+ Programmers Guide not updated


+ [J2564] Reverted workaround code change to address XOS thread
  abort issue, since the the fix is available in newer tools version
  (RI.6 and above).

+ [J2928] Extended set/get config APIs are also enabled for MIMO, Mixer
  and Renderer classes.

+ [J2970] Added changes for graceful handling of fatal errors from 
  message processing function xf_core_process_message().

+ [J2982] Corrected a condition check in "xf_worker_queue_purge" 
  function.

+ [J3023] Fix to avoid scheduling of components after a fatal error
  has occured.

+ [J3025] Fixed validation of frame_size to be multiple of
  codec->sample_size by using the input-buffer length (PCM) instead
  of the output buffer length for encoder components.

+ [J3028] Added checks to avoid NULL pointer access after component 
  deletion in the local message submit logic(same thread components).

+ Optimization changes:
  Optimized memory usage by removing base_cancel_pool related code 
  when preemption is active and decentralized scheduling is used.

+ Robustness fixes:
  1. Replaced XF_CHK_ERR with condition check and to print appropriate
  trace message with WARNING tag instead of ERROR tag in the function
  xa_base_event_handler().
  2. Corrected return value if the component's scheduled processing 
  occurs when it is in terminate state (all classes).
  3. Corrected a trace print in xf_mm_alloc().
  4. Fixed component state check in xaf_comp_get_status() API to
  return the correct status to the application if the component delete
  was already initiated.
 
+ Plugin changes:
  1. Renamed opus encoder plugin directory from "opus" to "opus_enc".
  2. Corrected mimo plugins' input and output buffer NULL check 
  error values.

+ Testbench changes:
  1. The following new testbench is added:
     - xaf-full-duplex-opus-test.c (Opus Full Duplex Pipeline).
  2. The following testbeches are no longer packed:
     - xaf-full-duplex-test.c
     - xaf-aac-dec-test.c
     - xaf-src-test.c
     - xaf-vorbis-dec-test.c
     - xaf-opus-enc-test.c
     - xaf-opus-dec-test.c
  3. Added 2 more MCPS prints after testbench execution
  XAF MCPS and Total MCPS (DSP Component MCPS + Framework MCPS).
  4. Fixed memory corruption in xa_app_receive_events_cb() due to
  write event array index exceeding maximum value.

+ Packaging changes:
  Added support for the following multiple testbench project in xws
  package which can be built and run out-of-the-box(15 test projects)
     - testxa_af_hostless 
     - testxa_af_mimo_mix 
     - testxa_af_gain_renderer 
     - testxa_af_capturer_gain 
     - testxa_af_renderer_ref_port 
     - testxa_af_dec* 
     - testxa_af_dec_mix* 
     - testxa_af_amr_wb_dec* 
     - testxa_af_mp3_dec_rend*
     - testxa_af_capturer_mp3_enc* 
     - testxa_af_playback_usecase* 
     - testxa_af_full_duplex_opus* 
     - testxa_af_tflm_microspeech* 
     - testxa_af_tflm_pd*
     - testxa_af_tflm_microspeech_pd*
  The test projects with(*) require dependent libraries, header files
  and Additional Liker path to be provided.

+ Notes:
  1. xaf_comp_set_config_ext and xaf_comp_get_config_ext API usage is
  now demonstrated in the functions opus_dec_setup() and
  get_opus_dec_config() of the newly added Opus Full Duplex testbench
  (xaf-full-duplex-opus-test.c).
  2. testxa_af_hostless project has common test_inp and test_out 
  directory hosting input and output files of all the test projects in 
  the package. Hence user must import this project into the workspace.
  3. For testxa_af_full_duplex_opus, xa_opus_codec.a of only one of 
  the opus_enc or opus_dec plugin needs to be provided for linking.

----------------------------------------------------------------------

Version 2.8_Alpha API 2.1 : August 11, 2021

+ Built with RI.6 tools

+ Programmers Guide not updated


+ [J2893] xaf_format_t type used by the application is moved from 
  xaf-api.h to xaf-utils-test.h.

+ [J2908] Fixed critical Coverity scan errors in xaf library, PCM-Gain
  plugin and FreeRTOS.

+ [J2914] Enabled support for decoder initialization without input.

+ [J2928] Added support for extended get-config and set-config to
  support more than 4 bytes of data per config parameter.

+ [J2942] Added support for input port bypass to avoid data copy at
  input ports from connect buffers to input buffer of components.

+ [J2943] Added per-worker-thread de-centralized scheduler and 
  message queue for MCPS reduction.

+ [J2952] Corrected component ID of SRC component from 
  "audio-fx/src-pp" to "post-proc/src-pp".

+ [J2957] Corrected output buffer length adjustment in mimo-class and
  mixer class fill-this-buffer functions.

+ [J2973] Reverted flexi-lock optimizations around sync-msg-queues
  to ensure sync-msg-queues always have locked access. 

+ [J2977] Enabled propagation of non-fatal error codes for synchronous
  APIs through response message.

+ [J2979] Enabled CRITICAL trace prints with minimal increase in code
  size (~2%).

+ [J2982] Fixed a memory corruption issue by responding to pending
  worker queue messages during component deletion.

+ [J2985] Fixed potential buffer corruption due to concurrent
  auxiliary buffer access.

+ [J2999] Added changes to avoid relax-schedule check for output port
  readiness of MIMO components during initialization.

+ Added following new APIs:
  1. xaf_comp_set_config_ext(pVOID comp_ptr, WORD32 num_param, 
  WORD32 *p_param);
  Note: This API is not a replacement for existing API used for
  component setup(xaf_comp_set_config) and it should not be used
  until component setup is done.

  2. xaf_comp_get_config_ext(pVOID comp_ptr, WORD32 num_param, 
  WORD32 *p_param);

+ Plugin changes:
  1. Consumed bytes variable to consider any partial bytes less than
  sample_size. This change is done in PCM-Gain, Mimo-mix, PCM-Split
  and Mixer component plugins.
  2. Updated Mixer plugin to avoid memset on the input buffer if 
  filled partially.

+ Robustness fixes:
  1. Added component state check after xf_response_get() in
  xaf_comp_get_status() API call. This prevents any buffer access 
  after the component gets deleted.
  2. Corrected a condition check for xf_client_lookup() in
  dsp_worker_entry().

+ Notes:
  1. Input-port-bypass is activated if the plugin reports its input
  buffer size as zero when queried with XA_API_CMD_GET_MEM_INFO_SIZE.
  A usage is demonstarted in the plugin PCM-Gain(xa-pcm-gain.c) under 
  the disabled compile time option XA_INPORT_BYPASS_TEST.
  2. xaf_comp_set_config_ext and xaf_comp_get_config_ext API usage is
  demonstrated in the functions get_opus_dec_config() and 
  opus_dec_setup() of Opus decoder testbench(xaf-opus-dec-test.c)
  and support a maximum of 8 configuation parameters per API call.
  3. Usage of decoder component intialization without input data is
  shown in the AMR decoder testbench(xaf-amr-wb-dec-test.c).

----------------------------------------------------------------------

Version 2.7_Alpha API 2.0 : May 28, 2021

+ Alpha Release
+ Built with RI.6 tools, xt-clang compiler
+ Programmers Guide not updated

+ Added support for TensorFlow Lite For Micro (TFLM) inference
  networks to be added as components in XAF.
  
+ Added following two XAF components to demonstrate TFLM support 
  - Microspeech Yes-No Recognizer
  - Person Detect 

+ Added following three XAF applications to demonstrate TFLM support
  - Microspeech Yes-No Recognizer Application
  - Person Detect Application
  - Simultaneous Microspeech and Person Detect Application

+ Note: TFLM code or libraries are not included in the package.
  Please refer to $libxa_af_hostless/build/readme_tflm.txt for details
  on how to download and build TFLM code, and TFLM XAF applications.

+ Note: The XAF TFLM support is built and tested with:
  https://github.com/tensorflow/tensorflow/commit/a1acddcf3f990332b5f0bd19faba1d6e256787f0
  
----------------------------------------------------------------------

Version 2.6 API 2.0 : March 31, 2021

+ GA Release
+ Built with RI.2 tools

+ [J2877] Fixed potential memory overwrite bug by returning UWORD32
  instead of UWORD64 during get-config for capturer and renderer
  component plugins.

+ [J2806] Fixed the rollback logic to avoid memory corruption when
  event channel creation fails.

+ [J2804] Fixed the rollback logic during port routing to prevent
  propagation of already freed buffers.

+ [J2799] Reduced maximum number of event buffers per channel from
  1024 to 16.

+ [J2746] Renderer plugin state changed to IDLE when execution is
  complete. 
   
----------------------------------------------------------------------

Version 2.5_Beta API 2.0 : January 08, 2021

+ Beta release 
+ Built with RI.2 tools
+ Programmers Guide not updated

+ [J2714] Schedule-tree bug fixes for deleting a node which is not
  present on the schedule-tree and for adding a node which is already
  present on the schedule-tree

+ [J2662] Compulsory flush message propagation when triggered due to
  natural EOS in execution, even if the port is IDLE.

+ [J2624] In Opus encoder plugin, corrected bytes consumed calculation
  for multi-channel inputs.

+ [J2617] Corrected the calling order of functions in all the classes,
  xf_output_port_flush_done and xf_output_port_unroute_done to enable
  correct state update (uses XOR operation to toggle states).

+ [J2611] Corrected duplicate bit-masks for two of the component 
  states in mimo-proc class (XA_OUT_TRACK_FLAG_FLUSHING_DONE and 
  XA_MIMO_FLAG_PROBE_SETUP)

+ [J2601] Added -mcoproc compiler option to all source file 
  compilation of library that are not associated with ISR.

+ [J2600] -Wextra warnings: Removed warnings other than 
  'unused variable' for library

+ [J2592] Added check for maximum alignment value in xf_mem_alloc() 

+ Robustness Fixes:
  - Core: 
  1. Introduced component lookup after dequeue of message from worker 
  queue, and reply with appropriate response if the lookup fails.
  When component lookup fails, prevent internally generated UNREGISTER 
  message by responding  with an internal response_failure message.
  2. Components are assigned the highest-worker-thread priority when 
  created until the set-config-parameter stage where the priority is
  reverted to that of either the background-thread or the configured 
  priority(XAF_COMP_CONFIG_PARAM_PRIORITY)
  3. Disabled code related to unused queue "cd->response".

  - IO:
  1. Added state check XF_INPUT_FLAG_PURGING for xf_input_port_ready
  and XF_OUTPUT_FLAG_FLUSHING for xf_output_port_ready.
  2. Disabled premature input-port state change from XF_INPUT_FLAG_EOS
  to XF_INPUT_FLAG_DONE in xf_input_port_put.

  - Base-class:
  1. Updated base-cancel mechanism based on the schedule-tree fixes.
  When preemption is enabled, base_cancel attempts to remove the node
  from schedule-tree, failing which the node is enqueued
  into base_cancel queue, which is dropped from processing when a 
  matching node is dequeued from the worker->queue.
  2. Corrected the variable in scratch size assertion/check to that 
  of the worker_thread_scratch_size in base_postinit.

  - Audio-codec class: 
  1. Flush: if there is a flush on input port, and the flush completes
  immediately, then update the base->state to COMPLETED if the output
  port is unrouted.
  2. Probe_pause: probe_stop should complete flushing the probe port 
  without checking if base->state is COMPLETED.
  3. Fill_this_buffer: check xf_output_port_ready before scheduling 
  as the port may be in unrouting or flushing state.

  - Mimo-proc class: 
  1. Terminate: Remove the assert of output port number check
  2. Unroute: on unroute, update output port state to unrouted and 
  indicate disconnect to plugin early.
  3. Fill_this_buffer: check if the port is unrouting before changing 
  the output port state to routed and indicate connect to plugin.
  4. Cleanup: avoid setting the state unroute_done which is redundant 
  at this point.
  5. Route: check if the ports are ready before scheduling
  6. unroute_done() to be called after the flag
  XA_OUT_TRACK_FLAG_FLUSHING_DONE is set, to make sure all flags are
  cleared after unroute completes.
  7. Fix for handling EMPTY_THIS_BUFFER when in terminate: avoid
  calculating output index of a port for any buffer arriving on
  input port.
  8. Output port flag XA_OUT_TRACK_FLAG_FLUSHING_DONE is cleared when
  output is produced.

  - All classes:
  1. Removed assert check for COMPLETED state in fill_this_buffer().
  2. Delayed response to UNREGISTER command from application until
  the component completes flushing and freeing of memory.
  3. Handling of lookup-failure messages to prevent self-destruction 
  of the component.

  - API: 
  1. Fixed a range check error in xaf_adev_set_priorities().

  - Plugins:
  1. Capturer: Avoid assert on NULL output buffer(output buffer is 
  optional and plugin needs to take appropriate action if NULL).

+ Event communication features:
  1. Event communication to application using event channels
  2. Fatal and non-fatal error reporting to application (as event)
  using event channel per component
  3. Event communication from one component to another
  4. Self-scheduling support for components from plugins

+ API changes:
  1. xaf_adev_open(pVOID *pp_adev, WORD32 audio_frmwk_buf_size, 
  WORD32 audio_comp_buf_size, xaf_mem_malloc_fxn_t mem_malloc, 
  xaf_mem_free_fxn_t mem_free)
  -> xaf_adev_open(pVOID *pp_adev, xaf_adev_config_t *pconfig)
  The old API is retained as xaf_adev_open_deprecated()
  New xaf_adev_open() supports configurable scratch memory size (per 
  worker thread), dsp-thread-priority and proxy-thread-priority, 
  callback function pointer for events
  Older xaf_adev_open API is available as xaf_adev_open_deprecated 

  2. xaf_comp_create(pVOID adev_ptr, pVOID *pp_comp, xf_id_t comp_id,
  UWORD32 ninbuf, UWORD32 noutbuf, pVOID pp_inbuf[], 
  xaf_comp_type comp_type)
  -> xaf_comp_create(pVOID p_adev, pVOID *pp_comp, 
  xaf_comp_config_t *pconfig)
  The old API is retained as xaf_comp_create_deprecated()
  New xaf_comp_create() supports configurable enabling of fatal-error
  reporting(as an event)
  Older xaf_comp_create API is available as xaf_comp_create_deprecated

  3. Added new APIs for event communication:
     xaf_create_event_channel
     xaf_delete_event_channel

  4. Added new APIs to initialize default configuration parameters 
     xaf_adev_config_default_init
     xaf_comp_config_default_init

+ App Interface Layer changes:
  1. Added a thread-safe mechanism for component chain access
  2. Optimized comp_state to only necessary states RESET and CREATE
  3. Delayed the component state update in comp_create until component 
  is created

+ DSP Interface Layer changes:
  1. Added BUG asserts for possible hang-case detection in
  xf_mm_alloc/xf_mm_free, enabled with DEBUG=1 build option.

+ Plugin Changes:
  1. Added XA_<component>_CONFIG_PARAM_FRAME_SIZE_IN_SAMPLES 
  configuration parameter for consistency of frame_size setting 
  in samples-per-channel.
  Components updated: PCM_GAIN, MIXER, OPUS_ENC, CAPTURER, RENDERER
  The older counterparts XA_<component>_CONFIG_PARAM_FRAME_SIZE,
  will be removed in future.
  2. Updated plugins xa-pcm-gain.c, xa-mimo-mix.c to demonstrate
  event communication between components.

+ Testbench Changes
  1. Testbench changes to demonstrate event communication between
  components: xaf-mimo-mix-test.c
  2. Testbench changes to demonstrate error reporting to application:
  xaf-playback-usecase-test.c
  3. Corrected  help text in gain-renderer testbench.

+ MCPS reduction changes:
  1. A buffer can be submitted by a component to the destination 
  worker-queue by directly calling dispatch, thus avoiding enqueue 
  and dequeue of DSP-thread queue.
  2. base_cancel to check the presence of schedule-node in worker 
  queue to avoid spurious scheduling.
  3. Sync msgq access with disable/restore of interrupts instead of
  RTOS' mutex locks.
  4. Added port readiness check for input port in mimo class
  fill_this_buffer() to avoid excess scheduling.
  5. Added a generic lock wrapper as xf-flx-lock-if.h (flexi-lock)
  The locks are initialized as dummy by default. With pre-emption
  enabled, when worker threads are created, the scheduler, shmem and
  component-memory locks are reinitialized to RTOS-mutex-locks and
  xf_sync_enqueue/dequeue locks are reinitialized to interrupt
  disable/restore type of access.

+ Code size reduction changes:
  Following optional (not used by default) compile time switches are 
  provided:
  1. XA_DISABLE_EVENT: To disable event-communication related code 
  2. XA_DISABLE_DEPRECATED_API:  To disable deprecated API code

----------------------------------------------------------------------
Version 2.3 API 1.3 : July 24, 2020

+ GA release 
+ Built with RI.2 tools

+ [J2593] Added support for following two config params in Opus
  encoder plugin:
    - XA_OPUS_ENC_CONFIG_PARAM_SIGNAL_TYPE
    - XA_OPUS_ENC_CONFIG_PARAM_RESET_STATE

+ [J2592] Fixed XAF internal memory allocator to use alignment 
  parameter appropriately

+ [J2586, J2587] Fixed argument to xos_start_system_timer() API
  to select a timer with highest interrupt-priority <= EXCMLEVEL

+ [J2576, J2577] Fixed memory leaks by deleting the timer object in 
  capturer and renderer plugins

+ [J2567] Updated audio-codec-class to reset base state when an 
  output buffer is received after execution completion

+ Renamed pcm_mix component plugin to mimo_mix

----------------------------------------------------------------------
Version 2.2_Beta API 1.3 : May 21, 2020

+ Beta release 
+ Built with RI.2 tools
+ Programmers Guide not updated

+ [J2220] Hostless XAF is tested and supported on Fusion cores

+ [J2226, J2464] Unified Hostless XAF release packages across cores

+ [J2543] Fixed a bug by clearing output_setup flag on relaxed output 
  ports during postprocess in MIMO class

+ [J2544] Added reset EOS stream flags in Opus Encoder, PCM Gain, 
  SRC plugin files to enable re-run upon receiving new input

+ [J2545] PCM Gain plugin updated to support 8, 24, 32 bit PCM width
  and multichannel input data

+ [J2546] Fixed a bug in scratch allocation with pre-emptive 
  scheduling - allocated independent scratch for each worker thread

+ [J2553] Fixed a bug in MIMO class postprocess to avoid re-schedule
  if execution is complete

+ [J2561] Updated XF_TIMEBASE_FREQ to support 48kHz, 16ch, 32bit PCM
  configuration

+ [J2563] Fixed a memory leak bug by freeing all mutex locks in 
  xaf_adev_close API

+ [J2456] Updated runtime commands logic in testbench to allow other
  runtime commands to execute while disconnect API is in progress

----------------------------------------------------------------------
Version 2.1_Alpha API 1.3 : April 23, 2020

+ Alpha release - HiFi4 only
+ Built with RI.2 tools

+ Changed some non-standard return codes from XAF Developer APIs to
  standards XAF Error codes

+ Updated xaf_comp_get_status API to return EXEC_DONE status for
  components returning output or probe data to application

+ [2453] Enhanced mem_malloc and mem_free wrappers to avoid maximum
  number of allocations allowed constraint

+ [2472] Minimum connect buffers between components requirement is 
  reduced from 2 to 1. Note with this change, MIMO class preprocess
  allows execution if any of input port has non-zero data (earlier,
  it would check for non-zero data on all input ports) 

+ [2473] Moved TRACE control tags to xf-debug.h for better 
  configurability

+ [2475] Fixed bug in renderer disconnect API implementation

+ [2486] Increased auxiliary buffer size from 128 to 256 to allow
  32 configuration parameters in xaf_comp_set_config and 
  xaf_comp_get_config API (shared memory usage increases by 4kB)
 
+ [2491] Updated xaf_get_mem_stats API implementation to report
  peak and current memory usage. Note with this change, the API
  expects pointer to array of five integers as second argument 
  (earlier it expected pointer to array of three integers)

+ [2498] Fixed bug of redundant stack allocation during thread
  creation with FreeRTOS

+ [2513] Reduced input buffer size requirement of Opus encoder
  plugin to hold only one frame

+ [2528] Removed fatal error from capturer class in case of output 
  buffer non-availability, this should be handled by plugin

+ [2530] Updated copyright headers to MIT style for all files

+ Programmers Guide not updated

----------------------------------------------------------------------
Version 2.0 API 1.3 : January 31, 2020

+ GA Release - HiFi3, HiFi4 and HiFi5 only
+ Built with RI.2 tools

----------------------------------------------------------------------
Version 1.8_3_Alpha API 1.3 : December 23, 2019

+ Patch release - HiFi4 only
+ Built with RI.2 tools

+ Added MIMO (Multi-Input, Multi-Output) data processing class.

+ Added following new XAF Developer APIs:
    XAF_ERR_CODE xaf_pause(pVOID p_comp, WORD32 port);
    XAF_ERR_CODE xaf_resume(pVOID p_comp, WORD32 port);
    XAF_ERR_CODE xaf_probe_start(pVOID p_comp);
    XAF_ERR_CODE xaf_probe_stop(pVOID p_comp);
    XAF_ERR_CODE xaf_disconnect(pVOID p_src, WORD32 src_out_port, 
                 pVOID p_dest, WORD32 dest_in_port);

+ Updated prototype for xaf_connect API:
    XAF_ERR_CODE xaf_connect(pVOID p_src, WORD32 src_out_port, 
                 pVOID p_dest, WORD32 dest_in_port, WORD32 num_buf);

+ Added support for FreeRTOS.

+ Added support for preemptive scheduling for both XOS and FreeRTOS.

+ Following updates are done for Renderer Class:
- Changed logic to schedule execution of renderer on each interrupt 
  irrespective of input port readiness
- Added XAF_START_FLAG command support for explicit initialization of 
  renderer
- Added support for additional, optional output port to generate 
  reference or feedback output

+ Following updates are done for Audio Codec Class:
- Updated Audio Codec Class to initialize all components except 
  decoders (comp_type XAF_DECODER) without input data

+ Following updates are done for Renderer Plugin:
- Added actual FIFO in the plugin to mimic hardware operation
- Added state configuration parameter (XA_RENDERER_STATE_START) to 
  start renderer hardware operation (e.g. enable interrupt)
  Note, even if this configuration parameter is not used from 
  application, renderer hardware operation starts once FIFO is full
- Added logic to zero-fill output if real data is not available
  At start, this logic would insert zero frames or prepend zeros to 
  real data, if required
  At runtime, this logic would insert zero frames or append zeros to 
  real data, if required
- Added support for additional, optional output port to generate 
  reference or feedback data
- Moved renderer execution from set_input_bytes() to do_execute() 
  function
- Added logic to set exec-done from plugin when input is over

+ Following updates are done for Capturer Plugin:
- Added state configuration parameter (XA_CAPTURER_STATE_START) to 
  start capturer hardware operation (e.g. enable interrupt)
  Note, this configuration parameter must be issued from application 
  for capturer hardware operation to start
- Moved capturer execution from set_mem_ptr() to do_execute() function

+ Updated initialization API call sequence requirement as - 
  initialization status must be queried by xaf_comp_get_status() API
  after xaf_comp_process(...XAF_START_FLAG) API call. 

+ Corrected Capturer output port number to 0 from 1.

+ Added few robustness fixes as per internal QA testing.

+ Added new example testbenches and plugins to demonstrate usage of 
  new features.

+ Programmers Guide not updated.

+ Notes
 - New feature implementation mentioned above has undergone limited 
   testing and may get updated.
 - By default, this release uses XOS as RTOS.
 - To use FreeRTOS instead of XOS, please refer to instructions in 
   'libxa_af_hostless/build/readme-freertos-bld.txt'.
 - XOS is configured with 100 MHz clock frequency with 0.1 ms timer 
   tick resolution whereas FreeRTOS is configured with 50 MHz clock
   frequency with 1 ms timer tick resolution.
 - Known constraint: MCPS computation and prints are not supported
   with FreeRTOS in this release.

----------------------------------------------------------------------
Version 1.4 API 1.1 : March 11, 2019

+ GA release.

----------------------------------------------------------------------
Version 1.3p4_Alpha API 1.1 : August 30, 2018

+ Patch release - HiFi3 and HiFi4 only
+ Built with RG.5 tools

+ [J2117] Fixed an issue in xaf_adev_close function (ensured internal 
  proxy thread is closed properly).
+ [J2118] Sample Rate Convertor plugin wrapper is updated to work 
  with Sample Rate Convertor v1.9 Library.

+ Updated Programmers Guide to indicate 
  - XAF must not be used with fast functional 'TurboSim' mode of 
    Instruction Set Simulator.
  - Sample Rate Convertor plugin wrapper is updated to work with 
    Sample Rate Convertor v1.9 Library.

----------------------------------------------------------------------
Version 1.3p3_Alpha API 1.1 : March 12, 2018

+ Patch release 
+ Built with RG.5 tools

+ [J2004] Fixed an issue in compilation of ISR code (removed -mcoproc
  compile flag for ISR code). 

----------------------------------------------------------------------
Version 1.3p2_Alpha API 1.1 : February 2, 2018

+ Patch release - HiFi4 only
+ Built with RG.5 tools

+ Fixed issues in packaging of release packages.

----------------------------------------------------------------------
Version 1.3p1_Alpha API 1.1 : February 1, 2018

+ Patch release - HiFi3, HiFi4 only
+ Built with RG.5 tools

+ [J1965] Avoided use of cache line size (core specific) while 
  calculating size of cache line aligned DSP Thread Handle struct.  

----------------------------------------------------------------------
Version 1.3_Alpha API 1.1 : December 14, 2017

+ Initial (Alpha) customer release. 

----------------------------------------------------------------------
Version 1.2 API 1.1 : November 21, 2016

+ Known issues in Release 1.1 fixed.
+ Added support for renderer and capturer components.
+ Added AAC-Dec, Renderer, Capturer, SRC components along with
   corresponding test benches.
+ Testbenches updated for Realtek ALC5677 EVM.

----------------------------------------------------------------------
Version 1.1 API 1.1 : June 2, 2016

+ Known issues in Release 1.0 fixed.
+ Added testbenches for mixer, audio encoder and speech decoder.
+ Improved robustness and minor changes in API.

----------------------------------------------------------------------
Version 1.0 API 1.0 : March 04, 2016

+ Initial release.

----------------------------------------------------------------------
Version 0.7 API 1.0 : December 17, 2015

+ Beta release.

----------------------------------------------------------------------
2022-04-08:13:14:RI-2021.6:712830:726678:716953::

About

Cadence Audio Framework - Hostless

License:Other


Languages

Language:C 99.0%Language:C++ 0.7%Language:Makefile 0.2%Language:Shell 0.1%