Extension/Histogram.RoughDraft.Extension.ps1

<#
.SYNOPSIS
    Histogram Extension
.DESCRIPTION
    Compute and draw a color distribution histogram for the input video.
.LINK
    https://ffmpeg.org/ffmpeg-filters.html#histogram
#>

[Management.Automation.Cmdlet("Edit","Media")]
[Management.Automation.Cmdlet("Show","Media")]
param(
# If set, will display a video histogram
[Parameter(Mandatory)]
[switch]
$Histogram,

# Set height of level. Default value is 200. Allowed range is [50, 2048].
[ValidateRange(50,2048)]
[int]
$HistogramLevelHeight,

# Set height of color scale. Default value is 12. Allowed range is [0, 40].
[ValidateRange(0,40)]
[int]
$HistogramScaleHeight,

<#
Set display mode. It accepts the following values:

'stack'
Per color component graphs are placed below each other.

'parade'
Per color component graphs are placed side by side.

'overlay'
Presents information identical to that in the parade, except that the graphs representing color components are superimposed directly over one another.
#>

[ValidateSet('Stack','Parade','Overlay')]
[string]
$HistogramDisplayMode,

# Set mode. Can be either linear, or logarithmic. Default is linear.
[Alias('HistogramLevelsMode')]
[ValidateSet('linear','logarithmic')]
[string]
$HistogramLevelMode,

# Set what color components to display. Default is 7.
[Alias('HistogramComponents')]
[int]
$HistogramComponent,

# Set foreground opacity. Default is 0.7.
[ValidateRange(0,1)]
[float]
$HistogramForegroundOpacity,

# Set background opacity. Default is 0.5.
[ValidateRange(0,1)]
[float]
$HistogramBackgroundOpacity,

[ValidateSet('whiteonblack','blackonwhite','whiteongray','blackongray','coloronblack','coloronwhite','colorongray','blackoncolor','whiteoncolor','grayoncolor')]
[string]
$HistogramColorMode
)

$filterArgs  = @(
    if ($HistogramLevelHeight) {"level_height=$histogramLevelHeight"}
    if ($HistogramScaleHeight) {"scale_height=$HistogramScaleHeight"}
    if ($HistogramLevelMode) {"levels_mode=$($HistogramLevelMode.ToLower())"}
    if ($HistogramDisplayMode) {"display_mode=$($HistogramDisplayMode.ToLower())"}
    if ($HistogramComponent) {"components=$histogramComponent"}
    if ($HistogramForegroundOpacity) {"fgopacity=$HistogramForegroundOpacity"}
    if ($HistogramBackgroundOpacity) {"bgopacity=$HistogramBackgroundOpacity"}
    if ($HistogramColorMode) {"colors_mode=$histogramColorMode"}
    
 ) -join ':'
"-vf"
"histogram=$filterArgs" -replace '=$'