/*
- Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
/** @file src/filter.h
- * @brief A class to describe one of FFmpeg's video or post-processing filters.
+ * @brief A class to describe one of FFmpeg's video or audio 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 or audio 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);
return _name;
}
- /** @return string for a FFmpeg video filter descriptor */
- std::string vf () const {
- return _vf;
+ /** @return string for a FFmpeg filter descriptor */
+ std::string ffmpeg () const {
+ return _ffmpeg;
}
-
- /** @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;
- /** string for a FFmpeg video filter descriptor */
- std::string _vf;
- /** string for a FFmpeg post-processing descriptor */
- std::string _pp;
+ std::string _category;
+ /** string for a FFmpeg filter descriptor */
+ std::string _ffmpeg;
/** all available filters */
static std::vector<Filter const *> _filters;