
===========================================

           Petit Audio Framework

  #     # ####### #     # ######     #
  #     #      #  #     # #     #   # #
  #     #     #   #     # #     #  #   #
  #     #    #    #     # ######  #     #
  #     #   #     #     # #   #   #######
  #     #  #      #     # #    #  #     #
   #####  #######  #####  #     # #     #

   Copyright(C) 2012 Shinichiro Nakamura

===========================================

1. What's the UZURA?

  UZURA is a audio framework using micro controller.
  It provides simple API for processing audio data.

2. Application Interfaces

  2-1. The handler and the fields

    2-1-1. UZURA handler

      typedef struct UZURA UZURA;

      UZURA handler is the UZURA handler.

      #define UZURA_LEVEL_INPUT(P)    ((P)->input)
      #define UZURA_LEVEL_OUTPUT(P)   ((P)->output)
      #define UZURA_USER_DATA(P)      ((P)->user_data)

      /**
       * @brief Volume Memory.
       */
      typedef struct {
          uint32_t left;   /**< Left. */
          uint32_t right;  /**< Right. */
      } level_t;

      struct UZURA {
          UZURA_EFFECT_FUNC effect;   /**< Effect callback. */
          UZURA_SYSTEM_FUNC system;   /**< System callback. */
          level_t input;              /**< Input volume. */
          level_t output;             /**< Output volume. */
          void *user_data;            /**< User external object. */
      };

  2-2. The callback functions

    2-1-2. Effect callback function

      typedef void (*UZURA_EFFECT_FUNC)(UZURA *p, const int32_t *src, int32_t *des, int32_t count);

      UZURA_EFFECT_FUNC is the UZURA effect callback function.

    2-1.3. System callback function

      typedef void (*UZURA_SYSTEM_FUNC)(UZURA *p);

      UZURA_SYSTEM_FUNC is the UZURA system callback function.

  2-3. UZURA Application interfaces

    2-3-1. Initializer

      void uzura_init(UZURA *p, void *user_data);

    2-3-2. Setup functions

      void uzura_set_effect(UZURA *p, UZURA_EFFECT_FUNC effect);
      void uzura_set_system(UZURA *p, UZURA_SYSTEM_FUNC system);

    2-3-3. Execute

      void uzura_execute(UZURA *p);

