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_TEXT = (1<<1),
65 BG_STREAM_OVERLAY = (1<<2),
66 BG_STREAM_VIDEO = (1<<3),
221 uint32_t type_mask, uint32_t flag_mask);
240 uint32_t type_mask, uint32_t flag_mask);
255 uint32_t type_mask, uint32_t flag_mask);
279 const char * filename,
int type_mask);
293 const char * mimetype,
int type_mask);
308 int typemask,
int flagmask);
319 const char * protocol);
374 const char * location,
396 const char * location,
418 const gavl_edl_t * edl,
435 const char * plugin_name,
436 const char * extensions);
448 const char * plugin_name,
449 const char * protocols);
461 const char * plugin_name,
473 const char * plugin_name);
515 int bg_plugin_registry_get_parameter_input(
void * data,
const char * name,
537 uint32_t stream_type_mask,
688 const char * plugin_name);
760 int overlay_to_video);
812 const char * plugin_name,
829 const char * plugin_name,
845 const char * plugin_name);
859 const char * plugin_name,
876 const char * filename,
878 gavl_metadata_t * m);
893 const char * filename,
896 const gavl_metadata_t * m);
910 int bg_get_thumbnail(
const char * gml,
912 char ** thumbnail_filename_ret,
930 int max_width,
int max_height,
931 const char * out_file_base,
932 const char * mimetype);
965 const char * window_id);
struct bg_cfg_section_s bg_cfg_section_t
Configuration section.
Definition: cfg_registry.h:59
void bg_plugin_registry_set_encode_text_to_video(bg_plugin_registry_t *reg, int text_to_video)
Specify whether text subtitles should be encoded into the same file as the video if possible.
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 bg_plugin_registry_get_encode_pp(bg_plugin_registry_t *reg)
Query whether postprocessing should be done after encoding.
void bg_plugin_registry_set_encode_overlay_to_video(bg_plugin_registry_t *reg, int overlay_to_video)
Specify whether overlay subtitles should be encoded into the same file as the video if possible.
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.
int bg_plugin_registry_get_encode_text_to_video(bg_plugin_registry_t *reg)
Query whether text subtitles should be encoded into the same file as the video if possible.
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.
int bg_plugin_registry_get_encode_overlay_to_video(bg_plugin_registry_t *reg)
Query whether overlay subtitles should be encoded into the same file as the video if possible.
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_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.
void bg_plugin_registry_set_visualize(bg_plugin_registry_t *reg, int enable)
Specify whether visualizations should be enabled.
int bg_plugin_registry_get_visualize(bg_plugin_registry_t *reg)
Query whether visualizations should be enabled.
const bg_plugin_info_t * bg_plugin_find_by_compression(bg_plugin_registry_t *reg, gavl_codec_id_t id, int typemask, int flagmask)
Find a plugin by the compression ID.
bg_parameter_info_t * bg_plugin_registry_create_encoder_parameters(bg_plugin_registry_t *reg, uint32_t stream_type_mask, uint32_t flag_mask, int stream_params)
Create a parameter array for encoders.
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_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.
void bg_plugin_registry_set_protocols(bg_plugin_registry_t *reg, const char *plugin_name, const char *protocols)
Set protocols for a plugin.
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.
void bg_plugin_registry_remove_device(bg_plugin_registry_t *reg, const char *plugin_name, const char *device, const char *name)
Remove a device.
bg_plugin_handle_t * bg_plugin_load(bg_plugin_registry_t *reg, const bg_plugin_info_t *info)
Load a 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.
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_registry_t * bg_plugin_registry_create(bg_cfg_section_t *section)
Create a plugin registry.
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.
gavl_codec_id_t bg_plugin_registry_get_compressor_id(bg_plugin_registry_t *plugin_reg, bg_cfg_section_t *section)
Get a compression ID from a compressor section.
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_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 * bg_plugin_find_by_filename(bg_plugin_registry_t *reg, const char *filename, int type_mask)
Find a plugin by the file extension.
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.
void bg_plugin_registry_set_priority(bg_plugin_registry_t *reg, const char *plugin_name, int priority)
Set priority for a plugin.
void bg_plugin_registry_set_compressor_parameter(bg_plugin_registry_t *plugin_reg, bg_plugin_handle_t **plugin, const char *name, const bg_parameter_value_t *val)
Set a compressor parameter.
struct bg_plugin_registry_s bg_plugin_registry_t
Opaque handle for a plugin registry.
Definition: pluginregistry.h:143
int bg_input_plugin_load_edl(bg_plugin_registry_t *reg, const gavl_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.
void bg_plugin_unref_nolock(bg_plugin_handle_t *h)
Decrease the reference count without locking.
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.
void bg_plugin_registry_set_extensions(bg_plugin_registry_t *reg, const char *plugin_name, const char *extensions)
Set file extensions for a plugin.
bg_plugin_api_t
Identifiers for plugin APIs.
Definition: pluginregistry.h:50
void bg_plugin_ref(bg_plugin_handle_t *h)
Increase the reference count.
int bg_plugin_registry_get_num_plugins(bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask)
Count plugins.
const bg_plugin_info_t * bg_plugin_find_by_mimetype(bg_plugin_registry_t *reg, const char *mimetype, int type_mask)
Find a plugin by the mime type.
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 bg_plugin_lock(void *h)
Lock a plugin.
bg_plugin_handle_t * bg_plugin_handle_create()
Create an empty plugin handle.
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_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.
int bg_plugin_registry_changed(bg_plugin_registry_t *reg)
Check if the plugin registry was changed.
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.
void bg_plugin_registry_find_devices(bg_plugin_registry_t *reg, const char *plugin_name)
Let a plugin rescan for devices.
bg_plugin_info_t * bg_plugin_info_create(const bg_plugin_common_t *plugin)
Create a plugin info from a plugin.
void bg_plugin_save_metadata(bg_plugin_handle_t *h)
Save the metadata to an xml file.
void bg_plugin_registry_free_plugins(char **plugins)
Free a plugin list.
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.
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.
bg_parameter_info_t * bg_plugin_registry_create_compressor_parameters(bg_plugin_registry_t *reg, uint32_t flag_mask)
Create a parameter array for compressors.
void bg_plugin_unlock(void *h)
Unlock a plugin.
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.
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.
bg_stream_type_t
Identifiers for stream types.
Definition: pluginregistry.h:62
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_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.
char ** bg_plugin_registry_get_plugins(bg_plugin_registry_t *reg, uint32_t type_mask, uint32_t flag_mask)
Get a list of plugins.
int bg_input_plugin_load_full(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, int *track)
Load and open an input plugin with URL redirection.
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_PLUGIN_API_GMERLIN
Always 0 so native plugins can leave this empty.
Definition: pluginregistry.h:51
@ BG_PLUGIN_API_LADSPA
Ladspa API.
Definition: pluginregistry.h:52
@ BG_PLUGIN_API_FREI0R
frei0r
Definition: pluginregistry.h:54
@ BG_PLUGIN_API_LV
Libvisual.
Definition: pluginregistry.h:53
bg_plugin_type_t
Plugin types.
Definition: plugin.h:191
Device description.
Definition: plugin.h:222
Parmeter description.
Definition: parameter.h:135
Base structure common to all plugins.
Definition: plugin.h:261
Handle of a loaded plugin.
Definition: pluginregistry.h:160
pthread_mutex_t mutex
dll_handle (don't touch, use bg_plugin_lock and bg_plugin_unlock)
Definition: pluginregistry.h:164
const bg_plugin_info_t * info
Info about this plugin.
Definition: pluginregistry.h:172
const bg_plugin_common_t * plugin
Common structure, cast this to the derived type (e.g. bg_input_plugin_t).
Definition: pluginregistry.h:170
void * dll_handle
dll_handle (don't touch)
Definition: pluginregistry.h:163
void * priv
Private handle, passed as the first argument to most plugin functions.
Definition: pluginregistry.h:173
int refcount
Reference counter (don't touch, use bg_plugin_ref and bg_plugin_unref)
Definition: pluginregistry.h:165
gavl_edl_t * edl
EDL.
Definition: pluginregistry.h:176
bg_plugin_common_t * plugin_nc
Used for dynamic allocation. Never touch this.
Definition: pluginregistry.h:171
bg_plugin_registry_t * plugin_reg
The plugin registry, from which the plugin was loaded.
Definition: pluginregistry.h:166
Information about a plugin.
Definition: pluginregistry.h:80
char * mimetypes
Mimetypes, this plugin can handle.
Definition: pluginregistry.h:86
char * description
Description of what the plugin does.
Definition: pluginregistry.h:91
int flags
Flags (see Plugin flags)
Definition: pluginregistry.h:100
char * cmp_name
Name used for alphabetical sorting. Not for external use.
Definition: pluginregistry.h:121
bg_parameter_info_t * audio_parameters
Parameters, which can be passed to set_audio_parameter.
Definition: pluginregistry.h:115
bg_parameter_info_t * overlay_parameters
Parameters, which can be passed to set_overlay_parameter.
Definition: pluginregistry.h:119
bg_parameter_info_t * parameters
Parameters, which can be passed to the plugin.
Definition: pluginregistry.h:107
char * gettext_domain
First argument for bindtextdomain().
Definition: pluginregistry.h:81
int max_video_streams
For encoders: Maximum number of video streams (-1 means infinite)
Definition: pluginregistry.h:111
char * extensions
Extensions, this plugin can handle.
Definition: pluginregistry.h:87
bg_parameter_info_t * video_parameters
Parameters, which can be passed to set_video_parameter.
Definition: pluginregistry.h:116
bg_plugin_type_t type
Plugin type.
Definition: pluginregistry.h:99
char * protocols
Network protocols, this plugin can handle.
Definition: pluginregistry.h:88
char * gettext_directory
Second argument for bindtextdomain().
Definition: pluginregistry.h:82
bg_plugin_info_t * next
Used for chaining, never touch this.
Definition: pluginregistry.h:105
bg_device_info_t * devices
Device list returned by the plugin.
Definition: pluginregistry.h:103
char * module_filename
Path of the shared module.
Definition: pluginregistry.h:93
bg_plugin_api_t api
API of the plugin.
Definition: pluginregistry.h:96
gavl_codec_id_t * compressions
Compressions, this plugin can handle.
Definition: pluginregistry.h:89
int max_text_streams
For encoders: Maximum number of text subtitle streams (-1 means infinite)
Definition: pluginregistry.h:112
char * long_name
Humanized name.
Definition: pluginregistry.h:85
char * name
unique short name
Definition: pluginregistry.h:84
long module_time
Modification time of the shared module, needed internally.
Definition: pluginregistry.h:94
int max_audio_streams
For encoders: Maximum number of audio streams (-1 means infinite)
Definition: pluginregistry.h:110
int index
Index inside the module. Always 0 for native plugins.
Definition: pluginregistry.h:97
int max_overlay_streams
For encoders: Maximum number of overlay subtitle streams (-1 means infinite)
Definition: pluginregistry.h:113
int priority
Priority (1..10)
Definition: pluginregistry.h:101
bg_parameter_info_t * text_parameters
Parameters, which can be passed to set_text_parameter.
Definition: pluginregistry.h:118
Creation options for a plugin registry.
Definition: pluginregistry.h:132
int dont_save
If 1, don't save the registry after it was created.
Definition: pluginregistry.h:134
char ** blacklist
Plugins, which should be ignored.
Definition: pluginregistry.h:133
Container for a parameter value.
Definition: parameter.h:83