#ifndef LIBHEIF_HEIF_PLUGIN_REGISTRY_H
#define LIBHEIF_HEIF_PLUGIN_REGISTRY_H
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
#include "error.h"
#include "heif.h"
#include "heif_plugin.h"
struct heif_encoder_descriptor
{
const struct heif_encoder_plugin* plugin;
const char* get_name() const { return plugin->get_plugin_name(); }
enum heif_compression_format get_compression_format() const { return plugin->compression_format; }
};
namespace heif {
extern std::set<const struct heif_decoder_plugin*> s_decoder_plugins;
void register_decoder(const heif_decoder_plugin* decoder_plugin);
void register_encoder(const heif_encoder_plugin* encoder_plugin);
const struct heif_decoder_plugin* get_decoder(enum heif_compression_format type);
const struct heif_encoder_plugin* get_encoder(enum heif_compression_format type);
std::vector<const struct heif_encoder_descriptor*>
get_filtered_encoder_descriptors(enum heif_compression_format,
const char* name);
}
#endif