They come to the host as part of the filter template (livido_instance_template) received when the livido_setup_f() function is first retreived with dlopen() and called.
These fields contain pointers to the first input and output channels respectively, which are the initial elements of linked lists.
When the host receives the *in_channel and *out_channel channel template arrays from the plugin, it must process them to see what channels are available, and decide which it will use and how.
The host should copy the channel templates to real channels, for each channel in turn, the host should decide which of the palettes in the list it would like to use, remembering that the list is in order of preference for the plugin. If none of the palettes are suitable in a channel, the host cannot use that channel.
Assuming one of the palettes in the list is acceptible to the host, the host indicates this by copying the value of palette in the channel (livido_channel) implementation hold by the filter (livido_instance).
If a channel is optional, the plugin indicates this by setting the LIVIDO_CHANNEL_OPTIONAL flag. The host can indicate not using the channel by setting the flag LIVIDO_CHANNEL_DISABLED inside the channel implementation hnold by the filter.
The mandatory task for the host is to set the channel width and height. If livido_channel_template::width is nonzero, the only possible size that channel can take is denoted as width and heigth parameters of the template.
If the filter template flag LIVIDO_PROPERTY_HOST_CAN_RESIZE is not set, host can resize channel and recall init()
If the filter template flag LIVIDO_PROPERTY_HOST_CAN_CHANGE_PALETTE is set, host can change palette and recall init()
If the "same_as" field is set for any of the channels, the host should check that palette and size matches with the other channel, depending on the setting of LIVIDO_CHANNEL_SAME_AS_SIZE or LIVIDO_CHANNEL_SAME_AS_PALETTE.
Data Structures | |
| struct | livido_channel_template |
| Template provided by plugin to describe in/out channels. More... | |
Defines | |
| #define | LIVIDO_CHANNEL_OPTIONAL (1<<0) |
| tell host that channel can be disabled | |
| #define | LIVIDO_CHANNEL_MASK (1<<1) |
| tell host that channel is a mask | |
| #define | LIVIDO_CHANNEL_SAME_AS_SIZE (1<<2) |
| tell host that same_as refers to size | |
| #define | LIVIDO_CHANNEL_SAME_AS_PALETTE (1<<3) |
| tell host that same_as refers to palettes | |
| #define | LIVIDO_CHANNEL_RESIZABLE (1<<4) |
| tell host that frames can be resized while processing | |
|
|
tell host that channel can be disabled One or more of these flags can assist the host in setting up channel arrays |
1.3.4