Public/Timestamps/Set-SubtitleDuration.ps1

function Set-SubtitleDuration {
    <#
    .SYNOPSIS
        Clamps or extends the display duration of each entry to a specified min/max range.
    .DESCRIPTION
        Use -Minimum to ensure entries display for at least N milliseconds.
        Use -Maximum to cap long entries.
    .PARAMETER InputObject
        A SubtitleFile object.
    .PARAMETER Minimum
        Minimum display duration as a TimeSpan.
    .PARAMETER Maximum
        Maximum display duration as a TimeSpan.
    .EXAMPLE
        Import-SubtitleFile 'movie.srt' | Set-SubtitleDuration -Minimum (New-TimeSpan -Seconds 1)
    #>

    [CmdletBinding()]
    [OutputType('SubtitleFile')]
    param(
        [Parameter(Mandatory, ValueFromPipeline)]
        [SubtitleFile] $InputObject,

        [TimeSpan] $Minimum,

        [TimeSpan] $Maximum
    )

    process {
        foreach ($entry in $InputObject.Entries) {
            $duration = $entry.End - $entry.Start

            if ($Minimum -and $duration -lt $Minimum) {
                $entry.End = $entry.Start + $Minimum
            }

            if ($Maximum -and $duration -gt $Maximum) {
                $entry.End = $entry.Start + $Maximum
            }
        }

        return $InputObject
    }
}