* @brief A class to describe one of FFmpeg's video or post-processing filters.
*/
-#ifndef DVDOMATIC_FILTER_H
-#define DVDOMATIC_FILTER_H
+#ifndef DCPOMATIC_FILTER_H
+#define DCPOMATIC_FILTER_H
+#include <boost/utility.hpp>
#include <string>
#include <vector>
/** @class Filter
- * @brief A class to describe one of FFmpeg's video or post-processing filters.
+ * @brief A class to describe one of FFmpeg's video filters.
+ *
+ * We don't support FFmpeg's post-processing filters here as they cannot cope with greater than
+ * 8bpp. FFmpeg quantizes e.g. yuv422p10le down to yuv422p before running such filters, which
+ * we don't really want to do.
*/
-class Filter
+class Filter : public boost::noncopyable
{
public:
Filter (std::string, std::string, std::string, std::string);
std::string vf () const {
return _vf;
}
-
- /** @return string for a FFmpeg post-processing descriptor */
- std::string pp () const {
- return _pp;
+
+ std::string category () const {
+ return _category;
}
-
+
static std::vector<Filter const *> all ();
static Filter const * from_id (std::string);
static void setup_filters ();
- static std::pair<std::string, std::string> ffmpeg_strings (std::vector<Filter const *> const &);
+ static std::string ffmpeg_string (std::vector<Filter const *> const &);
private:
std::string _id;
/** user-visible name */
std::string _name;
+ std::string _category;
/** string for a FFmpeg video filter descriptor */
std::string _vf;
- /** string for a FFmpeg post-processing descriptor */
- std::string _pp;
/** all available filters */
static std::vector<Filter const *> _filters;
+ static void maybe_add (std::string, std::string, std::string, std::string);
};
#endif