22 #ifndef __BG_PLUGIN_H_ 23 #define __BG_PLUGIN_H_ 26 #include <gavl/compression.h> 27 #include <gavl/connectors.h> 28 #include <gavl/metadata.h> 31 #include <gavl/gavf.h> 33 #include <gmerlin/parameter.h> 34 #include <gmerlin/streaminfo.h> 35 #include <gmerlin/accelerator.h> 36 #include <gmerlin/edl.h> 108 #define BG_PLUGIN_REMOVABLE (1<<0) 109 #define BG_PLUGIN_FILE (1<<1) 110 #define BG_PLUGIN_RECORDER (1<<2) 111 #define BG_PLUGIN_URL (1<<3) 112 #define BG_PLUGIN_PLAYBACK (1<<4) 113 #define BG_PLUGIN_PIPE (1<<8) 114 #define BG_PLUGIN_TUNER (1<<9) 115 #define BG_PLUGIN_FILTER_1 (1<<10) 116 #define BG_PLUGIN_EMBED_WINDOW (1<<11) 117 #define BG_PLUGIN_VISUALIZE_FRAME (1<<12) 118 #define BG_PLUGIN_VISUALIZE_GL (1<<13) 119 #define BG_PLUGIN_PP (1<<14) 120 #define BG_PLUGIN_CALLBACKS (1<<15) 121 #define BG_PLUGIN_BROADCAST (1<<16) 122 #define BG_PLUGIN_DEVPARAM (1<<17) 123 #define BG_PLUGIN_OV_STILL (1<<18) 124 #define BG_PLUGIN_GAVF_IO (1<<19) 126 #define BG_PLUGIN_AUDIO_COMPRESSOR (1<<19) 127 #define BG_PLUGIN_VIDEO_COMPRESSOR (1<<20) 128 #define BG_PLUGIN_AUDIO_DECOMPRESSOR (1<<21) 129 #define BG_PLUGIN_VIDEO_DECOMPRESSOR (1<<22) 130 #define BG_PLUGIN_OVERLAY_COMPRESSOR (1<<23) 131 #define BG_PLUGIN_OVERLAY_DECOMPRESSOR (1<<24) 133 #define BG_PLUGIN_UNSUPPORTED (1<<25) 136 #define BG_PLUGIN_ALL 0xFFFFFFFF 141 #define BG_PLUGIN_API_VERSION 27 146 #define BG_GET_PLUGIN_API_VERSION \ 147 int get_plugin_api_version() __attribute__ ((visibility("default"))); \ 148 int get_plugin_api_version() { return BG_PLUGIN_API_VERSION; } 150 #define BG_PLUGIN_PRIORITY_MIN 1 151 #define BG_PLUGIN_PRIORITY_MAX 10 374 void (*duration_changed)(
void * data,
gavl_time_t duration);
383 void (*metadata_changed)(
void * data,
const gavl_metadata_t * m);
393 void (*buffer_notify)(
void * data,
float percentage);
408 int (*user_pass)(
void * data,
const char * resource,
409 char ** username,
char ** password);
422 void (*aspect_changed)(
void * data,
int stream,
423 int pixel_width,
int pixel_height);
459 const char * (*get_protocols)(
void * priv);
464 const char * (*get_mimetypes)(
void * priv);
470 const char * (*get_extensions)(
void * priv);
488 int (*open)(
void * priv,
const char * arg);
498 int (*open_fd)(
void * priv,
int fd, int64_t total_bytes,
499 const char * mimetype);
512 int (*open_io)(
void * priv, gavf_io_t * io);
519 const gavl_edl_t * (*get_edl)(
void * priv);
528 const char * (*get_disc_name)(
void * priv);
538 int (*eject_disc)(
const char * device);
547 int (*get_num_tracks)(
void * priv);
577 int (*set_track)(
void * priv,
int track);
589 int (*get_audio_compression_info)(
void * priv,
int stream,
602 int (*get_video_compression_info)(
void * priv,
int stream,
615 int (*get_overlay_compression_info)(
void * priv,
int stream,
678 int (*start)(
void * priv);
713 gavl_audio_source_t * (*get_audio_source)(
void * priv,
int stream);
744 gavl_video_source_t * (*get_video_source)(
void * priv,
int stream);
778 gavl_packet_source_t * (*get_audio_packet_source)(
void * priv,
int stream);
788 gavl_packet_source_t * (*get_video_packet_source)(
void * priv,
int stream);
798 gavl_packet_source_t * (*get_overlay_packet_source)(
void * priv,
int stream);
812 void (*skip_video)(
void * priv,
int stream, int64_t * time,
int scale,
int exact);
844 gavl_video_source_t * (*get_overlay_source)(
void * priv,
int stream);
877 gavl_packet_source_t * (*get_text_source)(
void * priv,
int stream);
887 gavl_packet_source_t * (*get_subtitle_packet_source)(
void * priv,
int stream);
900 void (*seek)(
void * priv, int64_t * time,
int scale);
909 void (*stop)(
void * priv);
917 void (*close)(
void * priv);
959 int (*start)(
void * priv);
966 gavl_audio_sink_t * (*get_sink)(
void * priv);
976 int (*get_delay)(
void * priv);
985 void (*stop)(
void * priv);
993 void (*close)(
void * priv);
1024 void (*metadata_changed)(
void * data,
const gavl_metadata_t * m);
1056 void (*set_callbacks)(
void * priv, bg_recorder_callbacks_t * callbacks);
1078 gavl_audio_source_t * (*get_audio_source)(
void * priv);
1087 gavl_video_source_t * (*get_video_source)(
void * priv);
1093 void (*close)(
void * priv);
1127 const bg_accelerator_map_t * accel_map;
1134 int (*accel_callback)(
void * data,
int id);
1149 int (*key_callback)(
void * data,
int key,
int mask);
1158 int (*key_release_callback)(
void * data,
int key,
int mask);
1169 int (*button_callback)(
void * data,
int x,
int y,
int button,
int mask);
1180 int (*button_release_callback)(
void * data,
int x,
int y,
int button,
int mask);
1190 int (*motion_callback)(
void * data,
int x,
int y,
int mask);
1197 void (*show_window)(
void * data,
int show);
1206 void (*brightness_callback)(
void * data,
float val);
1215 void (*saturation_callback)(
void * data,
float val);
1224 void (*contrast_callback)(
void * data,
float val);
1233 void (*hue_callback)(
void * data,
float val);
1268 void (*set_window)(
void * priv,
const char * window_id);
1275 const char * (*get_window)(
void * priv);
1289 void (*set_window_options)(
void * priv,
const char *
name,
1299 void (*set_window_title)(
void * priv,
const char * title);
1307 void (*set_callbacks)(
void * priv, bg_ov_callbacks_t * callbacks);
1369 gavl_video_sink_t * (*get_sink)(
void * priv);
1379 void (*handle_events)(
void * priv);
1387 void (*update_aspect)(
void * priv,
int pixel_width,
int pixel_height);
1404 void (*close)(
void * priv);
1410 void (*show_window)(
void * priv,
int show);
1445 int (*create_output_file)(
void * data,
const char * filename);
1455 int (*create_temp_file)(
void * data,
const char * filename);
1476 int max_audio_streams;
1477 int max_video_streams;
1478 int max_text_streams;
1479 int max_overlay_streams;
1486 void (*set_callbacks)(
void * priv, bg_encoder_callbacks_t * cb);
1497 int (*writes_compressed_audio)(
void * priv,
1510 int (*writes_compressed_video)(
void * priv,
1523 int (*writes_compressed_overlay)(
void * priv,
1537 int (*open)(
void * data,
const char * filename,
1538 const gavl_metadata_t * metadata,
1539 const gavl_chapter_list_t * chapter_list);
1549 int (*open_io)(
void * data, gavf_io_t * io,
1550 const gavl_metadata_t * metadata,
1551 const gavl_chapter_list_t * chapter_list);
1608 int (*add_audio_stream)(
void * priv,
const gavl_metadata_t * m,
1623 int (*add_audio_stream_compressed)(
void * priv,
const gavl_metadata_t * m,
1637 int (*add_video_stream)(
void * priv,
1638 const gavl_metadata_t * m,
1652 int (*add_video_stream_compressed)(
void * priv,
1653 const gavl_metadata_t * m,
1663 int (*add_text_stream)(
void * priv,
1664 const gavl_metadata_t * m,
1665 uint32_t * timescale);
1679 int (*add_overlay_stream_compressed)(
void * priv,
1680 const gavl_metadata_t * m,
1696 int (*add_overlay_stream)(
void * priv,
1697 const gavl_metadata_t * m,
1712 void (*set_audio_parameter)(
void * priv,
int stream,
const char *
name,
1726 void (*set_video_parameter)(
void * priv,
int stream,
const char *
name,
1739 void (*set_text_parameter)(
void * priv,
int stream,
1753 void (*set_overlay_parameter)(
void * priv,
int stream,
1765 int (*set_video_pass)(
void * priv,
int stream,
int pass,
int total_passes,
1766 const char * stats_file);
1776 int (*start)(
void * priv);
1783 gavl_audio_sink_t * (*get_audio_sink)(
void * priv,
int stream);
1790 gavl_packet_sink_t * (*get_audio_packet_sink)(
void * priv,
int stream);
1797 gavl_video_sink_t * (*get_video_sink)(
void * priv,
int stream);
1804 gavl_packet_sink_t * (*get_video_packet_sink)(
void * priv,
int stream);
1811 gavl_packet_sink_t * (*get_text_sink)(
void * priv,
int stream);
1818 gavl_video_sink_t * (*get_overlay_sink)(
void * priv,
int stream);
1825 gavl_packet_sink_t * (*get_overlay_packet_sink)(
void * priv,
int stream);
1834 void (*update_metadata)(
void * priv,
const gavl_metadata_t * m);
1844 int (*close)(
void * data,
int do_delete);
1874 void (*action_callback)(
void * data,
char * action);
1885 void (*progress_callback)(
void * data,
float perc);
1907 int max_audio_streams;
1908 int max_video_streams;
1910 char * supported_extensions;
1927 int (*init)(
void * priv);
1945 void (*add_track)(
void * priv,
const char * filename,
1946 gavl_metadata_t * metadata,
int pp_only);
1957 void (*run)(
void * priv,
const char * directory,
int cleanup);
1968 void (*stop)(
void * priv);
1993 const char * extensions;
1994 const char * mimetypes;
2003 int (*read_header)(
void * priv,
const char * filename,
2011 const gavl_metadata_t * (*get_metadata)(
void * priv);
2054 int (*create_output_file)(
void * data,
const char * filename);
2072 const char * extensions;
2073 const char * mimetypes;
2092 int (*write_header)(
void * priv,
const char * filename,
2160 void (*reset)(
void * priv);
2171 gavl_audio_source_t * (*connect)(
void * priv, gavl_audio_source_t *,
2183 int (*need_restart)(
void * priv);
2207 void (*reset)(
void * priv);
2218 int (*need_restart)(
void * priv);
2227 gavl_video_source_t * (*connect)(
void * priv,
2228 gavl_video_source_t * src,
2278 void (*set_callbacks)(
void * priv, bg_ov_callbacks_t * cb);
2305 const char * window_id);
2340 void (*show_frame)(
void * priv);
2346 void (*close)(
void * priv);
2382 gavl_audio_sink_t * (*open_encode_audio)(
void * priv,
2385 gavl_metadata_t * m);
2395 gavl_video_sink_t * (*open_encode_video)(
void * priv,
2398 gavl_metadata_t * m);
2408 gavl_video_sink_t * (*open_encode_overlay)(
void * priv,
2411 gavl_metadata_t * m);
2418 void (*set_packet_sink)(
void * priv, gavl_packet_sink_t * s);
2428 gavl_audio_source_t * (*connect_decode_audio)(
void * priv,
2429 gavl_packet_source_t * src,
2432 gavl_metadata_t * m);
2442 gavl_video_source_t * (*connect_decode_video)(
void * priv,
2443 gavl_packet_source_t * src,
2446 gavl_metadata_t * m);
2456 gavl_video_source_t * (*connect_decode_overlay)(
void * priv,
2457 gavl_packet_source_t * src,
2460 gavl_metadata_t * m);
2469 void (*reset)(
void * priv);
2477 int64_t (*skip)(
void * priv, int64_t t);
2486 int (*set_pass)(
void * priv,
int pass,
int total_passes,
2487 const char * stats_file);
2495 #endif // __BG_PLUGIN_H_ Audio visualization plugin.
Definition: plugin.h:2268
char * description
Textual description.
Definition: plugin.h:269
struct gavl_audio_options_s gavl_audio_options_t
Recorder.
Definition: plugin.h:1042
Encoder postprocessor (e.g. CD burner)
Definition: plugin.h:202
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:264
bg_stream_action_t
Stream actions.
Definition: plugin.h:164
Callbacks for postprocessing.
Definition: plugin.h:1865
Callbacks for recorder plugins.
Definition: plugin.h:1014
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:203
Stream will be read in compressed form.
Definition: plugin.h:168
Encoder plugin.
Definition: plugin.h:1471
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:81
char * gettext_domain
First argument for bindtextdomain().
Definition: plugin.h:261
struct gavl_video_options_s gavl_video_options_t
void bg_device_info_destroy(bg_device_info_t *arr)
Free an array of device descriptions.
Audio recorder.
Definition: plugin.h:195
Image writer plugin.
Definition: plugin.h:2068
Callbacks for the encoder plugin.
Definition: plugin.h:1433
void(* destroy)(void *priv)
Destroy plugin instance.
Definition: plugin.h:294
Device description.
Definition: plugin.h:220
int flags
Flags (see defines)
Definition: plugin.h:267
bg_set_parameter_func_t set_parameter
Set configuration parameter (optional)
Definition: plugin.h:308
int(* check_device)(const char *device, char **name)
Check, if a device can be opened by the plugin (optional)
Definition: plugin.h:327
Encoder for video only.
Definition: plugin.h:198
Encoder for multiple kinds of streams.
Definition: plugin.h:201
Image reader plugin.
Definition: plugin.h:1989
Encoding postprocessor.
Definition: plugin.h:1902
Video output.
Definition: plugin.h:194
Encoder for overlay subtitles only.
Definition: plugin.h:200
int priority
Priority (between 1 and 10).
Definition: plugin.h:277
bg_get_parameter_func_t get_parameter
Get configuration parameter (optional)
Definition: plugin.h:316
Audio output plugin.
Definition: plugin.h:937
Callbacks for the video output plugin.
Definition: plugin.h:1118
Codec plugin.
Definition: plugin.h:2362
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:191
Audio/Video (de)compressor.
Definition: plugin.h:209
Audio filter plugin.
Definition: plugin.h:2149
Encoder for audio only.
Definition: plugin.h:197
Stream is switched off and will be ignored.
Definition: plugin.h:166
char * long_name
Humanized name for GUI widgets.
Definition: plugin.h:265
Image writer.
Definition: plugin.h:204
bg_plugin_type_t type
Type.
Definition: plugin.h:266
Video recorder.
Definition: plugin.h:196
Audio output.
Definition: plugin.h:193
Stream is switched on and will be decoded.
Definition: plugin.h:167
Callbacks for the image writer plugin.
Definition: plugin.h:2042
Audio/Video recorder.
Definition: plugin.h:208
char * gettext_directory
Second argument for bindtextdomain().
Definition: plugin.h:262
Media input.
Definition: plugin.h:192
Base structure common to all plugins.
Definition: plugin.h:259
Container for a parameter value.
Definition: parameter.h:82
Visualization.
Definition: plugin.h:207
Video filter plugin.
Definition: plugin.h:2196
int(* bg_read_video_func_t)(void *priv, gavl_video_frame_t *frame, int stream)
Generic prototype for reading video.
Definition: plugin.h:96
bg_plugin_type_t
Plugin types.
Definition: plugin.h:189
Track info.
Definition: streaminfo.h:255
Audio filter.
Definition: plugin.h:205
Video output plugin.
Definition: plugin.h:1253
Video filter.
Definition: plugin.h:206
Encoder for text subtitles only.
Definition: plugin.h:199