@@ -16,33 +16,20 @@ import (
1616// skipCeiling caps the total skip-marker count a clean generator run is
1717// allowed to record. It is an upper bound (`count > skipCeiling` trips), not
1818// an exact equality, so it acts as a regression ceiling rather than a brittle
19- // target.
19+ // target: it tolerates a handful of legitimate per-symbol skips a future header
20+ // bump might introduce while still catching wholesale degradation, such as an
21+ // allowlist regression that drops dozens of bindings.
2022//
21- // The 231 baseline is the post-Phase-1 count: the output-pointer table gained
22- // av_parse_time and av_get_output_timestamp, dropping two non-output-pointer
23- // skips from the former 233. An upper bound tolerates a handful of legitimate
24- // per-symbol skips a future header bump might introduce while still catching
25- // wholesale degradation (e.g. an allowlist regression that drops dozens of
26- // bindings) .
23+ // The current count is the residue of shapes the generator cannot safely emit:
24+ // int32 matrix-pointer functions, the AVExifEntry union field, and the
25+ // fixed-size struct-array fields in the DRM descriptors
26+ // (AVDRMFrameDescriptor.objects/layers, AVDRMLayerDescriptor.planes). Most are
27+ // covered by hand-written bindings; the skip marker records that the generator
28+ // declined them, not that the symbol is unavailable .
2729//
28- // Bumping this constant is a curation decision. A legitimate FFmpeg upgrade
29- // that introduces new unemittable symbols requires an intentional bump
30- // alongside the header update; do not raise it to silence a regression.
31- //
32- // Bumped 231 -> 239 for the Tier 1 header promotion (ac3_parser, adts_parser,
33- // avdct, dirac, dv_profile, vorbis_parser, md5): the newly bound headers carry
34- // a handful of per-symbol unemittable shapes. This is an intentional curation
35- // decision accompanying the allowlist expansion, not silencing a regression.
36- //
37- // Bumped 239 -> 245 for the Tier 2 header promotion (exif, hwcontext_drm): six
38- // new per-symbol unemittable shapes land as recorded skips — two int32
39- // matrix-pointer functions and the AVExifEntry union field from exif.h, plus
40- // three fixed-size struct-array fields in the DRM descriptors
41- // (AVDRMFrameDescriptor.objects/layers, AVDRMLayerDescriptor.planes). These are
42- // deferred to a later hand-written-binding commit; the curation policy accepts
43- // them as tracked skips, not a regression. (smpte_436m.h was evaluated for the
44- // same tier but dropped: its symbols are absent from the FFmpeg 8.1.1 static
45- // lib and would break the link.)
30+ // Bumping this constant is a curation decision. An FFmpeg upgrade that binds new
31+ // headers carrying unemittable shapes needs an intentional bump alongside the
32+ // header update; do not raise it to silence a regression.
4633const skipCeiling = 245
4734
4835func main () {
@@ -74,13 +61,9 @@ func enforceSkipCeiling(total, ceiling int) error {
7461
7562// run drives one end-to-end generator pass: parse the FFmpeg headers, apply
7663// the in-tree fixups, and emit the five `*.gen.go` files. It returns the skip
77- // collector populated during emission so callers (main, tests, the Task 3.4
78- // ceiling check ) can inspect every `skipped due to ...` decision the run made.
64+ // collector populated during emission so callers (main, the ceiling check,
65+ // tests ) can inspect every `skipped due to ...` decision the run made.
7966//
80- // The function is the single extraction point Task 3.1 added so the run path
81- // is testable without invoking the package binary. summaryOut is reserved for
82- // callers that want non-stderr toolchain logging; today only the verbose flag
83- // touches it via log.SetOutput.
8467// It exists as a separate function so the whole run path is testable without
8568// invoking the package binary.
8669func run (args []string ) (* SkipCollector , error ) {
@@ -184,8 +167,8 @@ func manualBindingBySymbol(c *SkipCollector) map[string]string {
184167}
185168
186169// sortedUniqueSymbols returns the unique skipped symbol names in lexical
187- // order. Used by the run summary and exposed for Task 3.4 to feed the same
188- // list into the ceiling diagnostic when the cap trips.
170+ // order, feeding both the run summary and the ceiling diagnostic when the cap
171+ // trips.
189172func sortedUniqueSymbols (c * SkipCollector ) []string {
190173 if c == nil {
191174 return nil
0 commit comments