6 #ifndef IFM3D_RTSP_DECODER_MANAGER_H
7 #define IFM3D_RTSP_DECODER_MANAGER_H
12 #include <unordered_map>
15 #include <ifm3d/rtsp/video_decoder.h>
61 bool available{
false};
63 bool supports_h264{
false};
96 ifm3d::rtsp::VideoCodec codec);
103 ifm3d::rtsp::VideoCodec codec)
const;
106 void select_decoders();
108 std::optional<std::string> _preferred_decoder;
112 std::vector<std::unique_ptr<ifm3d::rtsp::VideoDecoderFactory>> _factories;
116 std::unordered_map<ifm3d::rtsp::VideoCodec,
Lists and selects the video decoder implementations that are compiled into the RTSP module.
Definition: decoder_manager.h:41
static std::vector< DecoderInfo > DiscoverDecoders()
List the decoder implementations and report whether each is usable on the current system.
DecoderManager(std::optional< std::string > preferred_decoder={})
void LoadDecoders()
Resolve which decoder serves each codec, honouring preferred_decoder and falling back to the null dec...
std::string SelectedDecoderName(ifm3d::rtsp::VideoCodec codec) const
std::unique_ptr< ifm3d::rtsp::VideoDecoder > CreateDecoder(ifm3d::rtsp::VideoCodec codec)
Create a decoder for the given codec using the selected implementation.
Abstract decoder implementation (factory).
Definition: video_decoder.h:121
Describes a registered decoder implementation and whether it can be used on the current system.
Definition: decoder_manager.h:56