docs: library comments say what the scanner and resolver do, not how they came to be (#6277)
release / govulncheck (push) Successful in 20s
release / web (push) Successful in 1m20s
release / go (push) Successful in 1m37s
release / integration (push) Successful in 5m15s
release / android (push) Successful in 5m26s
release / Build signed APK (releases and dev) (push) Successful in 5m45s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
release / govulncheck (push) Successful in 20s
release / web (push) Successful in 1m20s
release / go (push) Successful in 1m37s
release / integration (push) Successful in 5m15s
release / android (push) Successful in 5m26s
release / Build signed APK (releases and dev) (push) Successful in 5m45s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
Rewrites the internal/library comment blocks to rule 32. Task, milestone, decision and rule ids are gone; the incidents behind them are restated as the constraint they left (why a file is deleted before its row, why the missing mark is a mark, why duplicates block on duration). Counts and album names from one library are dropped from production comments; test comments keep the names their fixtures use. The tagReadVersion log keeps each version's before and after, without the measurements. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ import (
|
||||
syncpkg "git.fabledsword.com/bvandeusen/minstrel/internal/sync"
|
||||
)
|
||||
|
||||
// Loudness analysis (M464 #4995).
|
||||
// Loudness analysis.
|
||||
//
|
||||
// Every track is measured with ffmpeg's EBU R128 filter, which reports the
|
||||
// ITU-R BS.1770 values loudness normalization works from:
|
||||
@@ -39,7 +39,7 @@ import (
|
||||
// 100 ms). Those are kept as a histogram, because an album's loudness is the
|
||||
// gated loudness of every block on the album, not an average of its tracks'
|
||||
// values. With the histograms stored, album loudness is exact and needs no
|
||||
// second decode (#4996).
|
||||
// second decode.
|
||||
|
||||
// loudnessVersion stamps how a track_loudness row was measured. Bump it when
|
||||
// the measurement changes (the filter's options, the histogram's bins) and the
|
||||
@@ -136,7 +136,7 @@ func (h blockHistogram) empty() bool { return len(h.counts) == 0 }
|
||||
// loudness of the blocks that passed it. ok is false when nothing passes.
|
||||
//
|
||||
// The same function measures an album, over the sum of its tracks'
|
||||
// histograms (#4996).
|
||||
// histograms.
|
||||
func (h blockHistogram) gatedLoudness() (lufs float64, ok bool) {
|
||||
energy := func(i int) float64 {
|
||||
l := loudnessHistFloor + float64(int(h.start)+i)/loudnessHistPerLU
|
||||
@@ -354,7 +354,7 @@ const (
|
||||
// value from an older method is a better gain than none until it is redone.
|
||||
//
|
||||
// A stored measurement is logged to the sync feed as a track upsert, so
|
||||
// clients that cache the library (Android) pick up the new gain (#4997). If
|
||||
// clients that cache the library (Android) pick up the new gain. If
|
||||
// the log fails nothing is stored, and the backfill tries the track again.
|
||||
func storeLoudness(
|
||||
ctx context.Context, db dbq.DBTX, logger *slog.Logger,
|
||||
@@ -394,7 +394,7 @@ func storeLoudness(
|
||||
}
|
||||
}
|
||||
}
|
||||
// Logged before the write, as reconcile does (#2704): a log that then
|
||||
// Logged before the write, as reconcile does: a log that then
|
||||
// finds the write failed costs clients one wasted re-read, but a write
|
||||
// that lands with no log is never retried, since the track is settled, and
|
||||
// clients would never learn its gain.
|
||||
|
||||
Reference in New Issue
Block a user