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 358 void (*duration_changed)(
void * data,
gavl_time_t duration);
367 void (*name_changed)(
void * data,
const char *
name);
376 void (*metadata_changed)(
void * data,
const gavl_metadata_t * m);
386 void (*buffer_notify)(
void * data,
float percentage);
401 int (*user_pass)(
void * data,
const char * resource,
402 char ** username,
char ** password);
415 void (*aspect_changed)(
void * data,
int stream,
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);
505 int (*open_callbacks)(
void * priv,
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);
535 int (*eject_disc)(
const char * device);
544 int (*get_num_tracks)(
void * priv);
574 int (*set_track)(
void * priv,
int track);
586 int (*get_audio_compression_info)(
void * priv,
int stream,
599 int (*get_video_compression_info)(
void * priv,
int stream,
653 int (*start)(
void * priv);
689 int (*has_still)(
void * priv,
int stream);
710 int (*read_audio_packet)(
void * priv,
int stream,
gavl_packet_t * p);
722 int (*read_video_packet)(
void * priv,
int stream,
gavl_packet_t * p);
737 void (*skip_video)(
void * priv,
int stream, int64_t * time,
int scale,
int exact);
745 int (*has_subtitle)(
void * priv,
int stream);
758 int (*read_subtitle_overlay)(
void * priv,
779 int (*read_subtitle_text)(
void * priv,
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);
871 int (*get_delay)(
void * priv);
880 void (*stop)(
void * priv);
888 void (*close)(
void * priv);
920 void (*metadata_changed)(
void * data,
const char *
name,
921 const gavl_metadata_t * m);
953 void (*set_callbacks)(
void * priv, bg_recorder_callbacks_t * callbacks);
980 void (*close)(
void * priv);
1014 const bg_accelerator_map_t * accel_map;
1021 int (*accel_callback)(
void * data,
int id);
1036 int (*key_callback)(
void * data,
int key,
int mask);
1045 int (*key_release_callback)(
void * data,
int key,
int mask);
1056 int (*button_callback)(
void * data,
int x,
int y,
int button,
int mask);
1067 int (*button_release_callback)(
void * data,
int x,
int y,
int button,
int mask);
1077 int (*motion_callback)(
void * data,
int x,
int y,
int mask);
1084 void (*show_window)(
void * data,
int show);
1093 void (*brightness_callback)(
void * data,
float val);
1102 void (*saturation_callback)(
void * data,
float val);
1111 void (*contrast_callback)(
void * data,
float val);
1120 void (*hue_callback)(
void * data,
float val);
1155 void (*set_window)(
void * priv,
const char * window_id);
1162 const char * (*get_window)(
void * priv);
1176 void (*set_window_options)(
void * priv,
const char *
name,
1186 void (*set_window_title)(
void * priv,
const char * title);
1194 void (*set_callbacks)(
void * priv, bg_ov_callbacks_t * callbacks);
1249 void (*set_overlay)(
void * priv,
int stream,
gavl_overlay_t * ovl);
1279 void (*handle_events)(
void * priv);
1287 void (*update_aspect)(
void * priv,
int pixel_width,
int pixel_height);
1301 void (*destroy_overlay)(
void * priv,
int id,
gavl_overlay_t * ovl);
1310 void (*close)(
void * priv);
1316 void (*show_window)(
void * priv,
int show);
1351 int (*create_output_file)(
void * data,
const char * filename);
1361 int (*create_temp_file)(
void * data,
const char * filename);
1382 int max_audio_streams;
1383 int max_video_streams;
1384 int max_subtitle_text_streams;
1385 int max_subtitle_overlay_streams;
1392 void (*set_callbacks)(
void * priv, bg_encoder_callbacks_t * cb);
1403 int (*writes_compressed_audio)(
void * priv,
1416 int (*writes_compressed_video)(
void * priv,
1430 int (*open)(
void * data,
const char * filename,
1431 const gavl_metadata_t * metadata,
1488 int (*add_audio_stream)(
void * priv,
const gavl_metadata_t * m,
1503 int (*add_audio_stream_compressed)(
void * priv,
const gavl_metadata_t * m,
1517 int (*add_video_stream)(
void * priv,
1518 const gavl_metadata_t * m,
1532 int (*add_video_stream_compressed)(
void * priv,
1533 const gavl_metadata_t * m,
1543 int (*add_subtitle_text_stream)(
void * priv,
1544 const gavl_metadata_t * m,
1559 int (*add_subtitle_overlay_stream)(
void * priv,
1560 const gavl_metadata_t * m,
1575 void (*set_audio_parameter)(
void * priv,
int stream,
const char *
name,
1589 void (*set_video_parameter)(
void * priv,
int stream,
const char *
name,
1602 void (*set_subtitle_text_parameter)(
void * priv,
int stream,
1616 void (*set_subtitle_overlay_parameter)(
void * priv,
int stream,
1628 int (*set_video_pass)(
void * priv,
int stream,
int pass,
int total_passes,
1629 const char * stats_file);
1639 int (*start)(
void * priv);
1673 void (*get_subtitle_overlay_format)(
void * priv,
int stream,
1702 int (*write_audio_packet)(
void * data,
gavl_packet_t * packet,
int stream);
1721 int (*write_video_packet)(
void * data,
gavl_packet_t * packet,
int stream);
1732 int (*write_subtitle_text)(
void * data,
const char * text,
1734 int64_t duration,
int stream);
1743 int (*write_subtitle_overlay)(
void * data,
gavl_overlay_t * ovl,
int stream);
1754 void (*update_metadata)(
void * data,
const char *
name,
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);
1828 int max_audio_streams;
1829 int max_video_streams;
1831 char * supported_extensions;
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);
1914 const char * extensions;
1923 int (*read_header)(
void * priv,
const char * filename,
1931 const gavl_metadata_t * (*get_metadata)(
void * priv);
1974 int (*create_output_file)(
void * data,
const char * filename);
1992 const char * extensions;
2011 int (*write_header)(
void * priv,
const char * filename,
2083 int stream,
int port);
2103 void (*reset)(
void * priv);
2123 int (*need_restart)(
void * priv);
2164 void (*connect_input_port)(
void * priv,
2166 void * data,
int stream,
int port);
2182 void (*reset)(
void * priv);
2202 int (*need_restart)(
void * priv);
2256 void (*set_callbacks)(
void * priv, bg_ov_callbacks_t * cb);
2283 const char * window_id);
2318 void (*show_frame)(
void * priv);
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
Recorder.
Definition: plugin.h:939
Encoder postprocessor (e.g. CD burner)
Definition: plugin.h:187
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
char * name
Unique short name.
Definition: plugin.h:248
bg_stream_action_t
Stream actions.
Definition: plugin.h:149
Callbacks for postprocessing.
Definition: plugin.h:1786
Callbacks for recorder plugins.
Definition: plugin.h:909
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
Image reader.
Definition: plugin.h:188
Stream will be read in compressed form.
Definition: plugin.h:153
Encoder plugin.
Definition: plugin.h:1377
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
char * gettext_domain
First argument for bindtextdomain().
Definition: plugin.h:245
struct gavl_video_options_s gavl_video_options_t
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.
Audio recorder.
Definition: plugin.h:180
Image writer plugin.
Definition: plugin.h:1988
Encoder for text subtitles only.
Definition: plugin.h:184
Callbacks for the encoder plugin.
Definition: plugin.h:1339
void(* destroy)(void *priv)
Destroy plugin instance.
Definition: plugin.h:278
Device description.
Definition: plugin.h:204
int flags
Flags (see defines)
Definition: plugin.h:251
EDL structure.
Definition: edl.h:119
bg_set_parameter_func_t set_parameter
Set configuration parameter (optional)
Definition: plugin.h:292
int(* check_device)(const char *device, char **name)
Check, if a device can be opened by the plugin (optional)
Definition: plugin.h:311
Encoder for video only.
Definition: plugin.h:183
Encoder for multiple kinds of streams.
Definition: plugin.h:186
Image reader plugin.
Definition: plugin.h:1910
Encoding postprocessor.
Definition: plugin.h:1823
Video output.
Definition: plugin.h:179
int priority
Priority (between 1 and 10).
Definition: plugin.h:261
bg_get_parameter_func_t get_parameter
Get configuration parameter (optional)
Definition: plugin.h:300
Audio output plugin.
Definition: plugin.h:832
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.
Parmeter description.
Definition: parameter.h:134
None or undefined.
Definition: plugin.h:176
Audio filter plugin.
Definition: plugin.h:2068
Encoder for audio only.
Definition: plugin.h:182
Stream is switched off and will be ignored.
Definition: plugin.h:151
char * long_name
Humanized name for GUI widgets.
Definition: plugin.h:249
Image writer.
Definition: plugin.h:189
bg_plugin_type_t type
Type.
Definition: plugin.h:250
Video recorder.
Definition: plugin.h:181
Audio output.
Definition: plugin.h:178
Stream is switched on and will be decoded.
Definition: plugin.h:152
Callbacks for the image writer plugin.
Definition: plugin.h:1962
Audio/Video recorder.
Definition: plugin.h:193
char * gettext_directory
Second argument for bindtextdomain().
Definition: plugin.h:246
Media input.
Definition: plugin.h:177
Base structure common to all plugins.
Definition: plugin.h:243
Container for a parameter value.
Definition: parameter.h:82
Visualization.
Definition: plugin.h:192
Video filter plugin.
Definition: plugin.h:2141
int(* bg_read_video_func_t)(void *priv, gavl_video_frame_t *frame, int stream)
Generic prototype for reading video.
Definition: plugin.h:90
Encoder for overlay subtitles only.
Definition: plugin.h:185
bg_plugin_type_t
Plugin types.
Definition: plugin.h:174
Track info.
Definition: streaminfo.h:333
Audio filter.
Definition: plugin.h:190
Video output plugin.
Definition: plugin.h:1140
Video filter.
Definition: plugin.h:191