22 #ifndef __BG_PLUGIN_H_
23 #define __BG_PLUGIN_H_
26 #include <gavl/compression.h>
27 #include <gmerlin/parameter.h>
28 #include <gmerlin/streaminfo.h>
29 #include <gmerlin/accelerator.h>
30 #include <gmerlin/edl.h>
102 #define BG_PLUGIN_REMOVABLE (1<<0)
103 #define BG_PLUGIN_FILE (1<<1)
104 #define BG_PLUGIN_RECORDER (1<<2)
105 #define BG_PLUGIN_URL (1<<3)
106 #define BG_PLUGIN_PLAYBACK (1<<4)
107 #define BG_PLUGIN_STDIN (1<<8)
108 #define BG_PLUGIN_TUNER (1<<9)
109 #define BG_PLUGIN_FILTER_1 (1<<10)
110 #define BG_PLUGIN_EMBED_WINDOW (1<<11)
111 #define BG_PLUGIN_VISUALIZE_FRAME (1<<12)
112 #define BG_PLUGIN_VISUALIZE_GL (1<<13)
113 #define BG_PLUGIN_PP (1<<14)
114 #define BG_PLUGIN_CALLBACKS (1<<15)
115 #define BG_PLUGIN_BROADCAST (1<<16)
116 #define BG_PLUGIN_DEVPARAM (1<<17)
118 #define BG_PLUGIN_UNSUPPORTED (1<<24)
121 #define BG_PLUGIN_ALL 0xFFFFFFFF
126 #define BG_PLUGIN_API_VERSION 26
131 #define BG_GET_PLUGIN_API_VERSION \
132 int get_plugin_api_version() __attribute__ ((visibility("default"))); \
133 int get_plugin_api_version() { return BG_PLUGIN_API_VERSION; }
135 #define BG_PLUGIN_PRIORITY_MIN 1
136 #define BG_PLUGIN_PRIORITY_MAX 10
402 char ** username,
char ** password);
416 int pixel_width,
int pixel_height);
452 const char * (*get_protocols)(
void * priv);
457 const char * (*get_mimetypes)(
void * priv);
463 const char * (*get_extensions)(
void * priv);
481 int (*
open)(
void * priv,
const char * arg);
491 int (*
open_fd)(
void * priv,
int fd, int64_t total_bytes,
492 const char * mimetype);
506 int (*read_callback)(
void * priv, uint8_t * data,
int len),
507 int64_t (*seek_callback)(
void * priv, uint64_t pos,
int whence),
508 void * cb_priv,
const char * filename,
const char * mimetype,
509 int64_t total_bytes);
516 const bg_edl_t * (*get_edl)(
void * priv);
525 const char * (*get_disc_name)(
void * priv);
574 int (*
set_track)(
void * priv,
int track);
653 int (*
start)(
void * priv);
689 int (*
has_still)(
void * priv,
int stream);
737 void (*
skip_video)(
void * priv,
int stream, int64_t * time,
int scale,
int exact);
780 char ** text,
int * text_alloc,
781 int64_t * start_time,
782 int64_t * duration,
int stream);
795 void (*
seek)(
void * priv, int64_t * time,
int scale);
804 void (*
stop)(
void * priv);
812 void (*
close)(
void * priv);
854 int (*
start)(
void * priv);
880 void (*
stop)(
void * priv);
888 void (*
close)(
void * priv);
921 const gavl_metadata_t * m);
980 void (*
close)(
void * priv);
1155 void (*
set_window)(
void * priv,
const char * window_id);
1162 const char * (*get_window)(
void * priv);
1287 void (*
update_aspect)(
void * priv,
int pixel_width,
int pixel_height);
1310 void (*
close)(
void * priv);
1430 int (*
open)(
void * data,
const char * filename,
1431 const gavl_metadata_t * metadata,
1518 const gavl_metadata_t * m,
1533 const gavl_metadata_t * m,
1544 const gavl_metadata_t * m,
1560 const gavl_metadata_t * m,
1628 int (*
set_video_pass)(
void * priv,
int stream,
int pass,
int total_passes,
1629 const char * stats_file);
1639 int (*
start)(
void * priv);
1734 int64_t duration,
int stream);
1755 const gavl_metadata_t * m);
1765 int (*
close)(
void * data,
int do_delete);
1795 void (*action_callback)(
void * data,
char * action);
1806 void (*progress_callback)(
void * data,
float perc);
1848 int (*
init)(
void * priv);
1866 void (*
add_track)(
void * priv,
const char * filename,
1867 gavl_metadata_t * metadata,
int pp_only);
1878 void (*
run)(
void * priv,
const char * directory,
int cleanup);
1889 void (*
stop)(
void * priv);
1923 int (*
read_header)(
void * priv,
const char * filename,
1931 const gavl_metadata_t * (*get_metadata)(
void * priv);
2011 int (*
write_header)(
void * priv,
const char * filename,
2083 int stream,
int port);
2103 void (*
reset)(
void * priv);
2166 void * data,
int stream,
int port);
2182 void (*
reset)(
void * priv);
2283 const char * window_id);
2324 void (*
close)(
void * priv);
2334 #endif // __BG_PLUGIN_H_
Audio visualization plugin.
Definition: plugin.h:2246
char * description
Textual description.
Definition: plugin.h:253
void(* show_frame)(void *priv)
Show the image.
Definition: plugin.h:2317
Recorder.
Definition: plugin.h:939
Encoder postprocessor (e.g. CD burner)
Definition: plugin.h:187
void(* set_callbacks)(void *priv, bg_ov_callbacks_t *cb)
return callback
Definition: plugin.h:2255
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:1379
void(* write_audio)(void *priv, gavl_audio_frame_t *frame)
Write audio samples.
Definition: plugin.h:860
void(* reset)(void *priv)
Reset.
Definition: plugin.h:2181
int(* key_release_callback)(void *data, int key, int mask)
Keyboard release callback.
Definition: plugin.h:1044
void(* contrast_callback)(void *data, float val)
Contrast change callback.
Definition: plugin.h:1110
int(* read_image)(void *priv, gavl_video_frame_t *frame)
Read the image.
Definition: plugin.h:1949
void(* stop)(void *priv)
Stop playback.
Definition: plugin.h:879
void(* destroy)(void *priv)
Destroy plugin instance.
Definition: plugin.h:278
int(* writes_compressed_video)(void *priv, const gavl_video_format_t *format, const gavl_compression_info_t *info)
Query for writing compressed video packets.
Definition: plugin.h:1415
int(* write_video_frame)(void *data, gavl_video_frame_t *frame, int stream)
Write video frame.
Definition: plugin.h:1711
void(* saturation_callback)(void *data, float val)
Saturation change callback.
Definition: plugin.h:1101
int(* write_video_packet)(void *data, gavl_packet_t *packet, int stream)
Write video packet.
Definition: plugin.h:1720
void * data
Application specific data passed as the first argument to all callbacks.
Definition: plugin.h:1362
bg_read_video_func_t read_video
Read video frame.
Definition: plugin.h:973
char * name
Unique short name.
Definition: plugin.h:248
bg_stream_action_t
Stream actions.
Definition: plugin.h:149
int(* open)(void *priv, gavl_video_format_t *format, int keep_aspect)
Open plugin.
Definition: plugin.h:1205
Callbacks for postprocessing.
Definition: plugin.h:1786
Callbacks for recorder plugins.
Definition: plugin.h:909
int(* create_temp_file)(void *data, const char *filename)
Temp file callback.
Definition: plugin.h:1360
void(* reset)(void *priv)
Reset.
Definition: plugin.h:2102
Image reader.
Definition: plugin.h:188
Stream will be read in compressed form.
Definition: plugin.h:153
int(* write_header)(void *priv, const char *filename, gavl_video_format_t *format, const gavl_metadata_t *m)
Write the file header.
Definition: plugin.h:2010
void(* get_audio_format)(void *priv, int stream, gavl_audio_format_t *ret)
Get audio format.
Definition: plugin.h:1652
int(* need_restart)(void *priv)
Report, if the plugin must be reinitialized.
Definition: plugin.h:2201
void(* connect_input_port)(void *priv, bg_read_video_func_t func, void *data, int stream, int port)
Set input callback.
Definition: plugin.h:2163
Encoder plugin.
Definition: plugin.h:1377
void(* metadata_changed)(void *data, const char *name, const gavl_metadata_t *m)
Name changed.
Definition: plugin.h:919
int max_audio_streams
Maximum number of audio streams. -1 means infinite.
Definition: plugin.h:1827
int(* accel_callback)(void *data, int id)
Keyboard callback.
Definition: plugin.h:1020
char * gettext_domain
First argument for bindtextdomain().
Definition: plugin.h:245
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:1142
int(* open)(void *priv, gavl_audio_format_t *audio_format, gavl_video_format_t *video_format)
Open plugin.
Definition: plugin.h:964
struct gavl_video_options_s gavl_video_options_t
int(* add_video_stream)(void *priv, const gavl_metadata_t *m, const gavl_video_format_t *format)
Add a video stream.
Definition: plugin.h:1516
Check if 2 metadata structures are equal.
Definition: streaminfo.h:211
void bg_device_info_destroy(bg_device_info_t *arr)
Free an array of device descriptions.
void * data
Application specific data passed as the first argument to all callbacks.
Definition: plugin.h:1975
Audio recorder.
Definition: plugin.h:180
int(* open)(void *data, const char *filename, const gavl_metadata_t *metadata, const bg_chapter_list_t *chapter_list)
Open a file.
Definition: plugin.h:1429
Image writer plugin.
Definition: plugin.h:1988
Encoder for text subtitles only.
Definition: plugin.h:184
void(* add_track)(void *priv, const char *filename, gavl_metadata_t *metadata, int pp_only)
Add a transcoded track.
Definition: plugin.h:1865
Callbacks for the encoder plugin.
Definition: plugin.h:1339
void(* set_overlay)(void *priv, int stream, gavl_overlay_t *ovl)
Set an overlay for a specific stream.
Definition: plugin.h:1248
int(* open_win)(void *priv, gavl_audio_format_t *audio_format, const char *window_id)
Open a window based visualization plugin.
Definition: plugin.h:2281
void(* set_window)(void *priv, const char *window_id)
Set window.
Definition: plugin.h:1154
int(* start)(void *priv)
Start playback.
Definition: plugin.h:853
Device description.
Definition: plugin.h:204
int flags
Flags (see defines)
Definition: plugin.h:251
int(* open_ov)(void *priv, gavl_audio_format_t *audio_format, gavl_video_format_t *video_format)
Open a frame based visualization plugin.
Definition: plugin.h:2268
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:2070
void(* set_input_format)(void *priv, gavl_audio_format_t *format, int port)
Set input format.
Definition: plugin.h:2093
int(* create_output_file)(void *data, const char *filename)
Output file callback.
Definition: plugin.h:1350
int(* write_subtitle_overlay)(void *data, gavl_overlay_t *ovl, int stream)
Write an overlay subtitle.
Definition: plugin.h:1742
int(* need_restart)(void *priv)
Report, if the plugin must be reinitialized.
Definition: plugin.h:2122
void(* set_video_parameter)(void *priv, int stream, const char *name, const bg_parameter_value_t *v)
Set video encoding parameter.
Definition: plugin.h:1588
int max_subtitle_overlay_streams
Maximum number of overlay subtitle streams. -1 means infinite.
Definition: plugin.h:1384
void(* show_window)(void *data, int show)
Show/hide callback.
Definition: plugin.h:1083
void(* destroy_overlay)(void *priv, int id, gavl_overlay_t *ovl)
Free a frame created with the create_frame() method.
Definition: plugin.h:1300
int(* set_video_pass)(void *priv, int stream, int pass, int total_passes, const char *stats_file)
Setup multipass video encoding.
Definition: plugin.h:1627
void(* set_callbacks)(void *priv, bg_ov_callbacks_t *callbacks)
Set callbacks.
Definition: plugin.h:1193
int max_video_streams
Maximum number of video streams. -1 means infinite.
Definition: plugin.h:1828
EDL structure.
Definition: edl.h:119
const char * extensions
File extensions (space separated)
Definition: plugin.h:1991
bg_set_parameter_func_t set_parameter
Set configuration parameter (optional)
Definition: plugin.h:292
int(* add_overlay_stream)(void *priv, gavl_video_format_t *format)
Add a stream for transparent overlays.
Definition: plugin.h:1226
void(* set_callbacks)(void *priv, bg_recorder_callbacks_t *callbacks)
Set callbacks.
Definition: plugin.h:952
void(* update_aspect)(void *priv, int pixel_width, int pixel_height)
Update aspect ratio.
Definition: plugin.h:1286
Encoder for video only.
Definition: plugin.h:183
const char * extensions
Supported file extensions (space separated)
Definition: plugin.h:1913
Encoder for multiple kinds of streams.
Definition: plugin.h:186
void * data
Application specific data passed as the first argument to all callbacks.
Definition: plugin.h:922
int(* add_subtitle_overlay_stream)(void *priv, const gavl_metadata_t *m, const gavl_video_format_t *format)
Add a text subtitle stream.
Definition: plugin.h:1558
Image reader plugin.
Definition: plugin.h:1910
Encoding postprocessor.
Definition: plugin.h:1823
Video output.
Definition: plugin.h:179
int(* get_compression_info)(void *priv, gavl_compression_info_t *ci)
Get compression info.
Definition: plugin.h:1938
void(* set_audio_parameter)(void *priv, int stream, const char *name, const bg_parameter_value_t *v)
Set audio encoding parameter.
Definition: plugin.h:1574
int priority
Priority (between 1 and 10).
Definition: plugin.h:261
const bg_accelerator_map_t * accel_map
Accelerator map.
Definition: plugin.h:1013
bg_get_parameter_func_t get_parameter
Get configuration parameter (optional)
Definition: plugin.h:300
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:1912
Audio output plugin.
Definition: plugin.h:832
int(* read_header)(void *priv, const char *filename, gavl_video_format_t *format)
Read the file header.
Definition: plugin.h:1922
Callbacks for the video output plugin.
Definition: plugin.h:1005
bg_device_info_t * bg_device_info_append(bg_device_info_t *arr, const char *device, const char *name)
Append device info to an existing array and return the new array.
void(* get_output_format)(void *priv, gavl_audio_format_t *format)
Get output format.
Definition: plugin.h:2111
Parmeter description.
Definition: parameter.h:134
void(* set_window_options)(void *priv, const char *name, const char *klass, const gavl_video_frame_t *icon, const gavl_video_format_t *icon_format)
Set window class.
Definition: plugin.h:1175
int(* bg_get_parameter_func_t)(void *data, const char *name, bg_parameter_value_t *v)
Generic prototype for getting parameters from a module.
Definition: parameter.h:221
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:2248
void(* get_subtitle_overlay_format)(void *priv, int stream, gavl_video_format_t *ret)
Get video format of an overlay subtitle stream.
Definition: plugin.h:1672
int(* check_device)(const char *device, char **name)
Check, if a device can be opened by the plugin (optional)
Definition: plugin.h:311
int(* add_audio_stream_compressed)(void *priv, const gavl_metadata_t *m, const gavl_audio_format_t *format, const gavl_compression_info_t *info)
Add an audio stream fpr compressed writing.
Definition: plugin.h:1502
None or undefined.
Definition: plugin.h:176
int(* write_audio_packet)(void *data, gavl_packet_t *packet, int stream)
Write audio packet.
Definition: plugin.h:1701
Audio filter plugin.
Definition: plugin.h:2068
bg_read_audio_func_t read_audio
Read audio samples from the plugin.
Definition: plugin.h:2127
Encoder for audio only.
Definition: plugin.h:182
int(* get_delay)(void *priv)
Get the number of buffered audio samples.
Definition: plugin.h:870
Stream is switched off and will be ignored.
Definition: plugin.h:151
char * long_name
Humanized name for GUI widgets.
Definition: plugin.h:249
int(* button_callback)(void *data, int x, int y, int button, int mask)
Mouse button callback.
Definition: plugin.h:1055
void(* put_video)(void *priv, gavl_video_frame_t *frame)
Display a frame of a video stream.
Definition: plugin.h:1257
void(* connect_input_port)(void *priv, bg_read_audio_func_t func, void *data, int stream, int port)
Set input callback.
Definition: plugin.h:2080
int(* open)(void *priv, gavl_audio_format_t *format)
Open plugin.
Definition: plugin.h:845
void(* close)(void *priv)
Close the plugin.
Definition: plugin.h:1309
void(* update_metadata)(void *data, const char *name, const gavl_metadata_t *m)
Update metadata.
Definition: plugin.h:1753
Image writer.
Definition: plugin.h:189
bg_plugin_type_t type
Type.
Definition: plugin.h:250
Video recorder.
Definition: plugin.h:181
void(* draw_frame)(void *priv, gavl_video_frame_t *frame)
Draw an image.
Definition: plugin.h:2307
int(* motion_callback)(void *data, int x, int y, int mask)
Motion callback.
Definition: plugin.h:1076
Audio output.
Definition: plugin.h:178
int(* add_audio_stream)(void *priv, const gavl_metadata_t *m, const gavl_audio_format_t *format)
Add an audio stream.
Definition: plugin.h:1487
Stream is switched on and will be decoded.
Definition: plugin.h:152
int(* key_callback)(void *data, int key, int mask)
Keyboard callback.
Definition: plugin.h:1035
void(* update)(void *priv, gavl_audio_frame_t *frame)
Send audio data to the plugin.
Definition: plugin.h:2296
void(* bg_set_parameter_func_t)(void *data, const char *name, const bg_parameter_value_t *v)
Generic prototype for setting parameters in a module.
Definition: parameter.h:205
int(* button_release_callback)(void *data, int x, int y, int button, int mask)
Mouse button release callback.
Definition: plugin.h:1066
void(* close)(void *priv)
Close plugin.
Definition: plugin.h:979
Callbacks for the image writer plugin.
Definition: plugin.h:1962
bg_read_video_func_t read_video
Read a video frame from the plugin.
Definition: plugin.h:2206
int(* write_image)(void *priv, gavl_video_frame_t *frame)
Write the image.
Definition: plugin.h:2023
int(* bg_read_video_func_t)(void *priv, gavl_video_frame_t *frame, int stream)
Generic prototype for reading video.
Definition: plugin.h:90
void(* set_window_title)(void *priv, const char *title)
Set window title.
Definition: plugin.h:1185
Audio/Video recorder.
Definition: plugin.h:193
int(* bg_read_audio_func_t)(void *priv, gavl_audio_frame_t *frame, int stream, int num_samples)
Generic prototype for reading audio.
Definition: plugin.h:75
void(* show_window)(void *priv, int show)
Show or hide the window.
Definition: plugin.h:1315
void(* set_callbacks)(void *priv, bg_encoder_callbacks_t *cb)
Set callbacks.
Definition: plugin.h:1391
char * gettext_directory
Second argument for bindtextdomain().
Definition: plugin.h:246
Media input.
Definition: plugin.h:177
void(* put_still)(void *priv, gavl_video_frame_t *frame)
Display a still image.
Definition: plugin.h:1268
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:2143
void(* handle_events)(void *priv)
Get all events from the queue and handle them.
Definition: plugin.h:1278
void(* set_callbacks)(void *priv, bg_e_pp_callbacks_t *callbacks)
Set callbacks.
Definition: plugin.h:1838
int(* start)(void *priv)
Set up all codecs and prepare for encoding.
Definition: plugin.h:1638
char * supported_extensions
Supported file extensions (space separated)
Definition: plugin.h:1830
int max_audio_streams
Maximum number of audio streams. -1 means infinite.
Definition: plugin.h:1381
Base structure common to all plugins.
Definition: plugin.h:243
void(* set_callbacks)(void *priv, bg_iw_callbacks_t *cb)
Set callbacks.
Definition: plugin.h:1998
Container for a parameter value.
Definition: parameter.h:82
Visualization.
Definition: plugin.h:192
int(* add_subtitle_text_stream)(void *priv, const gavl_metadata_t *m, int *timescale)
Add a text subtitle stream.
Definition: plugin.h:1542
Video filter plugin.
Definition: plugin.h:2141
void(* brightness_callback)(void *data, float val)
Brightness change callback.
Definition: plugin.h:1092
int(* writes_compressed_audio)(void *priv, const gavl_audio_format_t *format, const gavl_compression_info_t *info)
Query for writing compressed audio packets.
Definition: plugin.h:1402
Encoder for overlay subtitles only.
Definition: plugin.h:185
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:941
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:834
int(* add_video_stream_compressed)(void *priv, const gavl_metadata_t *m, const gavl_video_format_t *format, const gavl_compression_info_t *info)
Add a video stream for compressed writing.
Definition: plugin.h:1531
void(* set_subtitle_overlay_parameter)(void *priv, int stream, const char *name, const bg_parameter_value_t *v)
Set text subtitle encoding parameter.
Definition: plugin.h:1615
void(* get_output_format)(void *priv, gavl_video_format_t *format)
Get output format.
Definition: plugin.h:2190
bg_plugin_type_t
Plugin types.
Definition: plugin.h:174
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:1825
bg_plugin_common_t common
Infos and functions common to all plugin types.
Definition: plugin.h:1990
Track info.
Definition: streaminfo.h:333
Audio filter.
Definition: plugin.h:190
void * data
Application specific data passed as the first argument to all callbacks.
Definition: plugin.h:1121
int(* close)(void *data, int do_delete)
Close encoder.
Definition: plugin.h:1764
int max_subtitle_text_streams
Maximum number of text subtitle streams. -1 means infinite.
Definition: plugin.h:1383
Video output plugin.
Definition: plugin.h:1140
int(* create_output_file)(void *data, const char *filename)
Output file callback.
Definition: plugin.h:1973
void(* set_subtitle_text_parameter)(void *priv, int stream, const char *name, const bg_parameter_value_t *v)
Set text subtitle encoding parameter.
Definition: plugin.h:1601
int(* init)(void *priv)
Initialize.
Definition: plugin.h:1847
Video filter.
Definition: plugin.h:191
void(* run)(void *priv, const char *directory, int cleanup)
Start postprocessing.
Definition: plugin.h:1877
void(* get_video_format)(void *priv, int stream, gavl_video_format_t *ret)
Get video format.
Definition: plugin.h:1662
bg_read_audio_func_t read_audio
Read audio samples.
Definition: plugin.h:969
int(* write_audio_frame)(void *data, gavl_audio_frame_t *frame, int stream)
Write audio samples.
Definition: plugin.h:1689
void(* close)(void *priv)
Close plugin.
Definition: plugin.h:887
void(* close)(void *priv)
Close a plugin.
Definition: plugin.h:2323
void(* hue_callback)(void *data, float val)
Hue change callback.
Definition: plugin.h:1119
int max_video_streams
Maximum number of video streams. -1 means infinite.
Definition: plugin.h:1382
void(* stop)(void *priv)
Stop postprocessing.
Definition: plugin.h:1888
void(* set_input_format)(void *priv, gavl_video_format_t *format, int port)
Set input format.
Definition: plugin.h:2173
int(* write_subtitle_text)(void *data, const char *text, int64_t start, int64_t duration, int stream)
Write a text subtitle.
Definition: plugin.h:1731