only enable mask filter and properly check the input format

This commit is contained in:
kageru 2019-06-02 14:43:53 +02:00
parent a18a2ec6e2
commit b4eb5d8399
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2
2 changed files with 16 additions and 12 deletions

View File

@ -17,7 +17,8 @@ use vapoursynth::frame::{FrameRef, FrameRefMut};
use vapoursynth::map::Map; use vapoursynth::map::Map;
use vapoursynth::node::Node; use vapoursynth::node::Node;
use vapoursynth::plugins::{Filter, FilterArgument, FrameContext, Metadata}; use vapoursynth::plugins::{Filter, FilterArgument, FrameContext, Metadata};
use vapoursynth::video_info::VideoInfo; use vapoursynth::video_info::{VideoInfo, Property};
use vapoursynth::format::SampleType;
pub const PLUGIN_NAME: &str = "adaptivegrain"; pub const PLUGIN_NAME: &str = "adaptivegrain";
pub const PLUGIN_IDENTIFIER: &str = "moe.kageru.adaptivegrain"; pub const PLUGIN_IDENTIFIER: &str = "moe.kageru.adaptivegrain";
@ -76,7 +77,7 @@ make_filter_function! {
_api: API, _api: API,
_core: CoreRef<'core>, _core: CoreRef<'core>,
clip: Node<'core>, clip: Node<'core>,
) -> Result<Option<Box<Filter<'core> + 'core>>, Error> { ) -> Result<Option<Box<dyn Filter<'core> + 'core>>, Error> {
Ok(Some(Box::new(AdaptiveGrain { source: clip }))) Ok(Some(Box::new(AdaptiveGrain { source: clip })))
} }
} }
@ -88,7 +89,7 @@ make_filter_function! {
_api: API, _api: API,
_core: CoreRef<'core>, _core: CoreRef<'core>,
clip: Node<'core>, clip: Node<'core>,
) -> Result<Option<Box<Filter<'core> + 'core>>, Error> { ) -> Result<Option<Box<dyn Filter<'core> + 'core>>, Error> {
Ok(Some(Box::new(Grain { source: clip }))) Ok(Some(Box::new(Grain { source: clip })))
} }
} }
@ -101,15 +102,20 @@ make_filter_function! {
_core: CoreRef<'core>, _core: CoreRef<'core>,
clip: Node<'core>, clip: Node<'core>,
luma_scaling: Option<f64> luma_scaling: Option<f64>
) -> Result<Option<Box<Filter<'core> + 'core>>, Error> { ) -> Result<Option<Box<dyn Filter<'core> + 'core>>, Error> {
let luma_scaling = match luma_scaling { let luma_scaling = match luma_scaling {
Some(i) => i as f32, Some(i) => i as f32,
None => 10.0 None => 10.0
}; };
Ok(Some(Box::new(Mask { if let Property::Constant(format) = clip.info().format {
source: clip, if format.bits_per_sample() == 32 && format.sample_type() == SampleType::Float {
luma_scaling return Ok(Some(Box::new(Mask {
}))) source: clip,
luma_scaling
})));
}
}
bail!("Currently, only constant 32bit float input is supported" )
} }
} }
@ -121,8 +127,8 @@ export_vapoursynth_plugin! {
read_only: false, read_only: false,
}, },
[ [
AdaptiveGrainFunction::new(), //AdaptiveGrainFunction::new(),
GrainFunction::new(), //GrainFunction::new(),
MaskFunction::new() MaskFunction::new()
] ]
} }

View File

@ -1,6 +1,4 @@
use failure::Error; use failure::Error;
use faster::into_iters::*;
use faster::iters::*;
use super::PLUGIN_NAME; use super::PLUGIN_NAME;
use vapoursynth::api::API; use vapoursynth::api::API;
use vapoursynth::core::CoreRef; use vapoursynth::core::CoreRef;