History log of /haiku/src/kits/media/AddOnManager.cpp
Revision Date Author Comments
# 303187e2 20-Jun-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert "Media Kit: use the B_WRITABLE flag in plugins"

This reverts hrev54422.

I'm not sure what I was trying to fix with this change. The way the
media kit is currently designed, the list of supported formats
(including for reading) comes only from writer plugins. This means it is
impossible to have a decode-only plugin currently. And the list is
called "fWriterFileFormats" but in fact is the only list used to
implement get_next_file_formats, so it should contain all formats.

This current setup works for the ffmpeg plugin, but it should be
cleaned.

This fixes Youtube playback. The problem was simply that we were not
reporting support for any of the Youtube video formats anymore.
Unfortunately, the app_server crashes when playing Youtube videos are
still there.

Change-Id: Ie5025cd48e2ab23b616bad49eec1401331ffb0ed
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4103
Reviewed-by: X512 <danger_mail@list.ru>
Reviewed-by: Panagiotis Vasilopoulos <hello@alwayslivid.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 10b294d8 12-Jul-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Media Kit: use the B_WRITABLE flag in plugins

The ffmpeg plugin reports some formats as read-only. But the media kit
included them in the list of writable formats anyway.


# 218a8c03 17-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

Revert the Codec Kit.

All of Barrett's individual reverts have been squashed into this
one commit, save a few actual bugfixes.

Change-Id: Ib0a7d0a841d3ac40b1fca7372c58b7f9229bd1f0


# b84955d4 23-Oct-2018 Barrett17 <b.vitruvio@gmail.com>

media: Remove debug.h, finalize MediaDebug.h

* Funny rust from 0 AD.


# 12ed45b6 18-May-2018 Murai Takashi <tmurai01@gmail.com>

Media kit: Suppress -Werror=class-memaccess

* Add media_format::Clear(), media_format::Unflatten().
* Replace memset() with media_format::Clear()
* Replace memcpy() with media_format::Unflatten()

Fix #14156

Change-Id: I38ebc2de4915b954a15b6f4f6b40d016506910e5


# 21cf69c7 16-May-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

AddOnManager::GetStreamers: Consider maxCount and outCount

* Fix a little issue when getting the plugin.


# 22c93142 14-Mar-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

MediaExtractor/PluginManager: Add plugin deletion when extractor die


# 3733e4b2 11-Mar-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

PluginManager/AddOnManager: Add streamers support code


# b1ccc058 11-Mar-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

AddOnManager: Initial support for streamer addons


# 2b480e44 05-Dec-2015 Dario Casalinuovo <b.vitruvio@gmail.com>

AddOnManager: Fix logic inversion


# 3bc039b9 03-Dec-2015 Dario Casalinuovo <b.vitruvio@gmail.com>

media_kit: Add encoding support facilities


# 62d30d9e 19-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

libmedia: Put AddOnManager into BPrivate::media namespace.

The AddOnManager was in the global namespace, clashing with application
classes with the same name.

The input_server has an AddOnManager of its own. When the
shortcut_catcher filter was loaded by said AddOnManager, it in turn
loaded libgame.so, which in turn loaded libmedia.so, where an
AddOnManager was created for the global AddOnManager instance in
libmedia.so. Unfortunately the wrong AddOnManager, the one from the
input_server, was created. This lead to two AddOnManagers being active
in the input_server which very well could be responsible for #11049
and #11280.

This was a regression since the move of the AddOnManager from the
media_server to libmedia.so in hrev47086. This also fits with the two
tickets.

I actually noticed the problem when debugging the shutdown process of
the input_server, where the destruction of the wrong AddOnManager
caused a deadlock with itself.


# d6ab05e7 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Whitespace cleanup only.


# a0a1f480 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

libmedia: Fix leaks of dirs from find_paths in AddOnManager.


# 72d47357 22-Oct-2014 Adrien Destugues <pulkomandy@gmail.com>

Register media add-ons on BMediaFormat::GetFormatFor().

* Fixes #11018.
* In this case the FormatManager format list is accessed without going
throught the AddOnManager, so we must tell the AddOnManager to register
the add-ons (as this is what populates the FormatManager format list).
* Remove now unneeded workaround in mp3_decoder_test.


# 9b1f41b9 12-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

AddOnManager: remove more annoying traces.


# 5ba7abf8 10-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

AddOnManager: remove useless traces

These were acceptable in media kit log, but are only annoying now that
the AddOnManager is ran in applications. Moreover, these get to stdout
and make some WebKit tests fail.


# 63851060 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Plugin loading: style fixes.

* Fix style issues pointed by stippi. Thanks!
* Rework the FormatManager instanciation to be thread safe.


# bf3b475c 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Urpdate AddOnManager and FormatManager for Media Kit

* These classes were moved from Media Server, making the use of ports
and messages to communicate with the app irrelevant.
* Split in a separate commit to help git keep track of moved files.

Fixes #4893.


# 2feaa37f 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

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.


# 62d30d9e49d587f54159a213a7e68ea47cb5e254 19-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

libmedia: Put AddOnManager into BPrivate::media namespace.

The AddOnManager was in the global namespace, clashing with application
classes with the same name.

The input_server has an AddOnManager of its own. When the
shortcut_catcher filter was loaded by said AddOnManager, it in turn
loaded libgame.so, which in turn loaded libmedia.so, where an
AddOnManager was created for the global AddOnManager instance in
libmedia.so. Unfortunately the wrong AddOnManager, the one from the
input_server, was created. This lead to two AddOnManagers being active
in the input_server which very well could be responsible for #11049
and #11280.

This was a regression since the move of the AddOnManager from the
media_server to libmedia.so in hrev47086. This also fits with the two
tickets.

I actually noticed the problem when debugging the shutdown process of
the input_server, where the destruction of the wrong AddOnManager
caused a deadlock with itself.


# d6ab05e72f4aa0517dda6b7d4a8311bd8af2973f 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

Whitespace cleanup only.


# a0a1f480de7113e1bceb417b723b58db0968d5a6 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

libmedia: Fix leaks of dirs from find_paths in AddOnManager.


# 72d47357123aea91f5f780710998bd996b1cc8ca 22-Oct-2014 Adrien Destugues <pulkomandy@gmail.com>

Register media add-ons on BMediaFormat::GetFormatFor().

* Fixes #11018.
* In this case the FormatManager format list is accessed without going
throught the AddOnManager, so we must tell the AddOnManager to register
the add-ons (as this is what populates the FormatManager format list).
* Remove now unneeded workaround in mp3_decoder_test.


# 9b1f41b9c1abfcc618a09256540e4c748b992a98 12-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

AddOnManager: remove more annoying traces.


# 5ba7abf8f2dea87f2dff60cf0b38a23625c9b8a1 10-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

AddOnManager: remove useless traces

These were acceptable in media kit log, but are only annoying now that
the AddOnManager is ran in applications. Moreover, these get to stdout
and make some WebKit tests fail.


# 638510600cfdafa0cd97ccf8189a1e3375b84818 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Plugin loading: style fixes.

* Fix style issues pointed by stippi. Thanks!
* Rework the FormatManager instanciation to be thread safe.


# bf3b475c3838eb2da1f4a97b214535698902380b 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Urpdate AddOnManager and FormatManager for Media Kit

* These classes were moved from Media Server, making the use of ports
and messages to communicate with the app irrelevant.
* Split in a separate commit to help git keep track of moved files.

Fixes #4893.


# 2feaa37f244d707251f7fe1184ce4f7d30251e2d 02-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

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.