22 #ifndef __BG_PLUGINREGISTRY_H_
23 #define __BG_PLUGINREGISTRY_H_
28 #include <gmerlin/plugin.h>
29 #include <gmerlin/cfg_registry.h>
63 BG_STREAM_AUDIO = (1<<0),
64 BG_STREAM_SUBTITLE_TEXT = (1<<1),
65 BG_STREAM_SUBTITLE_OVERLAY = (1<<2),
66 BG_STREAM_VIDEO = (1<<3),
219 uint32_t type_mask, uint32_t flag_mask);
238 uint32_t type_mask, uint32_t flag_mask);
253 uint32_t type_mask, uint32_t flag_mask);
277 const char * filename,
int type_mask);
288 const char * protocol);
343 const char * location,
380 const char * plugin_name,
381 const char * extensions);
393 const char * plugin_name,
394 const char * protocols);
406 const char * plugin_name,
418 const char * plugin_name);
460 int bg_plugin_registry_get_parameter_input(
void * data,
const char * name,
482 uint32_t stream_type_mask,
584 const char * plugin_name);
639 int subtitle_text_to_video);
656 int subtitle_overlay_to_video);
708 const char * plugin_name,
725 const char * plugin_name,
741 const char * plugin_name);
755 const char * plugin_name,
772 const char * filename,
774 gavl_metadata_t * m);
789 const char * filename,
792 const gavl_metadata_t * m);
806 int bg_get_thumbnail(
const char * gml,
808 char ** thumbnail_filename_ret,
843 const char * window_id);
910 #endif // __BG_PLUGINREGISTRY_H_
void bg_plugin_unref_nolock(bg_plugin_handle_t *h)
Decrease the reference count without locking.
char ** blacklist
Plugins, which should be ignored.
Definition: pluginregistry.h:131
char * location
Applications can save the argument of an open call here.
Definition: pluginregistry.h:173
int max_subtitle_text_streams
For encoders: Maximum number of text subtitle streams (-1 means infinite)
Definition: pluginregistry.h:110
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.
bg_parameter_info_t * subtitle_overlay_parameters
Parameters, which can be passed to set_subtitle_overlay_parameter.
Definition: pluginregistry.h:117
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.
struct bg_cfg_section_s bg_cfg_section_t
Configuration section.
Definition: cfg_registry.h:59
Information about a plugin.
Definition: pluginregistry.h:79
void * dll_handle
dll_handle (don't touch)
Definition: pluginregistry.h:161
bg_plugin_handle_t * bg_plugin_load(bg_plugin_registry_t *reg, const bg_plugin_info_t *info)
Load a plugin.
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.
int bg_plugin_registry_get_num_plugins(bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask)
Count plugins.
Ladspa API.
Definition: pluginregistry.h:52
char * long_name
Humanized name.
Definition: pluginregistry.h:85
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.
const bg_plugin_info_t * info
Info about this plugin.
Definition: pluginregistry.h:170
void bg_plugin_registry_set_encode_subtitle_text_to_video(bg_plugin_registry_t *reg, int subtitle_text_to_video)
Specify whether text subtitles should be encoded into the same file as the video if possible...
int bg_plugin_registry_get_encode_subtitle_overlay_to_video(bg_plugin_registry_t *reg)
Query whether overlay subtitles should be encoded into the same file as the video if possible...
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.
bg_edl_t * edl
EDL.
Definition: pluginregistry.h:174
bg_plugin_info_t * next
Used for chaining, never touch this.
Definition: pluginregistry.h:104
char * extensions
Extensions, this plugin can handle.
Definition: pluginregistry.h:87
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.
char * description
Description of what the plugin does.
Definition: pluginregistry.h:90
Creation options for a plugin registry.
Definition: pluginregistry.h:129
char * name
unique short name
Definition: pluginregistry.h:84
void bg_plugin_unref(bg_plugin_handle_t *h)
Decrease the reference count.
void bg_plugin_registry_destroy(bg_plugin_registry_t *reg)
Destroy a plugin registry.
bg_plugin_api_t
Identifiers for plugin APIs.
Definition: pluginregistry.h:49
void bg_plugin_registry_set_protocols(bg_plugin_registry_t *reg, const char *plugin_name, const char *protocols)
Set protocols for a plugin.
Handle of a loaded plugin.
Definition: pluginregistry.h:157
int bg_plugin_registry_get_encode_audio_to_video(bg_plugin_registry_t *reg)
Query whether audio should be encoded into the same file as the video if possible.
Device description.
Definition: plugin.h:204
void bg_plugin_registry_set_encode_pp(bg_plugin_registry_t *reg, int encode_pp)
Specify whether postprocessing should be done after encoding.
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.
int dont_save
If 1, don't save the registry after it was created.
Definition: pluginregistry.h:132
int bg_plugin_registry_get_encode_subtitle_text_to_video(bg_plugin_registry_t *reg)
Query whether text subtitles should be encoded into the same file as the video if possible...
void bg_plugin_registry_find_devices(bg_plugin_registry_t *reg, const char *plugin_name)
Let a plugin rescan for devices.
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.
bg_plugin_api_t api
API of the plugin.
Definition: pluginregistry.h:95
bg_parameter_info_t * parameters
Parameters, which can be passed to the plugin.
Definition: pluginregistry.h:106
EDL structure.
Definition: edl.h:119
Libvisual.
Definition: pluginregistry.h:53
void bg_plugin_registry_set_extensions(bg_plugin_registry_t *reg, const char *plugin_name, const char *extensions)
Set file extensions for a plugin.
const bg_plugin_common_t * plugin
Common structure, cast this to the derived type (e.g. bg_input_plugin_t).
Definition: pluginregistry.h:168
bg_device_info_t * devices
Device list returned by the plugin.
Definition: pluginregistry.h:102
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.
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.
int bg_plugin_registry_get_encode_pp(bg_plugin_registry_t *reg)
Query whether postprocessing should be done after encoding.
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.
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.
bg_parameter_info_t * subtitle_text_parameters
Parameters, which can be passed to set_subtitle_text_parameter.
Definition: pluginregistry.h:116
void bg_plugin_registry_set_default(bg_plugin_registry_t *reg, bg_plugin_type_t type, uint32_t flag_mask, const char *plugin_name)
Set the default for a particular plugin type.
int priority
Priority (1..10)
Definition: pluginregistry.h:100
bg_parameter_info_t * video_parameters
Parameters, which can be passed to set_video_parameter.
Definition: pluginregistry.h:114
char * mimetypes
Mimetypes, this plugin can handle.
Definition: pluginregistry.h:86
Parmeter description.
Definition: parameter.h:134
int max_subtitle_overlay_streams
For encoders: Maximum number of overlay subtitle streams (-1 means infinite)
Definition: pluginregistry.h:111
int max_audio_streams
For encoders: Maximum number of audio streams (-1 means infinite)
Definition: pluginregistry.h:108
struct bg_plugin_registry_s bg_plugin_registry_t
Opaque handle for a plugin registry.
Definition: pluginregistry.h:141
void bg_plugin_registry_set_encode_subtitle_overlay_to_video(bg_plugin_registry_t *reg, int subtitle_overlay_to_video)
Specify whether overlay subtitles should be encoded into the same file as the video if possible...
int max_video_streams
For encoders: Maximum number of video streams (-1 means infinite)
Definition: pluginregistry.h:109
int refcount
Reference counter (don't touch, use bg_plugin_ref and bg_plugin_unref)
Definition: pluginregistry.h:163
char * cmp_name
Name used for alphabetical sorting. Not for external use.
Definition: pluginregistry.h:119
void bg_plugin_registry_set_visualize(bg_plugin_registry_t *reg, int enable)
Specify whether visualizations should be enabled.
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.
bg_plugin_handle_t * bg_plugin_handle_create()
Create an empty plugin handle.
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.
bg_plugin_type_t type
Plugin type.
Definition: pluginregistry.h:98
void bg_plugin_registry_free_plugins(char **plugins)
Free a plugin list.
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.
bg_plugin_registry_t * plugin_reg
The plugin registry, from which the plugin was loaded.
Definition: pluginregistry.h:164
bg_plugin_registry_t * bg_plugin_registry_create(bg_cfg_section_t *section)
Create a plugin registry.
void bg_plugin_unlock(bg_plugin_handle_t *h)
Unlock a plugin.
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.
long module_time
Modification time of the shared module, needed internally.
Definition: pluginregistry.h:93
bg_plugin_info_t * bg_plugin_info_create(const bg_plugin_common_t *plugin)
Create a plugin info from a plugin.
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.
bg_stream_type_t
Identifiers for stream types.
Definition: pluginregistry.h:61
bg_plugin_common_t * plugin_nc
Used for dynamic allocation. Never touch this.
Definition: pluginregistry.h:169
char * protocols
Network protocols, this plugin can handle.
Definition: pluginregistry.h:88
void bg_plugin_ref(bg_plugin_handle_t *h)
Increase the reference count.
void bg_plugin_registry_set_priority(bg_plugin_registry_t *reg, const char *plugin_name, int priority)
Set priority for a plugin.
const bg_plugin_info_t * bg_plugin_registry_get_default(bg_plugin_registry_t *reg, bg_plugin_type_t type, uint32_t flag_mask)
Set the default for a particular plugin type.
Base structure common to all plugins.
Definition: plugin.h:243
int bg_plugin_registry_get_visualize(bg_plugin_registry_t *reg)
Query whether visualizations should be enabled.
Container for a parameter value.
Definition: parameter.h:82
frei0r
Definition: pluginregistry.h:54
int flags
Flags (see Plugin flags)
Definition: pluginregistry.h:99
char ** bg_plugin_registry_get_plugins(bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask)
Get a list of plugins.
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.
bg_plugin_type_t
Plugin types.
Definition: plugin.h:174
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.
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.
Always 0 so native plugins can leave this empty.
Definition: pluginregistry.h:51
char * gettext_domain
First argument for bindtextdomain().
Definition: pluginregistry.h:81
void bg_plugin_registry_remove_device(bg_plugin_registry_t *reg, const char *plugin_name, const char *device, const char *name)
Remove a 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.
void bg_plugin_registry_set_encode_audio_to_video(bg_plugin_registry_t *reg, int audio_to_video)
Specify whether audio should be encoded into the same file as the video if possible.
pthread_mutex_t mutex
dll_handle (don't touch, use bg_plugin_lock and bg_plugin_unlock)
Definition: pluginregistry.h:162
void bg_plugin_lock(bg_plugin_handle_t *h)
Lock a plugin.
void bg_plugin_registry_scan_devices(bg_plugin_registry_t *plugin_reg, uint32_t type_mask, uint32_t flag_mask)
Scan for pluggable devices.
void * priv
Private handle, passed as the first argument to most plugin functions.
Definition: pluginregistry.h:171
bg_parameter_info_t * audio_parameters
Parameters, which can be passed to set_audio_parameter.
Definition: pluginregistry.h:113
int index
Index inside the module. Always 0 for native plugins.
Definition: pluginregistry.h:96
char * module_filename
Path of the shared module.
Definition: pluginregistry.h:92
char * gettext_directory
Second argument for bindtextdomain().
Definition: pluginregistry.h:82
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.