Move media plug-in support to application side.

The media server tried to use node monitoring to dynamically add and
remove plug-ins, but it isn't that useful:
* When a plug-in is added, applications would have to query the media
server to get an up to date list of available formats. For example
MediaConvert populates its format menus on startup.
* When removing a plugin, if an app already had it loaded, there is not
much that can be done to keep it working.
* The list of plugins was not sorted by directories (user vs system
add-ons), so the directories were re-scanned to make sure user add-ons
were returned first, rendering the node monitoring less interesting.

Now, the format handling is done by each application. The node
monitoring is removed, instead the apps will scan the plugin directory
when first using the media kit classes. Restarting the application is
needed to update the media formats list.
This commit is contained in:
Adrien Destugues
2014-04-02 09:56:32 +02:00
parent 1c69e1c306
commit 2feaa37f24
10 changed files with 25 additions and 192 deletions
-65
View File
@@ -25,9 +25,6 @@ enum {
MEDIA_SERVER_CANCEL_NOTIFICATIONS,
MEDIA_SERVER_SEND_NOTIFICATIONS,
MEDIA_SERVER_GET_FORMATS,
MEDIA_SERVER_MAKE_FORMAT_FOR,
// add_system_beep_event()
MEDIA_SERVER_ADD_SYSTEM_BEEP_EVENT,
@@ -76,12 +73,6 @@ enum {
SERVER_SET_ITEM_AUDIO_GAIN,
SERVER_GET_FORMAT_FOR_DESCRIPTION,
SERVER_GET_DESCRIPTION_FOR_FORMAT,
SERVER_GET_READERS,
SERVER_GET_DECODER_FOR_FORMAT,
SERVER_GET_WRITER_FOR_FORMAT_FAMILY,
SERVER_GET_FILE_FORMAT_FOR_COOKIE,
SERVER_GET_CODEC_INFO_FOR_COOKIE,
SERVER_GET_ENCODER_FOR_CODEC_INFO,
SERVER_REGISTER_ADD_ON,
SERVER_UNREGISTER_ADD_ON,
SERVER_GET_ADD_ON_REF,
@@ -601,62 +592,6 @@ struct server_set_item_audio_gain_request : request_data {
struct server_set_item_audio_gain_reply : reply_data {
};
struct server_get_decoder_for_format_request : request_data {
media_format format;
};
struct server_get_decoder_for_format_reply : reply_data {
xfer_entry_ref ref;
// a ref to the decoder
};
struct server_get_encoder_for_codec_info_request : request_data {
int32 id;
};
struct server_get_encoder_for_codec_info_reply : reply_data {
xfer_entry_ref ref;
// a ref to the encoder
};
struct server_get_readers_request : request_data {
};
struct server_get_readers_reply : reply_data {
xfer_entry_ref ref[MAX_READERS];
// a list of refs to the reader
int32 count;
};
struct server_get_writer_request : request_data {
uint32 internal_id;
};
struct server_get_writer_reply : reply_data {
xfer_entry_ref ref;
// a ref to the writer
};
struct server_get_file_format_request : request_data {
int32 cookie;
};
struct server_get_file_format_reply : reply_data {
media_file_format file_format;
// the file format matching the cookie
};
struct server_get_codec_info_request : request_data {
int32 cookie;
};
struct server_get_codec_info_reply : reply_data {
media_codec_info codec_info;
media_format_family format_family;
media_format input_format;
media_format output_format;
// the codec info matching the cookie
};
struct server_get_dormant_flavor_info_request : request_data {
media_addon_id add_on_id;