Extension/AmplifyPixel.RoughDraft.Extension.ps1

<#
.Synopsis
    AmplifyPixel extension
.Description
    Amplify differences between current pixel and pixels of adjacent frames in same pixel location.
.Link
    https://ffmpeg.org/ffmpeg-filters.html#amplify

#>


[Runtime.CompilerServices.Extension()] # It's an extension
[Management.Automation.Cmdlet("Edit","Media")] # that extends Edit-Media and Show-Media
[Management.Automation.Cmdlet("Show","Media")]
[ComponentModel.Inheritance("Inherited")] # that is inherited (this is the default).
param(
# If set, will amplify the differences between current pixel and pixels of adjacent frames in same pixel location.
[Parameter(Mandatory)]
[switch]
$AmplifyPixel,

# Set frame radius. Default is 2. Allowed range is from 1 to 63. For example radius of 3 will instruct filter to calculate average of 7 frames.
[ValidateRange(1,63)]
[int]
$AmplifyPixelRadius,

# Set factor to amplify difference. Default is 2
[ValidateRange(0,65535)]
[int]
$AmplifyPixelFactor,

# Set threshold for difference amplification.
# Any difference greater or equal to this value will not alter source pixel.
# Default is 10.
# Allowed range is from 0 to 65535.
[ValidateRange(0,65535)]
[int]
$AmplifyPixelThreshold,

# Set tolerance for difference amplification.
# Any difference lower to this value will not alter source pixel.
# Default is 0. Allowed range is from 0 to 65535.
[ValidateRange(0,65535)]
[int]
$AmplifyPixelTolerance,

# Set lower limit for changing source pixel.
# Default is 65535.
# Allowed range is from 0 to 65535.
# This option controls maximum possible value that will decrease source pixel value
[ValidateRange(0,65535)]
[int]
$AmplifyPixelLow,

# Set high limit for changing source pixel.
# Default is 65535.
# Allowed range is from 0 to 65535.
# This option controls maximum possible value that will decrease source pixel value
[ValidateRange(0,65535)]
[int]
$AmplifyPixelHigh,

# Set which planes to filter. Default is all. Allowed range is from 0 to 15.
[string]
$AmplifyPixelPlanes
)

$filterArgs = @(
    if ($AmplifyPixelRadius) {
        "radius=$AmplifyPixelRadius"
    }
    if ($AmplifyPixelPlanes) {
        "planes=$AmplifyPixelPlanes"
    }
    if ($AmplifyPixelFactor) {
        "factor=$AmplifyPixelFactor"
    }
    if ($AmplifyPixelThreshold) {
        "thresold=$AmplifyPixelThreshold"
    }
    if ($AmplifyPixelTolerance) {
        "tolerance=$AmplifyPixelTolerance"
    }
    if ($AmplifyPixelLow) {
        "low=$AmplifyPixelLow"
    }
    if ($AmplifyPixelHigh) {
        "high=$AmplifyPixelLow"
    }
) -join ':'
'-vf'
"`"amplify=$filterArgs`""