krähemann.com

Linking overview

In this section you get some knowledge about AgsChannel internals. Here you get an overview of the audio layer. All code related to it is located in subdirectory <ags/audio>. Linking AgsChannel is a quiet complex thing but If you wish to do so you can just call void ags_channel_set_link(AgsChannel*, AgsChannel*, GError**) and this will the especially covered here.

AgsAudio, AgsChannel and AgsRecycling are involved in linking. When talking about linking we should view AgsChannel objects as networked and therefore exists an additional nested network of AgsRecycling objects.

The AgsAudio object gives clarification about how AgsChannel has to be accessed either synchronously or asynchronously. Further it tells us whether AgsOutput or AgsInput has a new audio stream which causes in conjunction a dedicated AgsRecycling associated with the appropriate AgsChannel.

Table 6.1. AGS network layer table

objectflags
Audio#0 AGS_AUDIO_SYNC | AGS_AUDIO_OUTPUT_HAS_RECYCLING
Audio#1 AGS_AUDIO_ASYNC
Audio#2 AGS_AUDIO_ASYNC | AGS_AUDIO_OUTPUT_HAS_RECYCLING
Audio#3 AGS_AUDIO_ASYNC | AGS_AUDIO_OUTPUT_HAS_RECYCLING
Audio#4 AGS_AUDIO_ASYNC | AGS_AUDIO_OUTPUT_HAS_RECYCLING

  • green:

    • Bidirectional linked AgsChannel to an other AgsChannel.
    • Generally you link an AgsOutput to an AgsInput.
  • red:

    • Bidirectional linked AgsRecycling to an other AgsRecycling on the same level.
    • They are linked across AgsAudio objects.
    • Same level means the linked AgsRecycling are all child nodes of a parent AgsRecycling.
  • yellow:

    • Unidirectional linked AgsRecycling to an AgsChannel.
    • First AgsRecycling of an AgsOutput and last AgsRecycling of an (other) AgsOutput are linked to an AgsChannel.