Access to, and restrictions on, buffer sizes.
This extension defines a facility for plugins to get information about the block length (the sample_count parameter of LV2_Descriptor::run) and port buffer sizes, as well as several features which can be used to restrict the block length. Access to the relevant information is provided by the bufsz:access feature, which may be used alone. To express restrictions on the block length, additional data-only features are defined: bufsz:boundedBlockLength, bufsz:powerOf2BlockLength, and bufsz:fixedBlockLength. There is currently no facility for requiring specific values for the block length, this may be added in the future if need arises.
The feature that provides access to buffer size information. This feature is the only one in this extension which carries data: to implement it the host passes a feature with URI LV2_BUF_SIZE__access and an LV2_Buf_Size_Feature for data, which provides functions the plugin can call to investigate the buffer size.
A feature that indicates the host will provide a minimum and maximum block length via LV2_Buf_Size_Feature::get_sample_count(). Plugins that copy data from audio inputs can require this feature to ensure they know how much space is required for auxilliary buffers. Note the minimum may be zero, this feature is mainly useful to ensure a maximum is available. All hosts SHOULD support this feature, since it is simple to support and necessary for several relatively straightforward use cases.
A feature that indicates the host will always call LV2_Descriptor::run() with the same value for sample_count. If available, LV2_Buf_Size_Feature::get_sample_count() must report this value for both min and max. Note that requiring this feature may severely limit the number of hosts capable of running the plugin.
A feature that indicates the host will always call LV2_Descriptor::run() with a power of two sample_count. If available, LV2_Buf_Size_Feature::get_sample_count() must report this value for both min and max. Note this feature does not guarantee the value is the same each call, to ensure that the plugin must require both this feature and bufsz:fixedBlockLength. Note that requiring this feature may severely limit the number of hosts capable of running the plugin.