|
|
|
|
|
by mgdlbp
1185 days ago
|
|
Doh! there's a better filter for this: photosensitivity. It detects local brightness changes that sum to 0, unlike deflicker and apparently the Apple algorithm. drawgraph can be bodged to convert metadata to frames, and signalstats the opposite. This enables silly things like a self-contained filtergraph mimicking Apple's demo with plots and usable in mpv. frames=5
sensitivity=1.5
dim_range=2
dim_intercept=-0.4
smoothing=10
smoothtype=am
decay=0.9
min_contrast=0.0
min_brightness=0.0
min_saturation=0.0
ffplay -vf "split[original], crop=640:360:0:0,
split=5[i1][i2][i3][i4][i5];
[i1]photosensitivity=$frames :$sensitivity,
drawgraph='bg=black@0 :r=60 :s=1x1 :m1=lavfi.photosensitivity.factor
:fg1=0x010101*round(0xff*clip(VAL*$dim_range+$dim_intercept,0,1))',
split[sensedat], deflicker=$smoothing :$smoothtype,
negate, lagfun=$decay, negate, split[mit1][mit2];
[mit1][i2]scale2ref[mask][i2]; [i2][mask]alphamerge[m];
[mit2]signalstats[mitdat];
[i3]eq=$min_contrast :$min_brightness :${min_saturation}[a];
[a][m]overlay, split[output1][output2];
[sensedat]drawgraph=lavfi.photosensitivity.badness :0xffff0000
:bg=white :r=60 :slide=scroll :size=512x256 :min=0 :max=7[bad];
[bad][i5]scale2ref[badout][reuse];
[badout]drawtext=fontcolor=2222dd:text='frame %{metadata\:lavfi.photosensitivity.frame-badness}'[badout];
[badout]drawtext=fontcolor=0000ff:y=1.2*lh:text='badness %{metadata\:lavfi.photosensitivity.badness}'[badout];
[badout]drawtext=fontcolor=777700:y=2.4*lh:text='factor %{metadata\:lavfi.photosensitivity.factor}'[badout];
[mitdat]drawgraph=lavfi.signalstats.YAVG :0xff00ccdd
:bg=00000000 :r=60 :slide=scroll :size=512x256 :min=0 :max=255, vflip[factor];
[factor][badout]scale2ref[factorout][badout];
[factorout]drawtext=fontcolor=999900:y=3.6*lh:text='smoothed %{metadata\:lavfi.signalstats.YAVG}'[factorout];
[badout][factorout]overlay[rplot];
[i4]signalstats, drawgraph=lavfi.signalstats.YAVG :0xffff0000
:bg=white :r=60 :slide=scroll :size=512x256 :min=0 :max=255[lum];
[lum][reuse]scale2ref[lumout][reuse];
[lumout]drawtext=fontcolor=ff0000:text='%{pts\:hms} %{pts} %{eif\:n\:d\:5}'[lumout];
[lumout]drawtext=fontcolor=0000ff:y=1.2*lh:text='avg luma %{metadata\:lavfi.signalstats.YAVG}'[lumout];
[output1]signalstats, drawgraph=lavfi.signalstats.YAVG :0xff00ccdd
:bg=00000000 :r=60 :slide=scroll :size=512x256 :min=0 :max=255[mlum];
[mlum][lumout]scale2ref[mlumout][lumout];
[mlumout]drawtext=fontcolor=999900:y=2.4*lh:text='mitigated %{metadata\:lavfi.signalstats.YAVG}'[mlumout];
[lumout][mlumout]overlay[lplot];
[reuse][output2][rplot][lplot]xstack=4 :0_0|w0+30_0|w0+30_h0+20|0_h0+20, [original]hstack" \
'https://web.archive.org/web/0id_/https://developer.apple.com/accessibility/downloads/video-flashing-reduction-fig12.mp4'
|
|