Application Layer

Application Layer represents the built-in FW processing components, loadable FW components and example templates with application libraries required for components integration. Application layer content is assumed to be open source and only proprietary 3rd party components should remain private.

@startuml
allowmixing

scale max 1280 width

package "SOF" {

  package "Application layer" as APP_CUSTOMIZATION {

    package "Example Loadable Components" as LOADABLE_COMPONENTS {
      component "3rd Party Post-Processing" as PROCESSING_3RD_PARTY
      component "WoV" as WOV_MODULE
      component "ACA" as ACA_MODULE
      component "Other modules" as OTHER_MODULES

      PROCESSING_3RD_PARTY -[hidden]right- WOV_MODULE
      WOV_MODULE -[hidden]right- ACA_MODULE
      ACA_MODULE -[hidden]right- OTHER_MODULES
    }

    package "Built-in Components" as BUILTIN_COMPONENTS {
      component "Copier" as COPIER
      component "SRC" as SRC
      component "Mixers" as MIXERS
      component "History Buffer/KPB" as HISTORY_BUFFER
      component "Probe" as PROBE

      COPIER -[hidden]right- SRC
      SRC -[hidden]right- MIXERS
      MIXERS -[hidden]right- HISTORY_BUFFER
      HISTORY_BUFFER -[hidden]right- PROBE
    }

      BUILTIN_COMPONENTS -[hidden]down- LOADABLE_COMPONENTS
  }

  package "System Services" as SYS_SERVICES {

    interface "System Services" as SS

    package "Media Processing Pipelines Services extension" as KERNEL_EXTENSION {
        component "Communication" as COMMUNICATION
        component "Pipelines and Component Infrastructure" as PIPELINE_COMPONENT_INFRASTRUCTURE
        component "AVS Scheduling" as AVS_SCHEDULERS

        COMMUNICATION -[hidden]right- PIPELINE_COMPONENT_INFRASTRUCTURE
        PIPELINE_COMPONENT_INFRASTRUCTURE -[hidden]right- AVS_SCHEDULERS
    }

    package "Zephyr" as ZEPHYR {
        component "Services" as SERVICES
    }

    SS -[hidden]down- KERNEL_EXTENSION
    SS -[hidden]down- ZEPHYR

    KERNEL_EXTENSION -[hidden]right- ZEPHYR
  }

  APP_CUSTOMIZATION -[hidden]down- SYS_SERVICES
  BUILTIN_COMPONENTS .down. SS
  PROCESSING_3RD_PARTY .down. SS
  WOV_MODULE .down. SS
  ACA_MODULE .down. SS
  OTHER_MODULES .down. SS
}

@enduml

Figure 43 Application Layer

Components in Application Layer

The built-in components are built together with base firmware and they have direct access to all firmware drivers and service APIs. When built-in module is enabled in configuration, it is guaranteed to exist in firmware binary.

The loadable components are built separately from base firmware and they are loaded dynamically as a separate binary, depending on the host audio configuration.

All the application layer components access base firmware services via System Services ABI.

NOTE: The built-in components are utility components provided by base firmware/kernel.

Examples of built-in components:

  • Audio built-in components: Copiers, Mixers, Volume, SRC, etc.

Probe

The probe module is special module in FW infrastructure that allows to inject or extract data from a specified probe point. The traditional client platforms use HDA DMAs to transfer data in and out of such module.