gmerlin
|
Database of all installed plugins. More...
Modules | |
Defaults saved between sessions | |
Plugin defaults. | |
Data Structures | |
struct | bg_plugin_info_s |
Information about a plugin. More... | |
struct | bg_plugin_registry_options_t |
Creation options for a plugin registry. More... | |
struct | bg_plugin_handle_s |
Handle of a loaded plugin. More... | |
Typedefs | |
typedef struct bg_plugin_info_s | bg_plugin_info_t |
Typedef for plugin info. More... | |
typedef struct bg_plugin_registry_s | bg_plugin_registry_t |
Opaque handle for a plugin registry. More... | |
typedef struct bg_plugin_handle_s | bg_plugin_handle_t |
Typedef for plugin handle. More... | |
Enumerations | |
enum | bg_plugin_api_t { BG_PLUGIN_API_GMERLIN = 0, BG_PLUGIN_API_LADSPA, BG_PLUGIN_API_LV, BG_PLUGIN_API_FREI0R } |
Identifiers for plugin APIs. More... | |
enum | bg_stream_type_t { BG_STREAM_AUDIO = (1<<0), BG_STREAM_SUBTITLE_TEXT = (1<<1), BG_STREAM_SUBTITLE_OVERLAY = (1<<2), BG_STREAM_VIDEO = (1<<3) } |
Identifiers for stream types. More... | |
Functions | |
bg_plugin_registry_t * | bg_plugin_registry_create (bg_cfg_section_t *section) |
Create a plugin registry. More... | |
bg_plugin_registry_t * | bg_plugin_registry_create_with_options (bg_cfg_section_t *section, const bg_plugin_registry_options_t *opt) |
Create a plugin registry with options. More... | |
void | bg_plugin_registry_scan_devices (bg_plugin_registry_t *plugin_reg, uint32_t type_mask, uint32_t flag_mask) |
Scan for pluggable devices. More... | |
void | bg_plugin_registry_destroy (bg_plugin_registry_t *reg) |
Destroy a plugin registry. More... | |
int | bg_plugin_registry_get_num_plugins (bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask) |
Count plugins. More... | |
const bg_plugin_info_t * | bg_plugin_find_by_index (bg_plugin_registry_t *reg, int index, uint32_t type_mask, uint32_t flag_mask) |
Find a plugin by index. More... | |
const bg_plugin_info_t * | bg_plugin_find_by_name (bg_plugin_registry_t *reg, const char *name) |
Find a plugin by it's unique short name. More... | |
const bg_plugin_info_t * | bg_plugin_find_by_filename (bg_plugin_registry_t *reg, const char *filename, int type_mask) |
Find a plugin by the file extension. More... | |
const bg_plugin_info_t * | bg_plugin_find_by_protocol (bg_plugin_registry_t *reg, const char *protocol) |
Find an input plugin for a network protocol. More... | |
char ** | bg_plugin_registry_get_plugins (bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask) |
Get a list of plugins. More... | |
void | bg_plugin_registry_free_plugins (char **plugins) |
Free a plugin list. More... | |
int | bg_input_plugin_load (bg_plugin_registry_t *reg, const char *location, const bg_plugin_info_t *info, bg_plugin_handle_t **ret, bg_input_callbacks_t *callbacks, int prefer_edl) |
Load and open an input plugin. More... | |
int | bg_input_plugin_load_edl (bg_plugin_registry_t *reg, const bg_edl_t *edl, const bg_plugin_info_t *info, bg_plugin_handle_t **ret, bg_input_callbacks_t *callbacks) |
Load and open an edl decoder. More... | |
void | bg_plugin_registry_set_extensions (bg_plugin_registry_t *reg, const char *plugin_name, const char *extensions) |
Set file extensions for a plugin. More... | |
void | bg_plugin_registry_set_protocols (bg_plugin_registry_t *reg, const char *plugin_name, const char *protocols) |
Set protocols for a plugin. More... | |
void | bg_plugin_registry_set_priority (bg_plugin_registry_t *reg, const char *plugin_name, int priority) |
Set priority for a plugin. More... | |
bg_cfg_section_t * | bg_plugin_registry_get_section (bg_plugin_registry_t *reg, const char *plugin_name) |
Get the config section belonging to a plugin. More... | |
void | bg_plugin_registry_set_parameter_info (bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask, bg_parameter_info_t *ret) |
Set a parameter info for selecting and configuring plugins. More... | |
void | bg_plugin_registry_set_parameter_info_input (bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask, bg_parameter_info_t *ret) |
Set a parameter info for selecting and configuring input plugins. More... | |
void | bg_plugin_registry_set_parameter_input (void *data, const char *name, const bg_parameter_value_t *val) |
Set a parameter of an input plugin. More... | |
bg_parameter_info_t * | bg_plugin_registry_create_encoder_parameters (bg_plugin_registry_t *reg, uint32_t stream_type_mask, uint32_t flag_mask) |
Create a parameter array for encoders. More... | |
const char * | bg_encoder_section_get_plugin (bg_plugin_registry_t *plugin_reg, bg_cfg_section_t *s, bg_stream_type_t stream_type, int stream_mask) |
Get the name for an encoding plugin. More... | |
void | bg_encoder_section_get_plugin_config (bg_plugin_registry_t *plugin_reg, bg_cfg_section_t *s, bg_stream_type_t stream_type, int stream_mask, bg_cfg_section_t **section_ret, const bg_parameter_info_t **params_ret) |
Get the plugin configuration for an encoding plugin. More... | |
void | bg_encoder_section_get_stream_config (bg_plugin_registry_t *plugin_reg, bg_cfg_section_t *s, bg_stream_type_t stream_type, int stream_mask, bg_cfg_section_t **section_ret, const bg_parameter_info_t **params_ret) |
Get the stream configuration for an encoding plugin. More... | |
bg_cfg_section_t * | bg_encoder_section_get_from_registry (bg_plugin_registry_t *plugin_reg, const bg_parameter_info_t *parameters, uint32_t type_mask, uint32_t flag_mask) |
Get an encoder configuration section from a registry. More... | |
void | bg_encoder_section_store_in_registry (bg_plugin_registry_t *plugin_reg, bg_cfg_section_t *s, const bg_parameter_info_t *parameters, uint32_t type_mask, uint32_t flag_mask) |
Store an encoder configuration in a registry. More... | |
void | bg_plugin_registry_add_device (bg_plugin_registry_t *reg, const char *plugin_name, const char *device, const char *name) |
Add a device to a plugin. More... | |
void | bg_plugin_registry_set_device_name (bg_plugin_registry_t *reg, const char *plugin_name, const char *device, const char *name) |
Change the name of a device. More... | |
void | bg_plugin_registry_find_devices (bg_plugin_registry_t *reg, const char *plugin_name) |
Let a plugin rescan for devices. More... | |
void | bg_plugin_registry_remove_device (bg_plugin_registry_t *reg, const char *plugin_name, const char *device, const char *name) |
Remove a device. More... | |
gavl_video_frame_t * | bg_plugin_registry_load_image (bg_plugin_registry_t *reg, const char *filename, gavl_video_format_t *format, gavl_metadata_t *m) |
Load an image. More... | |
void | bg_plugin_registry_save_image (bg_plugin_registry_t *reg, const char *filename, gavl_video_frame_t *frame, const gavl_video_format_t *format, const gavl_metadata_t *m) |
Save an image. More... | |
bg_plugin_handle_t * | bg_plugin_load (bg_plugin_registry_t *reg, const bg_plugin_info_t *info) |
Load a plugin. More... | |
bg_plugin_handle_t * | bg_ov_plugin_load (bg_plugin_registry_t *reg, const bg_plugin_info_t *info, const char *window_id) |
Load a video output plugin. More... | |
void | bg_plugin_lock (bg_plugin_handle_t *h) |
Lock a plugin. More... | |
void | bg_plugin_unlock (bg_plugin_handle_t *h) |
Unlock a plugin. More... | |
void | bg_plugin_ref (bg_plugin_handle_t *h) |
Increase the reference count. More... | |
void | bg_plugin_unref (bg_plugin_handle_t *h) |
Decrease the reference count. More... | |
void | bg_plugin_unref_nolock (bg_plugin_handle_t *h) |
Decrease the reference count without locking. More... | |
bg_plugin_info_t * | bg_plugin_info_create (const bg_plugin_common_t *plugin) |
Create a plugin info from a plugin. More... | |
bg_plugin_handle_t * | bg_plugin_handle_create () |
Create an empty plugin handle. More... | |
Database of all installed plugins.
The plugin registry keeps informations about all installed plugins. Furthermore, it manages default plugins and some other settings. Available plugins are cached in the file $HOME/.gmerlin/plugins.xml, which is used by all applications. Application specific data are stored in a bg_cfg_section_t.
It allows you to search for plugins according to certain criteria. You get detailed information about plugins in bg_plugin_info_t structs.
typedef struct bg_plugin_info_s bg_plugin_info_t |
Typedef for plugin info.
typedef struct bg_plugin_registry_s bg_plugin_registry_t |
Opaque handle for a plugin registry.
You don't want to know, what's inside here.
typedef struct bg_plugin_handle_s bg_plugin_handle_t |
Typedef for plugin handle.
enum bg_plugin_api_t |
enum bg_stream_type_t |
Identifiers for stream types.
bg_plugin_registry_t* bg_plugin_registry_create | ( | bg_cfg_section_t * | section | ) |
Create a plugin registry.
section | A configuration section |
The configuration section will be owned exclusively by the plugin registry, applications should not touch it.
bg_plugin_registry_t* bg_plugin_registry_create_with_options | ( | bg_cfg_section_t * | section, |
const bg_plugin_registry_options_t * | opt | ||
) |
Create a plugin registry with options.
section | A configuration section |
opt | The options structure |
The configuration section will be owned exclusively by the plugin registry, applications should not touch it.
void bg_plugin_registry_scan_devices | ( | bg_plugin_registry_t * | plugin_reg, |
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Scan for pluggable devices.
plugin_reg | A plugin registry |
type_mask | Mask of all types you want to have the devices scanned for |
flag_mask | Mask of all flags you want to have the devices scanned for |
Some plugins offer a list of supported devices as parameters. To update these (e.g. if pluggable devices are among them), call this function right after you created the plugin registry
void bg_plugin_registry_destroy | ( | bg_plugin_registry_t * | reg | ) |
Destroy a plugin registry.
reg | A plugin registry |
int bg_plugin_registry_get_num_plugins | ( | bg_plugin_registry_t * | reg, |
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Count plugins.
reg | A plugin registry |
type_mask | Mask of all types you want to have |
flag_mask | Mask of all flags you want to have |
const bg_plugin_info_t* bg_plugin_find_by_index | ( | bg_plugin_registry_t * | reg, |
int | index, | ||
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Find a plugin by index.
reg | A plugin registry |
index | Index |
type_mask | Mask of all types you want to have |
flag_mask | Mask of all flags you want to have |
This function should be called after bg_plugin_registry_get_num_plugins to get a particular plugin
const bg_plugin_info_t* bg_plugin_find_by_name | ( | bg_plugin_registry_t * | reg, |
const char * | name | ||
) |
Find a plugin by it's unique short name.
reg | A plugin registry |
name | The name |
const bg_plugin_info_t* bg_plugin_find_by_filename | ( | bg_plugin_registry_t * | reg, |
const char * | filename, | ||
int | type_mask | ||
) |
Find a plugin by the file extension.
reg | A plugin registry |
filename | The file, whose extension should match |
type_mask | Mask of plugin types to be returned |
This function returns the first plugin matching type_mask, whose extensions match filename.
const bg_plugin_info_t* bg_plugin_find_by_protocol | ( | bg_plugin_registry_t * | reg, |
const char * | protocol | ||
) |
Find an input plugin for a network protocol.
reg | A plugin registry |
protocol | The network protocol (e.g. http) |
char** bg_plugin_registry_get_plugins | ( | bg_plugin_registry_t * | reg, |
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Get a list of plugins.
reg | A plugin registry |
type_mask | Mask of all returned plugin types |
flag_mask | Mask of all returned plugin flags |
This functions returns plugin names suitable for adding to GUI menus. Use bg_plugin_find_by_name to get the corresponding plugin infos.
Use bg_plugin_registry_free_plugins to free the returned list.
void bg_plugin_registry_free_plugins | ( | char ** | plugins | ) |
Free a plugin list.
plugins | List returned by bg_plugin_registry_get_plugins |
int bg_input_plugin_load | ( | bg_plugin_registry_t * | reg, |
const char * | location, | ||
const bg_plugin_info_t * | info, | ||
bg_plugin_handle_t ** | ret, | ||
bg_input_callbacks_t * | callbacks, | ||
int | prefer_edl | ||
) |
Load and open an input plugin.
reg | A plugin registry |
location | Filename or URL |
info | Plugin to use (can be NULL for autodetection) |
ret | Will return the plugin handle. |
callbacks | Input callbacks (only for authentication) |
prefer_edl | If 1 EDLs are preferred over raw streams |
This is a convenience function to load an input file. If info is NULL, the plugin will be autodetected. The handle is stored in ret. If ret is non-null before the call, the old plugin will be unrefed.
int bg_input_plugin_load_edl | ( | bg_plugin_registry_t * | reg, |
const bg_edl_t * | edl, | ||
const bg_plugin_info_t * | info, | ||
bg_plugin_handle_t ** | ret, | ||
bg_input_callbacks_t * | callbacks | ||
) |
Load and open an edl decoder.
reg | A plugin registry |
edl | The edl to open |
info | Plugin to use (can be NULL for autodetection) |
ret | Will return the plugin handle. |
callbacks | Input callbacks (only for authentication) |
This is a convenience function to load an input file. If info is NULL, the plugin will be autodetected. The handle is stored in ret. If ret is non-null before the call, the old plugin will be unrefed.
void bg_plugin_registry_set_extensions | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
const char * | extensions | ||
) |
Set file extensions for a plugin.
reg | A plugin registry |
plugin_name | Name of the plugin |
extensions | Space separated list of file extensions |
The extensions will be saved in the plugin file
void bg_plugin_registry_set_protocols | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
const char * | protocols | ||
) |
Set protocols for a plugin.
reg | A plugin registry |
plugin_name | Name of the plugin |
protocols | Space separated list of protocols |
The protocols will be saved in the plugin file
void bg_plugin_registry_set_priority | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
int | priority | ||
) |
Set priority for a plugin.
reg | A plugin registry |
plugin_name | Name of the plugin |
priority | Priority (BG_PLUGIN_PRIORITY_MIN..BG_PLUGIN_PRIORITY_MAX, should be 1..10) |
The priority will be saved in the plugin file
bg_cfg_section_t* bg_plugin_registry_get_section | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name | ||
) |
Get the config section belonging to a plugin.
reg | A plugin registry |
plugin_name | Short name of the plugin |
void bg_plugin_registry_set_parameter_info | ( | bg_plugin_registry_t * | reg, |
uint32_t | type_mask, | ||
uint32_t | flag_mask, | ||
bg_parameter_info_t * | ret | ||
) |
Set a parameter info for selecting and configuring plugins.
reg | A plugin registry |
type_mask | Mask of all returned types |
flag_mask | Mask of all returned flags |
ret | Where the parameter info will be copied |
void bg_plugin_registry_set_parameter_info_input | ( | bg_plugin_registry_t * | reg, |
uint32_t | type_mask, | ||
uint32_t | flag_mask, | ||
bg_parameter_info_t * | ret | ||
) |
Set a parameter info for selecting and configuring input plugins.
reg | A plugin registry |
type_mask | Mask of all returned types |
flag_mask | Mask of all returned flags |
ret | Where the parameter info will be copied |
void bg_plugin_registry_set_parameter_input | ( | void * | data, |
const char * | name, | ||
const bg_parameter_value_t * | val | ||
) |
Set a parameter of an input plugin.
data | A plugin registry cast to void |
name | Name |
val | Value |
bg_parameter_info_t* bg_plugin_registry_create_encoder_parameters | ( | bg_plugin_registry_t * | reg, |
uint32_t | stream_type_mask, | ||
uint32_t | flag_mask | ||
) |
Create a parameter array for encoders.
reg | A plugin registry |
stream_type_mask | Mask of all stream types to be encoded |
flag_mask | Mask of all returned plugin flags |
Free the returned parameters with bg_parameter_info_destroy_array
If you create a config section from the returned parameters (with bg_cfg_section_create_from_parameters or bg_cfg_section_create_items) the resulting encoding section will contain the complete encoder setup. It can be manipulated through the bg_encoder_section_*() functions.
const char* bg_encoder_section_get_plugin | ( | bg_plugin_registry_t * | plugin_reg, |
bg_cfg_section_t * | s, | ||
bg_stream_type_t | stream_type, | ||
int | stream_mask | ||
) |
Get the name for an encoding plugin.
plugin_reg | A plugin registry |
s | An encoder section (see bg_plugin_registry_create_encoder_parameters) |
stream_type | The stream type to encode |
stream_mask | The mask passed to bg_plugin_registry_create_encoder_parameters |
void bg_encoder_section_get_plugin_config | ( | bg_plugin_registry_t * | plugin_reg, |
bg_cfg_section_t * | s, | ||
bg_stream_type_t | stream_type, | ||
int | stream_mask, | ||
bg_cfg_section_t ** | section_ret, | ||
const bg_parameter_info_t ** | params_ret | ||
) |
Get the plugin configuration for an encoding plugin.
plugin_reg | A plugin registry |
s | An encoder section (see bg_plugin_registry_create_encoder_parameters) |
stream_type | The stream type to encode |
stream_mask | The mask passed to bg_plugin_registry_create_encoder_parameters |
section_ret | If non-null returns the config section for the plugin |
params_ret | If non-null returns the parameters for the plugin |
void bg_encoder_section_get_stream_config | ( | bg_plugin_registry_t * | plugin_reg, |
bg_cfg_section_t * | s, | ||
bg_stream_type_t | stream_type, | ||
int | stream_mask, | ||
bg_cfg_section_t ** | section_ret, | ||
const bg_parameter_info_t ** | params_ret | ||
) |
Get the stream configuration for an encoding plugin.
plugin_reg | A plugin registry |
s | An encoder section (see bg_plugin_registry_create_encoder_parameters) |
stream_type | The stream type to encode |
stream_mask | The mask passed to bg_plugin_registry_create_encoder_parameters |
section_ret | If non-null returns the config section for the stream |
params_ret | If non-null returns the parameters for the stream |
bg_cfg_section_t* bg_encoder_section_get_from_registry | ( | bg_plugin_registry_t * | plugin_reg, |
const bg_parameter_info_t * | parameters, | ||
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Get an encoder configuration section from a registry.
plugin_reg | A plugin registry |
parameters | Parameters returned by bg_plugin_registry_create_encoder_parameters |
type_mask | The stream mask passed to bg_plugin_registry_create_encoder_parameters |
flag_mask | The mask passed to bg_plugin_registry_create_encoder_parameters |
void bg_encoder_section_store_in_registry | ( | bg_plugin_registry_t * | plugin_reg, |
bg_cfg_section_t * | s, | ||
const bg_parameter_info_t * | parameters, | ||
uint32_t | type_mask, | ||
uint32_t | flag_mask | ||
) |
Store an encoder configuration in a registry.
plugin_reg | A plugin registry |
s | The encoder section to store |
parameters | Parameters returned by bg_plugin_registry_create_encoder_parameters |
type_mask | The stream mask passed to bg_plugin_registry_create_encoder_parameters |
flag_mask | The mask passed to bg_plugin_registry_create_encoder_parameters |
void bg_plugin_registry_add_device | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
const char * | device, | ||
const char * | name | ||
) |
Add a device to a plugin.
reg | A plugin registry |
plugin_name | Name of the plugin |
device | Device file |
name | Name for the device |
void bg_plugin_registry_set_device_name | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
const char * | device, | ||
const char * | name | ||
) |
Change the name of a device.
reg | A plugin registry |
plugin_name | Name of the plugin |
device | Device file name |
name | New name for the device |
Usually, plugins are quite smart in getting the name (Vendor, Model etc) of devices from the OS. In the case, you want to change names of a device use this function
void bg_plugin_registry_find_devices | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name | ||
) |
Let a plugin rescan for devices.
reg | A plugin registry |
plugin_name | Name of the plugin |
This will let the plugin rescan for devices. Call this, after you changed your hardware.
void bg_plugin_registry_remove_device | ( | bg_plugin_registry_t * | reg, |
const char * | plugin_name, | ||
const char * | device, | ||
const char * | name | ||
) |
Remove a device.
reg | A plugin registry |
plugin_name | Name of the plugin |
device | Device file name |
name | New name for the device |
Remove a device from the list of devices. Call this if a plugin detected a device multiple times.
gavl_video_frame_t* bg_plugin_registry_load_image | ( | bg_plugin_registry_t * | reg, |
const char * | filename, | ||
gavl_video_format_t * | format, | ||
gavl_metadata_t * | m | ||
) |
Load an image.
reg | A plugin registry |
filename | Image filename |
format | Returns format of the image |
m | Returns metadata |
Use gavl_video_frame_destroy to free the return value
void bg_plugin_registry_save_image | ( | bg_plugin_registry_t * | reg, |
const char * | filename, | ||
gavl_video_frame_t * | frame, | ||
const gavl_video_format_t * | format, | ||
const gavl_metadata_t * | m | ||
) |
Save an image.
reg | A plugin registry |
filename | Image filename |
frame | The frame, which contains the image |
format | Returns format of the image |
m | Metadata |
bg_plugin_handle_t* bg_plugin_load | ( | bg_plugin_registry_t * | reg, |
const bg_plugin_info_t * | info | ||
) |
Load a plugin.
reg | A plugin registry |
info | The plugin info |
Load a plugin and return handle with reference count of 1
bg_plugin_handle_t* bg_ov_plugin_load | ( | bg_plugin_registry_t * | reg, |
const bg_plugin_info_t * | info, | ||
const char * | window_id | ||
) |
Load a video output plugin.
reg | A plugin registry |
info | The plugin info |
window_id | The window ID or NULL |
Load a video output plugin for embedding into an already existing window and return handle with reference count of 1
void bg_plugin_lock | ( | bg_plugin_handle_t * | h | ) |
Lock a plugin.
h | A plugin handle |
void bg_plugin_unlock | ( | bg_plugin_handle_t * | h | ) |
Unlock a plugin.
h | A plugin handle |
void bg_plugin_ref | ( | bg_plugin_handle_t * | h | ) |
Increase the reference count.
h | A plugin handle |
void bg_plugin_unref | ( | bg_plugin_handle_t * | h | ) |
Decrease the reference count.
h | A plugin handle |
If the reference count gets zero, the plugin will be destroyed
void bg_plugin_unref_nolock | ( | bg_plugin_handle_t * | h | ) |
Decrease the reference count without locking.
h | A plugin handle |
Use this only if you know for sure, that the plugin is already locked and no other thread waits for the plugin to be unlocked. If the reference count gets zero, the plugin will be destroyed
bg_plugin_info_t* bg_plugin_info_create | ( | const bg_plugin_common_t * | plugin | ) |
Create a plugin info from a plugin.
plugin | A plugin |
This is used by internal plugins only.
bg_plugin_handle_t* bg_plugin_handle_create | ( | ) |
Create an empty plugin handle.
Use this function only if you create a plugin handle outside a plugin registry. Free the returned info with bg_plugin_unref