diff --git a/docs/custom_filters.md b/docs/custom_filters.md index 201ddd35..d0129d00 100644 --- a/docs/custom_filters.md +++ b/docs/custom_filters.md @@ -1,6 +1,7 @@ ## Custom filter -ffplayout allows it to define a custom filter string. For that is the parameter **custom_filter** in the **ffplayout.yml** config file. +ffplayout allows it to define a custom filter string. For that is the parameter **custom_filter** in the **ffplayout.yml** config file. The playlist can also contain a **custom_filter** paramter for every clip, with the same usage. + The filter outputs should end with `[c_v_out]` for video filter, and `[c_a_out]` for audio filter. The filters will be apply on every clip and after the filters which unify the clips. It is possible to apply only video or audio filters, or both. For a better understanding here some examples: diff --git a/lib/src/filter/mod.rs b/lib/src/filter/mod.rs index b692c12e..03231508 100644 --- a/lib/src/filter/mod.rs +++ b/lib/src/filter/mod.rs @@ -382,6 +382,7 @@ pub fn filter_chains( realtime_filter(node, &mut filters, config, Audio); custom(&config.processing.custom_filter, &mut filters); + custom(&node.custom_filter, &mut filters); let mut filter_cmd = vec![]; let mut filter_str: String = String::new(); diff --git a/lib/src/utils/json_serializer.rs b/lib/src/utils/json_serializer.rs index 390f2a41..031b194e 100644 --- a/lib/src/utils/json_serializer.rs +++ b/lib/src/utils/json_serializer.rs @@ -116,6 +116,7 @@ fn loop_playlist( last_ad: Some(false), next_ad: Some(false), filter: Some(vec![]), + custom_filter: String::new(), }; if begin < start_sec + length { diff --git a/lib/src/utils/mod.rs b/lib/src/utils/mod.rs index 8e174855..bb65102e 100644 --- a/lib/src/utils/mod.rs +++ b/lib/src/utils/mod.rs @@ -69,6 +69,9 @@ pub struct Media { #[serde(skip_serializing, skip_deserializing)] pub filter: Option>, + #[serde(default)] + pub custom_filter: String, + #[serde(skip_serializing, skip_deserializing)] pub probe: Option, @@ -113,6 +116,7 @@ impl Media { audio: String::new(), cmd: Some(vec!["-i".to_string(), src]), filter: Some(vec![]), + custom_filter: String::new(), probe, last_ad: Some(false), next_ad: Some(false),