-
- _filters.push_back (new Filter ("pphb", "Horizontal deblocking filter", "", "hb"));
- _filters.push_back (new Filter ("ppvb", "Vertical deblocking filter", "", "vb"));
- _filters.push_back (new Filter ("ppha", "Horizontal deblocking filter A", "", "ha"));
- _filters.push_back (new Filter ("ppva", "Vertical deblocking filter A", "", "va"));
- _filters.push_back (new Filter ("pph1", "Experimental horizontal deblocking filter 1", "", "h1"));
- _filters.push_back (new Filter ("pphv", "Experimental vertical deblocking filter 1", "", "v1"));
- _filters.push_back (new Filter ("ppdr", "Deringing filter", "", "dr"));
- _filters.push_back (new Filter ("pplb", "Linear blend deinterlacer", "", "lb"));
- _filters.push_back (new Filter ("ppli", "Linear interpolating deinterlacer", "", "li"));
- _filters.push_back (new Filter ("ppci", "Cubic interpolating deinterlacer", "", "ci"));
- _filters.push_back (new Filter ("ppmd", "Median deinterlacer", "", "md"));
- _filters.push_back (new Filter ("ppfd", "FFMPEG deinterlacer", "", "fd"));
- _filters.push_back (new Filter ("ppl5", "FIR low-pass deinterlacer", "", "l5"));
- _filters.push_back (new Filter ("mcdeint", "Motion compensating deinterlacer", "mcdeint", ""));
- _filters.push_back (new Filter ("kerndeint", "Kernel deinterlacer", "kerndeint", ""));
- _filters.push_back (new Filter ("pptn", "Temporal noise reducer", "", "tn"));
- _filters.push_back (new Filter ("ppfq", "Force quantizer", "", "fq"));
- _filters.push_back (new Filter ("gradfun", "Gradient debander", "gradfun", ""));
- _filters.push_back (new Filter ("unsharp", "Unsharp mask and Gaussian blur", "unsharp", ""));
- _filters.push_back (new Filter ("denoise3d", "3D denoiser", "denoise3d", ""));
- _filters.push_back (new Filter ("hqdn3d", "High quality 3D denoiser", "hqdn3d", ""));
- _filters.push_back (new Filter ("telecine", "Telecine filter", "telecine", ""));
- _filters.push_back (new Filter ("ow", "Overcomplete wavelet denoiser", "mp=ow", ""));
+
+ maybe_add (N_("vflip"), _("Vertical flip"), _("Orientation"), N_("vflip"));
+ maybe_add (N_("hflip"), _("Horizontal flip"), _("Orientation"), N_("hflip"));
+ maybe_add (N_("90clock"), _("Rotate 90 degrees clockwise"), _("Orientation"), N_("transpose=dir=clock"));
+ maybe_add (N_("90anticlock"), _("Rotate 90 degrees anti-clockwise"), _("Orientation"), N_("transpose=dir=cclock"));
+ maybe_add (N_("mcdeint"), _("Motion compensating deinterlacer"), _("De-interlacing"), N_("mcdeint"));
+ maybe_add (N_("kerndeint"), _("Kernel deinterlacer"), _("De-interlacing"), N_("kerndeint"));
+ maybe_add (N_("yadif"), _("Yet Another Deinterlacing Filter"), _("De-interlacing"), N_("yadif"));
+ maybe_add (N_("bwdif"), _("Bob Weaver Deinterlacing Filter"), _("De-interlacing"), N_("bwdif"));
+ maybe_add (N_("weave"), _("Weave filter"), _("De-interlacing"), N_("weave"));
+ maybe_add (N_("gradfun"), _("Gradient debander"), _("Misc"), N_("gradfun"));
+ maybe_add (N_("unsharp"), _("Unsharp mask and Gaussian blur"), _("Misc"), N_("unsharp"));
+ maybe_add (N_("denoise3d"), _("3D denoiser"), _("Noise reduction"), N_("denoise3d"));
+ maybe_add (N_("hqdn3d"), _("High quality 3D denoiser"), _("Noise reduction"), N_("hqdn3d"));
+ maybe_add (N_("telecine"), _("Telecine filter"), _("Misc"), N_("telecine"));
+ maybe_add (N_("ow"), _("Overcomplete wavelet denoiser"), _("Noise reduction"), N_("mp=ow"));
+}
+
+
+void
+Filter::maybe_add (string i, string n, string c, string f)
+{
+ string check_name = f;
+ size_t end = check_name.find("=");
+ if (end != string::npos) {
+ check_name = check_name.substr (0, end);
+ }
+
+ if (avfilter_get_by_name(check_name.c_str())) {
+ _filters.push_back (Filter(i, n, c, f));
+ }