]> git.sesse.net Git - mlt/commitdiff
Merge pull request #25 from RedDwarf69/versioned_symbols
authorDan Dennedy <dan@dennedy.org>
Wed, 13 Feb 2013 00:36:18 +0000 (16:36 -0800)
committerDan Dennedy <dan@dennedy.org>
Wed, 13 Feb 2013 00:36:18 +0000 (16:36 -0800)
Use symbol versioning

src/framework/Makefile
src/framework/mlt.vers [new file with mode: 0644]
src/mlt++/Makefile
src/mlt++/config.h
src/mlt++/mlt++.vers [new file with mode: 0644]

index 6c64860136b17fbd9c44b12dcf01e748e307f3df..7c79fbc8d463734e95a71ff6eac65f05b6e48ffa 100644 (file)
@@ -17,7 +17,7 @@ else
 NAME = libmlt$(LIBSUF)
 TARGET = $(NAME).$(version)
 SONAME = $(NAME).$(soversion)
-SHFLAGS += -Wl,-soname,$(SONAME)
+SHFLAGS += -Wl,-soname,$(SONAME) -Wl,--version-script=mlt.vers
 endif
 
 OBJS = mlt_frame.o \
diff --git a/src/framework/mlt.vers b/src/framework/mlt.vers
new file mode 100644 (file)
index 0000000..167ed48
--- /dev/null
@@ -0,0 +1,403 @@
+MLT_0.8.8 {
+  global:
+    default_callback;
+    mlt_audio_format_name;
+    mlt_audio_format_size;
+    mlt_cache_close;
+    mlt_cache_get;
+    mlt_cache_get_frame;
+    mlt_cache_get_size;
+    mlt_cache_init;
+    mlt_cache_item_close;
+    mlt_cache_item_data;
+    mlt_cache_purge;
+    mlt_cache_put;
+    mlt_cache_put_frame;
+    mlt_cache_set_size;
+    mlt_consumer_close;
+    mlt_consumer_connect;
+    mlt_consumer_get_frame;
+    mlt_consumer_init;
+    mlt_consumer_is_stopped;
+    mlt_consumer_new;
+    mlt_consumer_position;
+    mlt_consumer_properties;
+    mlt_consumer_purge;
+    mlt_consumer_put_frame;
+    mlt_consumer_rt_frame;
+    mlt_consumer_service;
+    mlt_consumer_start;
+    mlt_consumer_stop;
+    mlt_consumer_stopped;
+    mlt_deque_close;
+    mlt_deque_count;
+    mlt_deque_init;
+    mlt_deque_insert;
+    mlt_deque_peek;
+    mlt_deque_peek_back;
+    mlt_deque_peek_back_double;
+    mlt_deque_peek_back_int;
+    mlt_deque_peek_front;
+    mlt_deque_peek_front_double;
+    mlt_deque_peek_front_int;
+    mlt_deque_pop_back;
+    mlt_deque_pop_back_double;
+    mlt_deque_pop_back_int;
+    mlt_deque_pop_front;
+    mlt_deque_pop_front_double;
+    mlt_deque_pop_front_int;
+    mlt_deque_push_back;
+    mlt_deque_push_back_double;
+    mlt_deque_push_back_int;
+    mlt_deque_push_front;
+    mlt_deque_push_front_double;
+    mlt_deque_push_front_int;
+    mlt_environment;
+    mlt_environment_set;
+    mlt_event_block;
+    mlt_event_close;
+    mlt_event_inc_ref;
+    mlt_events_block;
+    mlt_events_close_wait_for;
+    mlt_events_disconnect;
+    mlt_events_fire;
+    mlt_events_init;
+    mlt_events_listen;
+    mlt_events_register;
+    mlt_events_setup_wait_for;
+    mlt_events_unblock;
+    mlt_events_wait_for;
+    mlt_event_unblock;
+    mlt_factory_close;
+    mlt_factory_consumer;
+    mlt_factory_directory;
+    mlt_factory_event_object;
+    mlt_factory_filter;
+    mlt_factory_init;
+    mlt_factory_producer;
+    mlt_factory_register_for_clean_up;
+    mlt_factory_transition;
+    mlt_field_close;
+    mlt_field_disconnect_service;
+    mlt_field_init;
+    mlt_field_multitrack;
+    mlt_field_new;
+    mlt_field_plant_filter;
+    mlt_field_plant_transition;
+    mlt_field_properties;
+    mlt_field_service;
+    mlt_field_tractor;
+    mlt_filter_close;
+    mlt_filter_connect;
+    mlt_filter_get_in;
+    mlt_filter_get_length;
+    mlt_filter_get_length2;
+    mlt_filter_get_out;
+    mlt_filter_get_position;
+    mlt_filter_get_progress;
+    mlt_filter_get_track;
+    mlt_filter_init;
+    mlt_filter_new;
+    mlt_filter_process;
+    mlt_filter_properties;
+    mlt_filter_service;
+    mlt_filter_set_in_and_out;
+    mlt_frame_clone;
+    mlt_frame_close;
+    mlt_frame_get_alpha_mask;
+    mlt_frame_get_aspect_ratio;
+    mlt_frame_get_audio;
+    mlt_frame_get_image;
+    mlt_frame_get_original_producer;
+    mlt_frame_get_position;
+    mlt_frame_get_waveform;
+    mlt_frame_init;
+    mlt_frame_is_test_audio;
+    mlt_frame_is_test_card;
+    mlt_frame_original_position;
+    mlt_frame_pop_audio;
+    mlt_frame_pop_frame;
+    mlt_frame_pop_get_image;
+    mlt_frame_pop_service;
+    mlt_frame_pop_service_int;
+    mlt_frame_properties;
+    mlt_frame_push_audio;
+    mlt_frame_push_frame;
+    mlt_frame_push_get_image;
+    mlt_frame_push_service;
+    mlt_frame_push_service_int;
+    mlt_frame_replace_image;
+    mlt_frame_service_stack;
+    mlt_frame_set_alpha;
+    mlt_frame_set_aspect_ratio;
+    mlt_frame_set_audio;
+    mlt_frame_set_image;
+    mlt_frame_set_position;
+    mlt_frame_unique_properties;
+    mlt_frame_write_ppm;
+    mlt_geometry_close;
+    mlt_geometry_fetch;
+    mlt_geometry_get_length;
+    mlt_geometry_init;
+    mlt_geometry_insert;
+    mlt_geometry_interpolate;
+    mlt_geometry_next_key;
+    mlt_geometry_parse;
+    mlt_geometry_parse_item;
+    mlt_geometry_prev_key;
+    mlt_geometry_refresh;
+    mlt_geometry_remove;
+    mlt_geometry_serialise;
+    mlt_geometry_serialise_cut;
+    mlt_geometry_set_length;
+    mlt_global_properties;
+    mlt_image_format_name;
+    mlt_image_format_size;
+    mlt_log;
+    mlt_log_get_level;
+    mlt_log_set_callback;
+    mlt_log_set_level;
+    mlt_multitrack_clip;
+    mlt_multitrack_close;
+    mlt_multitrack_connect;
+    mlt_multitrack_count;
+    mlt_multitrack_init;
+    mlt_multitrack_producer;
+    mlt_multitrack_properties;
+    mlt_multitrack_refresh;
+    mlt_multitrack_service;
+    mlt_multitrack_track;
+    mlt_parser_close;
+    mlt_parser_new;
+    mlt_parser_properties;
+    mlt_parser_start;
+    mlt_playlist_append;
+    mlt_playlist_append_io;
+    mlt_playlist_blank;
+    mlt_playlist_blanks_from;
+    mlt_playlist_blank_time;
+    mlt_playlist_clear;
+    mlt_playlist_clip;
+    mlt_playlist_clip_is_mix;
+    mlt_playlist_clip_length;
+    mlt_playlist_clip_start;
+    mlt_playlist_close;
+    mlt_playlist_consolidate_blanks;
+    mlt_playlist_count;
+    mlt_playlist_current;
+    mlt_playlist_current_clip;
+    mlt_playlist_get_clip;
+    mlt_playlist_get_clip_at;
+    mlt_playlist_get_clip_index_at;
+    mlt_playlist_get_clip_info;
+    mlt_playlist_init;
+    mlt_playlist_insert;
+    mlt_playlist_insert_at;
+    mlt_playlist_insert_blank;
+    mlt_playlist_is_blank;
+    mlt_playlist_is_blank_at;
+    mlt_playlist_join;
+    mlt_playlist_mix;
+    mlt_playlist_mix_add;
+    mlt_playlist_move;
+    mlt_playlist_move_region;
+    mlt_playlist_new;
+    mlt_playlist_pad_blanks;
+    mlt_playlist_producer;
+    mlt_playlist_properties;
+    mlt_playlist_remove;
+    mlt_playlist_remove_region;
+    mlt_playlist_repeat_clip;
+    mlt_playlist_replace_with_blank;
+    mlt_playlist_resize_clip;
+    mlt_playlist_service;
+    mlt_playlist_split;
+    mlt_playlist_split_at;
+    mlt_pool_alloc;
+    mlt_pool_close;
+    mlt_pool_init;
+    mlt_pool_purge;
+    mlt_pool_realloc;
+    mlt_pool_release;
+    mlt_producer_attach;
+    mlt_producer_clear;
+    mlt_producer_close;
+    mlt_producer_cut;
+    mlt_producer_cut_parent;
+    mlt_producer_detach;
+    mlt_producer_filter;
+    mlt_producer_frame;
+    mlt_producer_frame_time;
+    mlt_producer_get_fps;
+    mlt_producer_get_in;
+    mlt_producer_get_length;
+    mlt_producer_get_length_time;
+    mlt_producer_get_out;
+    mlt_producer_get_playtime;
+    mlt_producer_get_speed;
+    mlt_producer_init;
+    mlt_producer_is_blank;
+    mlt_producer_is_cut;
+    mlt_producer_is_mix;
+    mlt_producer_new;
+    mlt_producer_optimise;
+    mlt_producer_position;
+    mlt_producer_prepare_next;
+    mlt_producer_properties;
+    mlt_producer_seek;
+    mlt_producer_seek_time;
+    mlt_producer_service;
+    mlt_producer_set_in_and_out;
+    mlt_producer_set_speed;
+    mlt_profile_clone;
+    mlt_profile_close;
+    mlt_profile_dar;
+    mlt_profile_fps;
+    mlt_profile_from_producer;
+    mlt_profile_init;
+    mlt_profile_list;
+    mlt_profile_load_file;
+    mlt_profile_load_properties;
+    mlt_profile_load_string;
+    mlt_profile_sar;
+    mlt_properties_close;
+    mlt_properties_count;
+    mlt_properties_debug;
+    mlt_properties_dec_ref;
+    mlt_properties_dir_list;
+    mlt_properties_dump;
+    mlt_properties_get;
+    mlt_properties_get_data;
+    mlt_properties_get_data_at;
+    mlt_properties_get_double;
+    mlt_properties_get_int;
+    mlt_properties_get_int64;
+    mlt_properties_get_lcnumeric;
+    mlt_properties_get_name;
+    mlt_properties_get_position;
+    mlt_properties_get_time;
+    mlt_properties_get_value;
+    mlt_properties_inc_ref;
+    mlt_properties_inherit;
+    mlt_properties_init;
+    mlt_properties_is_sequence;
+    mlt_properties_load;
+    mlt_properties_lock;
+    mlt_properties_mirror;
+    mlt_properties_new;
+    mlt_properties_parse;
+    mlt_properties_parse_yaml;
+    mlt_properties_pass;
+    mlt_properties_pass_list;
+    mlt_properties_pass_property;
+    mlt_properties_preset;
+    mlt_properties_ref_count;
+    mlt_properties_rename;
+    mlt_properties_save;
+    mlt_properties_serialise_yaml;
+    mlt_properties_set;
+    mlt_properties_set_data;
+    mlt_properties_set_double;
+    mlt_properties_set_int;
+    mlt_properties_set_int64;
+    mlt_properties_set_lcnumeric;
+    mlt_properties_set_or_default;
+    mlt_properties_set_position;
+    mlt_properties_unlock;
+    mlt_property_close;
+    mlt_property_get_data;
+    mlt_property_get_double;
+    mlt_property_get_int;
+    mlt_property_get_int64;
+    mlt_property_get_position;
+    mlt_property_get_string;
+    mlt_property_get_string_l;
+    mlt_property_get_time;
+    mlt_property_init;
+    mlt_property_pass;
+    mlt_property_set_data;
+    mlt_property_set_double;
+    mlt_property_set_int;
+    mlt_property_set_int64;
+    mlt_property_set_position;
+    mlt_property_set_string;
+    mlt_repository_close;
+    mlt_repository_consumers;
+    mlt_repository_create;
+    mlt_repository_filters;
+    mlt_repository_init;
+    mlt_repository_languages;
+    mlt_repository_metadata;
+    mlt_repository_presets;
+    mlt_repository_producers;
+    mlt_repository_register;
+    mlt_repository_register_metadata;
+    mlt_repository_transitions;
+    mlt_sample_calculator;
+    mlt_sample_calculator_to_now;
+    mlt_sdl_mutex;
+    mlt_service_apply_filters;
+    mlt_service_attach;
+    mlt_service_cache_get;
+    mlt_service_cache_get_size;
+    mlt_service_cache_purge;
+    mlt_service_cache_put;
+    mlt_service_cache_set_size;
+    mlt_service_close;
+    mlt_service_connect_producer;
+    mlt_service_consumer;
+    mlt_service_detach;
+    mlt_service_filter;
+    mlt_service_get_frame;
+    mlt_service_get_producer;
+    mlt_service_identify;
+    mlt_service_init;
+    mlt_service_lock;
+    mlt_service_producer;
+    mlt_service_profile;
+    mlt_service_properties;
+    mlt_service_set_profile;
+    mlt_service_unlock;
+    mlt_tokeniser_close;
+    mlt_tokeniser_count;
+    mlt_tokeniser_get_input;
+    mlt_tokeniser_get_string;
+    mlt_tokeniser_init;
+    mlt_tokeniser_parse_new;
+    mlt_tractor_close;
+    mlt_tractor_connect;
+    mlt_tractor_field;
+    mlt_tractor_get_track;
+    mlt_tractor_init;
+    mlt_tractor_multitrack;
+    mlt_tractor_new;
+    mlt_tractor_producer;
+    mlt_tractor_properties;
+    mlt_tractor_refresh;
+    mlt_tractor_service;
+    mlt_tractor_set_track;
+    mlt_transition_close;
+    mlt_transition_connect;
+    mlt_transition_get_a_track;
+    mlt_transition_get_b_track;
+    mlt_transition_get_in;
+    mlt_transition_get_length;
+    mlt_transition_get_out;
+    mlt_transition_get_position;
+    mlt_transition_get_progress;
+    mlt_transition_get_progress_delta;
+    mlt_transition_init;
+    mlt_transition_new;
+    mlt_transition_process;
+    mlt_transition_properties;
+    mlt_transition_service;
+    mlt_transition_set_in_and_out;
+    mlt_version_get_int;
+    mlt_version_get_major;
+    mlt_version_get_minor;
+    mlt_version_get_revision;
+    mlt_version_get_string;
+    mlt_vlog;
+
+  local: *;
+};
index 3f8c4196833a85c77f0020ba3b179bee3169fc1a..2cea7b98ee43607f274e0718ec0b5ad0be2426e3 100644 (file)
@@ -19,9 +19,9 @@ SONAME = $(NAME).$(soversion)
 LIBFLAGS += -Wl,-soname,$(SONAME)
 endif
 
-CXXFLAGS += -I.. $(RDYNAMIC) -DVERSION=\"$(version)\"
+CXXFLAGS += -I.. $(RDYNAMIC) -DVERSION=\"$(version)\" -fvisibility=hidden
 
-LDFLAGS += -L../framework -lmlt
+LDFLAGS += -L../framework -lmlt -Wl,--version-script=mlt++.vers
 
 OBJS = MltConsumer.o \
           MltDeque.o \
index f25c66bd7a4c6ed71df4e18c7f8c54ce89371afc..4900fe6e5ea6da55eef925c9ab1b174a3135c893 100644 (file)
         #define MLTPP_DECLSPEC __declspec( dllimport )
     #endif
 #else
-    #define MLTPP_DECLSPEC
+    #if __GNUC__ >= 4
+        #define MLTPP_DECLSPEC __attribute__ ((visibility ("default")))
+    #else
+        #define MLTPP_DECLSPEC
+    #endif
 #endif
 
 #endif
diff --git a/src/mlt++/mlt++.vers b/src/mlt++/mlt++.vers
new file mode 100644 (file)
index 0000000..e735d39
--- /dev/null
@@ -0,0 +1,436 @@
+MLTPP_0.8.8 {
+  global:
+    extern "C++" {
+      "Mlt::ClipInfo::~ClipInfo()";
+      "Mlt::ClipInfo::ClipInfo()";
+      "Mlt::ClipInfo::ClipInfo(mlt_playlist_clip_info*)";
+      "Mlt::ClipInfo::update(mlt_playlist_clip_info*)";
+      "typeinfo for Mlt::Consumer";
+      "typeinfo name for Mlt::Consumer";
+      "vtable for Mlt::Consumer";
+      "Mlt::Consumer::connect(Mlt::Service&)";
+      "Mlt::Consumer::~Consumer()";
+      "Mlt::Consumer::Consumer()";
+      "Mlt::Consumer::Consumer(Mlt::Consumer&)";
+      "Mlt::Consumer::Consumer(mlt_consumer_s*)";
+      "Mlt::Consumer::Consumer(Mlt::Profile&)";
+      "Mlt::Consumer::Consumer(Mlt::Profile&, char const*, char const*)";
+      "Mlt::Consumer::Consumer(Mlt::Service&)";
+      "Mlt::Consumer::get_consumer()";
+      "Mlt::Consumer::get_service()";
+      "Mlt::Consumer::is_stopped()";
+      "Mlt::Consumer::position()";
+      "Mlt::Consumer::purge()";
+      "Mlt::Consumer::run()";
+      "Mlt::Consumer::start()";
+      "Mlt::Consumer::stop()";
+      "Mlt::Deque::count()";
+      "Mlt::Deque::~Deque()";
+      "Mlt::Deque::Deque()";
+      "Mlt::Deque::peek_back()";
+      "Mlt::Deque::peek_front()";
+      "Mlt::Deque::pop_back()";
+      "Mlt::Deque::pop_front()";
+      "Mlt::Deque::push_back(void*)";
+      "Mlt::Deque::push_front(void*)";
+      "Mlt::Event::block()";
+      "Mlt::Event::~Event()";
+      "Mlt::Event::Event(Mlt::Event&)";
+      "Mlt::Event::Event(mlt_event_struct*)";
+      "Mlt::Event::get_event()";
+      "Mlt::Event::is_valid()";
+      "Mlt::Event::unblock()";
+      "Mlt::Factory::close()";
+      "Mlt::Factory::consumer(Mlt::Profile&, char*, char*)";
+      "Mlt::Factory::event_object()";
+      "Mlt::Factory::filter(Mlt::Profile&, char*, char*)";
+      "Mlt::Factory::init(char const*)";
+      "Mlt::Factory::producer(Mlt::Profile&, char*, char*)";
+      "Mlt::Factory::transition(Mlt::Profile&, char*, char*)";
+      "typeinfo for Mlt::Field";
+      "typeinfo name for Mlt::Field";
+      "vtable for Mlt::Field";
+      "Mlt::Field::disconnect_service(Mlt::Service&)";
+      "Mlt::Field::~Field()";
+      "Mlt::Field::Field(Mlt::Field&)";
+      "Mlt::Field::Field(mlt_field_s*)";
+      "Mlt::Field::get_field()";
+      "Mlt::Field::get_service()";
+      "Mlt::Field::plant_filter(Mlt::Filter&, int)";
+      "Mlt::Field::plant_transition(Mlt::Transition&, int, int)";
+      "typeinfo for Mlt::FilteredConsumer";
+      "typeinfo name for Mlt::FilteredConsumer";
+      "vtable for Mlt::FilteredConsumer";
+      "Mlt::FilteredConsumer::attach(Mlt::Filter&)";
+      "Mlt::FilteredConsumer::connect(Mlt::Service&)";
+      "Mlt::FilteredConsumer::detach(Mlt::Filter&)";
+      "Mlt::FilteredConsumer::~FilteredConsumer()";
+      "Mlt::FilteredConsumer::FilteredConsumer(Mlt::Consumer&)";
+      "Mlt::FilteredConsumer::FilteredConsumer(Mlt::Profile&, char const*, char const*)";
+      "Mlt::FilteredConsumer::last(Mlt::Filter&)";
+      "typeinfo for Mlt::FilteredProducer";
+      "typeinfo name for Mlt::FilteredProducer";
+      "vtable for Mlt::FilteredProducer";
+      "Mlt::FilteredProducer::attach(Mlt::Filter&)";
+      "Mlt::FilteredProducer::detach(Mlt::Filter&)";
+      "Mlt::FilteredProducer::~FilteredProducer()";
+      "Mlt::FilteredProducer::FilteredProducer(Mlt::Profile&, char const*, char const*)";
+      "typeinfo for Mlt::Filter";
+      "typeinfo name for Mlt::Filter";
+      "vtable for Mlt::Filter";
+      "Mlt::Filter::connect(Mlt::Service&, int)";
+      "Mlt::Filter::~Filter()";
+      "Mlt::Filter::Filter(Mlt::Filter&)";
+      "Mlt::Filter::Filter(mlt_filter_s*)";
+      "Mlt::Filter::Filter(Mlt::Profile&, char const*, char const*)";
+      "Mlt::Filter::Filter(Mlt::Service&)";
+      "Mlt::Filter::get_filter()";
+      "Mlt::Filter::get_in()";
+      "Mlt::Filter::get_length()";
+      "Mlt::Filter::get_length2(Mlt::Frame&)";
+      "Mlt::Filter::get_out()";
+      "Mlt::Filter::get_position(Mlt::Frame&)";
+      "Mlt::Filter::get_progress(Mlt::Frame&)";
+      "Mlt::Filter::get_service()";
+      "Mlt::Filter::get_track()";
+      "Mlt::Filter::set_in_and_out(int, int)";
+      "typeinfo for Mlt::Frame";
+      "typeinfo name for Mlt::Frame";
+      "vtable for Mlt::Frame";
+      "Mlt::Frame::fetch_image(mlt_image_format, int, int, int)";
+      "Mlt::Frame::~Frame()";
+      "Mlt::Frame::Frame(Mlt::Frame&)";
+      "Mlt::Frame::Frame(mlt_frame_s*)";
+      "Mlt::Frame::get_audio(mlt_audio_format&, int&, int&, int&)";
+      "Mlt::Frame::get_frame()";
+      "Mlt::Frame::get_image(mlt_image_format&, int&, int&, int)";
+      "Mlt::Frame::get_original_producer()";
+      "Mlt::Frame::get_position()";
+      "Mlt::Frame::get_properties()";
+      "Mlt::Frame::get_unique_properties(Mlt::Service&)";
+      "Mlt::Frame::get_waveform(int, int)";
+      "Mlt::Frame::set_alpha(unsigned char*, int, void (*)(void*))";
+      "Mlt::Frame::set_image(unsigned char*, int, void (*)(void*))";
+      "Mlt::Geometry::fetch(Mlt::GeometryItem*, float)";
+      "Mlt::Geometry::fetch(Mlt::GeometryItem&, float)";
+      "Mlt::Geometry::~Geometry()";
+      "Mlt::Geometry::Geometry(char*, int, int, int)";
+      "Mlt::Geometry::insert(Mlt::GeometryItem*)";
+      "Mlt::Geometry::insert(Mlt::GeometryItem&)";
+      "Mlt::Geometry::interpolate()";
+      "Mlt::Geometry::next_key(Mlt::GeometryItem*, int)";
+      "Mlt::Geometry::next_key(Mlt::GeometryItem&, int)";
+      "Mlt::Geometry::parse(char*, int, int, int)";
+      "Mlt::Geometry::prev_key(Mlt::GeometryItem*, int)";
+      "Mlt::Geometry::prev_key(Mlt::GeometryItem&, int)";
+      "Mlt::Geometry::remove(int)";
+      "Mlt::Geometry::serialise()";
+      "Mlt::Geometry::serialise(int, int)";
+      "typeinfo for Mlt::Multitrack";
+      "typeinfo name for Mlt::Multitrack";
+      "vtable for Mlt::Multitrack";
+      "Mlt::Multitrack::clip(mlt_whence, int)";
+      "Mlt::Multitrack::connect(Mlt::Producer&, int)";
+      "Mlt::Multitrack::count()";
+      "Mlt::Multitrack::get_multitrack()";
+      "Mlt::Multitrack::get_producer()";
+      "Mlt::Multitrack::~Multitrack()";
+      "Mlt::Multitrack::Multitrack(Mlt::Multitrack&)";
+      "Mlt::Multitrack::Multitrack(mlt_multitrack_s*)";
+      "Mlt::Multitrack::Multitrack(Mlt::Service&)";
+      "Mlt::Multitrack::refresh()";
+      "Mlt::Multitrack::track(int)";
+      "typeinfo for Mlt::Parser";
+      "typeinfo name for Mlt::Parser";
+      "vtable for Mlt::Parser";
+      "Mlt::Parser::get_properties()";
+      "Mlt::Parser::on_end_filter(Mlt::Filter*)";
+      "Mlt::Parser::on_end_multitrack(Mlt::Multitrack*)";
+      "Mlt::Parser::on_end_playlist(Mlt::Playlist*)";
+      "Mlt::Parser::on_end_producer(Mlt::Producer*)";
+      "Mlt::Parser::on_end_track()";
+      "Mlt::Parser::on_end_tractor(Mlt::Tractor*)";
+      "Mlt::Parser::on_end_transition(Mlt::Transition*)";
+      "Mlt::Parser::on_invalid(Mlt::Service*)";
+      "Mlt::Parser::on_start_filter(Mlt::Filter*)";
+      "Mlt::Parser::on_start_multitrack(Mlt::Multitrack*)";
+      "Mlt::Parser::on_start_playlist(Mlt::Playlist*)";
+      "Mlt::Parser::on_start_producer(Mlt::Producer*)";
+      "Mlt::Parser::on_start_track()";
+      "Mlt::Parser::on_start_tractor(Mlt::Tractor*)";
+      "Mlt::Parser::on_start_transition(Mlt::Transition*)";
+      "Mlt::Parser::on_unknown(Mlt::Service*)";
+      "Mlt::Parser::~Parser()";
+      "Mlt::Parser::Parser()";
+      "Mlt::Parser::start(Mlt::Service&)";
+      "typeinfo for Mlt::Playlist";
+      "typeinfo name for Mlt::Playlist";
+      "vtable for Mlt::Playlist";
+      "Mlt::Playlist::append(Mlt::Producer&, int, int)";
+      "Mlt::Playlist::blank(char const*)";
+      "Mlt::Playlist::blank(int)";
+      "Mlt::Playlist::blanks_from(int, int)";
+      "Mlt::Playlist::clear()";
+      "Mlt::Playlist::clip_info(int, Mlt::ClipInfo*)";
+      "Mlt::Playlist::clip_length(int)";
+      "Mlt::Playlist::clip(mlt_whence, int)";
+      "Mlt::Playlist::clip_start(int)";
+      "Mlt::Playlist::consolidate_blanks(int)";
+      "Mlt::Playlist::count()";
+      "Mlt::Playlist::current()";
+      "Mlt::Playlist::current_clip()";
+      "Mlt::Playlist::delete_clip_info(Mlt::ClipInfo*)";
+      "Mlt::Playlist::get_clip_at(int)";
+      "Mlt::Playlist::get_clip_index_at(int)";
+      "Mlt::Playlist::get_clip(int)";
+      "Mlt::Playlist::get_playlist()";
+      "Mlt::Playlist::get_producer()";
+      "Mlt::Playlist::insert_at(int, Mlt::Producer*, int)";
+      "Mlt::Playlist::insert_at(int, Mlt::Producer&, int)";
+      "Mlt::Playlist::insert_blank(int, int)";
+      "Mlt::Playlist::insert(Mlt::Producer&, int, int, int)";
+      "Mlt::Playlist::is_blank_at(int)";
+      "Mlt::Playlist::is_blank(int)";
+      "Mlt::Playlist::is_mix(int)";
+      "Mlt::Playlist::join(int, int, int)";
+      "Mlt::Playlist::mix_add(int, Mlt::Transition*)";
+      "Mlt::Playlist::mix(int, int, Mlt::Transition*)";
+      "Mlt::Playlist::move(int, int)";
+      "Mlt::Playlist::move_region(int, int, int)";
+      "Mlt::Playlist::pad_blanks(int, int, int)";
+      "Mlt::Playlist::~Playlist()";
+      "Mlt::Playlist::Playlist()";
+      "Mlt::Playlist::Playlist(Mlt::Playlist&)";
+      "Mlt::Playlist::Playlist(mlt_playlist_s*)";
+      "Mlt::Playlist::Playlist(Mlt::Profile&)";
+      "Mlt::Playlist::Playlist(Mlt::Service&)";
+      "Mlt::Playlist::remove(int)";
+      "Mlt::Playlist::remove_region(int, int)";
+      "Mlt::Playlist::repeat(int, int)";
+      "Mlt::Playlist::replace_with_blank(int)";
+      "Mlt::Playlist::resize_clip(int, int, int)";
+      "Mlt::Playlist::split_at(int, bool)";
+      "Mlt::Playlist::split(int, int)";
+      "typeinfo for Mlt::Producer";
+      "typeinfo name for Mlt::Producer";
+      "vtable for Mlt::Producer";
+      "Mlt::Producer::clear()";
+      "Mlt::Producer::cut(int, int)";
+      "Mlt::Producer::frame()";
+      "Mlt::Producer::frame_time(mlt_time_format)";
+      "Mlt::Producer::get_fps()";
+      "Mlt::Producer::get_in()";
+      "Mlt::Producer::get_length()";
+      "Mlt::Producer::get_length_time(mlt_time_format)";
+      "Mlt::Producer::get_out()";
+      "Mlt::Producer::get_parent()";
+      "Mlt::Producer::get_playtime()";
+      "Mlt::Producer::get_producer()";
+      "Mlt::Producer::get_service()";
+      "Mlt::Producer::get_speed()";
+      "Mlt::Producer::is_blank()";
+      "Mlt::Producer::is_cut()";
+      "Mlt::Producer::optimise()";
+      "Mlt::Producer::parent()";
+      "Mlt::Producer::pause()";
+      "Mlt::Producer::position()";
+      "Mlt::Producer::~Producer()";
+      "Mlt::Producer::Producer()";
+      "Mlt::Producer::Producer(Mlt::Producer*)";
+      "Mlt::Producer::Producer(Mlt::Producer&)";
+      "Mlt::Producer::Producer(mlt_producer_s*)";
+      "Mlt::Producer::Producer(Mlt::Profile&, char const*, char const*)";
+      "Mlt::Producer::Producer(Mlt::Service&)";
+      "Mlt::Producer::runs_into(Mlt::Producer&)";
+      "Mlt::Producer::same_clip(Mlt::Producer&)";
+      "Mlt::Producer::seek(char const*)";
+      "Mlt::Producer::seek(int)";
+      "Mlt::Producer::set_in_and_out(int, int)";
+      "Mlt::Producer::set_speed(double)";
+      "Mlt::Profile::colorspace() const";
+      "Mlt::Profile::dar() const";
+      "Mlt::Profile::description() const";
+      "Mlt::Profile::display_aspect_den() const";
+      "Mlt::Profile::display_aspect_num() const";
+      "Mlt::Profile::fps() const";
+      "Mlt::Profile::frame_rate_den() const";
+      "Mlt::Profile::frame_rate_num() const";
+      "Mlt::Profile::from_producer(Mlt::Producer&)";
+      "Mlt::Profile::get_profile() const";
+      "Mlt::Profile::height() const";
+      "Mlt::Profile::is_explicit() const";
+      "Mlt::Profile::list()";
+      "Mlt::Profile::~Profile()";
+      "Mlt::Profile::Profile()";
+      "Mlt::Profile::Profile(char const*)";
+      "Mlt::Profile::Profile(mlt_profile_s*)";
+      "Mlt::Profile::Profile(Mlt::Properties&)";
+      "Mlt::Profile::progressive() const";
+      "Mlt::Profile::sample_aspect_den() const";
+      "Mlt::Profile::sample_aspect_num() const";
+      "Mlt::Profile::sar() const";
+      "Mlt::Profile::set_colorspace(int)";
+      "Mlt::Profile::set_explicit(int)";
+      "Mlt::Profile::set_frame_rate(int, int)";
+      "Mlt::Profile::set_height(int)";
+      "Mlt::Profile::set_progressive(int)";
+      "Mlt::Profile::set_sample_aspect(int, int)";
+      "Mlt::Profile::set_width(int)";
+      "Mlt::Profile::width() const";
+      "typeinfo for Mlt::Properties";
+      "typeinfo name for Mlt::Properties";
+      "vtable for Mlt::Properties";
+      "Mlt::Properties::block(void*)";
+      "Mlt::Properties::count()";
+      "Mlt::Properties::debug(char const*, _IO_FILE*)";
+      "Mlt::Properties::dec_ref()";
+      "Mlt::Properties::delete_event(Mlt::Event*)";
+      "Mlt::Properties::dump(_IO_FILE*)";
+      "Mlt::Properties::fire_event(char const*)";
+      "Mlt::Properties::get(char const*)";
+      "Mlt::Properties::get_data(char const*)";
+      "Mlt::Properties::get_data(char const*, int&)";
+      "Mlt::Properties::get_data(int, int&)";
+      "Mlt::Properties::get_double(char const*)";
+      "Mlt::Properties::get(int)";
+      "Mlt::Properties::get_int64(char const*)";
+      "Mlt::Properties::get_int(char const*)";
+      "Mlt::Properties::get_lcnumeric()";
+      "Mlt::Properties::get_name(int)";
+      "Mlt::Properties::get_properties()";
+      "Mlt::Properties::get_time(char const*, mlt_time_format)";
+      "Mlt::Properties::inc_ref()";
+      "Mlt::Properties::inherit(Mlt::Properties&)";
+      "Mlt::Properties::is_sequence()";
+      "Mlt::Properties::is_valid()";
+      "Mlt::Properties::listen(char const*, void*, void (*)(void*, ...))";
+      "Mlt::Properties::load(char const*)";
+      "Mlt::Properties::lock()";
+      "Mlt::Properties::mirror(Mlt::Properties&)";
+      "Mlt::Properties::parse(char const*)";
+      "Mlt::Properties::parse_yaml(char const*)";
+      "Mlt::Properties::pass_list(Mlt::Properties&, char const*)";
+      "Mlt::Properties::pass_property(Mlt::Properties&, char const*)";
+      "Mlt::Properties::pass_values(Mlt::Properties&, char const*)";
+      "Mlt::Properties::preset(char const*)";
+      "Mlt::Properties::~Properties()";
+      "Mlt::Properties::Properties()";
+      "Mlt::Properties::Properties(bool)";
+      "Mlt::Properties::Properties(char const*)";
+      "Mlt::Properties::Properties(Mlt::Properties&)";
+      "Mlt::Properties::Properties(mlt_properties_s*)";
+      "Mlt::Properties::Properties(void*)";
+      "Mlt::Properties::ref_count()";
+      "Mlt::Properties::rename(char const*, char const*)";
+      "Mlt::Properties::save(char const*)";
+      "Mlt::Properties::serialise_yaml()";
+      "Mlt::Properties::set(char const*, char const*)";
+      "Mlt::Properties::set(char const*, double)";
+      "Mlt::Properties::set(char const*, int)";
+      "Mlt::Properties::set(char const*, long)";
+      "Mlt::Properties::set(char const*, void*, int, void (*)(void*), char* (*)(void*, int))";
+      "Mlt::Properties::set_lcnumeric(char const*)";
+      "Mlt::Properties::setup_wait_for(char const*)";
+      "Mlt::Properties::unblock(void*)";
+      "Mlt::Properties::unlock()";
+      "Mlt::Properties::wait_for(char const*)";
+      "Mlt::Properties::wait_for(Mlt::Event*, bool)";
+      "typeinfo for Mlt::PushConsumer";
+      "typeinfo name for Mlt::PushConsumer";
+      "vtable for Mlt::PushConsumer";
+      "Mlt::PushConsumer::connect(Mlt::Service&)";
+      "Mlt::PushConsumer::construct(int)";
+      "Mlt::PushConsumer::drain()";
+      "Mlt::PushConsumer::~PushConsumer()";
+      "Mlt::PushConsumer::PushConsumer(Mlt::Profile&, char const*, char const*)";
+      "Mlt::PushConsumer::push(Mlt::Frame*)";
+      "Mlt::PushConsumer::push(Mlt::Frame&)";
+      "Mlt::PushConsumer::set_render(int, int, double)";
+      "Mlt::Repository::consumers() const";
+      "Mlt::Repository::create(Mlt::Profile&, mlt_service_type, char const*, void*)";
+      "Mlt::Repository::filters() const";
+      "Mlt::Repository::languages() const";
+      "Mlt::Repository::metadata(mlt_service_type, char const*) const";
+      "Mlt::Repository::presets()";
+      "Mlt::Repository::producers() const";
+      "Mlt::Repository::register_metadata(mlt_service_type, char const*, mlt_properties_s* (*)(mlt_service_type, char const*, void*), void*)";
+      "Mlt::Repository::register_service(mlt_service_type, char const*, void* (*)(mlt_profile_s*, mlt_service_type, char const*, void const*))";
+      "Mlt::Repository::~Repository()";
+      "Mlt::Repository::Repository(char const*)";
+      "Mlt::Repository::Repository(mlt_repository_s*)";
+      "Mlt::Repository::transitions() const";
+      "typeinfo for Mlt::Service";
+      "typeinfo name for Mlt::Service";
+      "vtable for Mlt::Service";
+      "Mlt::Service::attach(Mlt::Filter&)";
+      "Mlt::Service::connect_producer(Mlt::Service&, int)";
+      "Mlt::Service::consumer()";
+      "Mlt::Service::detach(Mlt::Filter&)";
+      "Mlt::Service::filter(int)";
+      "Mlt::Service::get_frame(int)";
+      "Mlt::Service::get_profile()";
+      "Mlt::Service::get_properties()";
+      "Mlt::Service::get_service()";
+      "Mlt::Service::lock()";
+      "Mlt::Service::producer()";
+      "Mlt::Service::profile()";
+      "Mlt::Service::~Service()";
+      "Mlt::Service::Service()";
+      "Mlt::Service::Service(Mlt::Service&)";
+      "Mlt::Service::Service(mlt_service_s*)";
+      "Mlt::Service::set_profile(Mlt::Profile&)";
+      "Mlt::Service::type()";
+      "Mlt::Service::unlock()";
+      "Mlt::Tokeniser::count()";
+      "Mlt::Tokeniser::get(int)";
+      "Mlt::Tokeniser::input()";
+      "Mlt::Tokeniser::parse(char*, char*)";
+      "Mlt::Tokeniser::~Tokeniser()";
+      "Mlt::Tokeniser::Tokeniser(char*, char*)";
+      "typeinfo for Mlt::Tractor";
+      "typeinfo name for Mlt::Tractor";
+      "vtable for Mlt::Tractor";
+      "Mlt::Tractor::connect(Mlt::Producer&)";
+      "Mlt::Tractor::count()";
+      "Mlt::Tractor::field()";
+      "Mlt::Tractor::get_producer()";
+      "Mlt::Tractor::get_tractor()";
+      "Mlt::Tractor::locate_cut(Mlt::Producer*, int&, int&)";
+      "Mlt::Tractor::multitrack()";
+      "Mlt::Tractor::plant_filter(Mlt::Filter*, int)";
+      "Mlt::Tractor::plant_filter(Mlt::Filter&, int)";
+      "Mlt::Tractor::plant_transition(Mlt::Transition*, int, int)";
+      "Mlt::Tractor::plant_transition(Mlt::Transition&, int, int)";
+      "Mlt::Tractor::refresh()";
+      "Mlt::Tractor::set_track(Mlt::Producer&, int)";
+      "Mlt::Tractor::track(int)";
+      "Mlt::Tractor::~Tractor()";
+      "Mlt::Tractor::Tractor()";
+      "Mlt::Tractor::Tractor(Mlt::Profile&, char*, char*)";
+      "Mlt::Tractor::Tractor(Mlt::Service&)";
+      "Mlt::Tractor::Tractor(Mlt::Tractor&)";
+      "Mlt::Tractor::Tractor(mlt_tractor_s*)";
+      "typeinfo for Mlt::Transition";
+      "typeinfo name for Mlt::Transition";
+      "vtable for Mlt::Transition";
+      "Mlt::Transition::connect(Mlt::Producer&, int, int)";
+      "Mlt::Transition::get_a_track()";
+      "Mlt::Transition::get_b_track()";
+      "Mlt::Transition::get_in()";
+      "Mlt::Transition::get_length()";
+      "Mlt::Transition::get_out()";
+      "Mlt::Transition::get_position(Mlt::Frame&)";
+      "Mlt::Transition::get_progress_delta(Mlt::Frame&)";
+      "Mlt::Transition::get_progress(Mlt::Frame&)";
+      "Mlt::Transition::get_service()";
+      "Mlt::Transition::get_transition()";
+      "Mlt::Transition::set_in_and_out(int, int)";
+      "Mlt::Transition::~Transition()";
+      "Mlt::Transition::Transition(Mlt::Profile&, char const*, char const*)";
+      "Mlt::Transition::Transition(Mlt::Service&)";
+      "Mlt::Transition::Transition(Mlt::Transition&)";
+      "Mlt::Transition::Transition(mlt_transition_s*)";
+    };
+
+  local: *;
+};