summaryrefslogtreecommitdiffstats
path: root/docs/4a-framework/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/4a-framework/README.md')
-rw-r--r--docs/4a-framework/README.md23
1 files changed, 23 insertions, 0 deletions
diff --git a/docs/4a-framework/README.md b/docs/4a-framework/README.md
new file mode 100644
index 0000000..1cc2940
--- /dev/null
+++ b/docs/4a-framework/README.md
@@ -0,0 +1,23 @@
+# AGL Advanced Audio Architecture (4a)
+
+4a is an audio framework made to handle automotive use cases like stream priority and interruptions. It does **not** deal with the audio by itself but rather with the policies and signaling about it. This means that 4a must be used in conjunction with an other API that is in charge of the audio stuff, like **alsa** or **pulseaudio**.
+
+# Architecture
+
+## Global architecture
+![applications architecture diagram](images/apps-architecture.svg)
+
+This diagram shows the global architecture that any application playing audio should follow. As a developper, when you want to play audio, you rely on APIs such as alsa, pulseaudio or higher level API(s). To play audio you usually have some kind of device URI that you have to open in order to write audio data to it.
+
+4a does **not** change anything about that. You still have to do all of this. 4a provides permissions, signals and policies. This means that all compliant applications have to ask 4a when they want to open an audio role. If 4a give them the permission, it return a device URI that applications have to open.
+
+Nothing prevent an application to directly open a device, but in this case no policies can be applied.
+
+## 4a Architecture
+![4a's architecture diagram](images/4a-architecture.svg)
+
+Even if applications only deals with the high level API, 4a is made of multiple components that relies on each other.
+
+The high level API use the hal-manager to list enabled HALs then it use directly those HALs.
+
+HALs relies directly on drivers and/or softmixer. \ No newline at end of file