decoder/plugin: add method protocols()
Similar to commit 4e2a551f30 but for
decoder plugins. This is tailored for the FFmpeg decoder plugin which
implements some protocols (e.g. RTSP) as demuxer plugin.
This commit is contained in:
16
src/ls.cxx
16
src/ls.cxx
@@ -21,6 +21,8 @@
|
||||
#include "ls.hxx"
|
||||
#include "input/Registry.hxx"
|
||||
#include "input/InputPlugin.hxx"
|
||||
#include "decoder/DecoderList.hxx"
|
||||
#include "decoder/DecoderPlugin.hxx"
|
||||
#include "client/Response.hxx"
|
||||
#include "util/UriExtract.hxx"
|
||||
|
||||
@@ -39,6 +41,11 @@ void print_supported_uri_schemes_to_fp(FILE *fp)
|
||||
protocols.emplace(uri);
|
||||
});
|
||||
|
||||
decoder_plugins_for_each([&protocols](const auto &plugin){
|
||||
if (plugin.protocols != nullptr)
|
||||
protocols.merge(plugin.protocols());
|
||||
});
|
||||
|
||||
for (const auto& protocol : protocols) {
|
||||
fprintf(fp, " %s", protocol.c_str());
|
||||
}
|
||||
@@ -54,6 +61,11 @@ print_supported_uri_schemes(Response &r)
|
||||
protocols.emplace(uri);
|
||||
});
|
||||
|
||||
decoder_plugins_for_each_enabled([&protocols](const auto &plugin){
|
||||
if (plugin.protocols != nullptr)
|
||||
protocols.merge(plugin.protocols());
|
||||
});
|
||||
|
||||
for (const auto& protocol : protocols) {
|
||||
r.Format("handler: %s\n", protocol.c_str());
|
||||
}
|
||||
@@ -68,5 +80,7 @@ uri_supported_scheme(const char *uri) noexcept
|
||||
if (plugin->SupportsUri(uri))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
return decoder_plugins_try([uri](const auto &plugin){
|
||||
return plugin.SupportsUri(uri);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user