alpha patterns

This commit is contained in:
Dmitry Sergeev
2026-09-18 10:11:07 +03:00
parent 9b194b5591
commit dea2e6a59f
12 changed files with 643 additions and 3 deletions
+66
View File
@@ -5,6 +5,7 @@ import (
"strings"
"testing"
"mxl-pattern-generator/internal/flowdef"
"mxl-pattern-generator/internal/generator"
)
@@ -110,3 +111,68 @@ func TestSelectFrameGenerator(t *testing.T) {
})
}
}
func TestWrapAlphaGenerator(t *testing.T) {
const id = "5fbec3b1-1b0f-417d-9059-8b94a47197ed"
rate := flowdef.Rational{Numerator: 25, Denominator: 1}
tests := []struct {
name string
alpha bool
wantAlpha bool
}{
{name: "v210"},
{name: "v210a", alpha: true, wantAlpha: true},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
var (
definition flowdef.Video
err error
)
if tc.alpha {
definition, err = flowdef.NewV210AVideo(id, 100, 200, rate)
} else {
definition, err = flowdef.NewV210Video(id, 100, 200, rate)
}
if err != nil {
t.Fatalf("create flow definition: %v", err)
}
cfg := Config{
Definition: definition,
Pattern: "gray-ramp",
Backend: BackendCPU,
}
fill := &stubFrameGenerator{}
gen, err := wrapAlphaGenerator(cfg, fill)
if err != nil {
t.Fatalf("wrapAlphaGenerator: %v", err)
}
defer gen.Close()
_, gotAlpha := gen.(*generator.V210AGenerator)
if gotAlpha != tc.wantAlpha {
t.Errorf("v210a wrapper present = %v, want %v", gotAlpha, tc.wantAlpha)
}
if !tc.wantAlpha && gen != fill {
t.Error("v210 generator was unexpectedly replaced")
}
})
}
}
func TestConfigHasAlpha(t *testing.T) {
for _, tc := range []struct {
mediaType string
want bool
}{
{mediaType: flowdef.MediaTypeV210},
{mediaType: flowdef.MediaTypeV210A, want: true},
{mediaType: "video/unknown"},
} {
cfg := Config{Definition: flowdef.Video{Common: flowdef.Common{MediaType: tc.mediaType}}}
if got := cfg.HasAlpha(); got != tc.want {
t.Errorf("HasAlpha() for %q = %v, want %v", tc.mediaType, got, tc.want)
}
}
}