summaryrefslogtreecommitdiff
path: root/internal/media/ffmpeg/pool.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/media/ffmpeg/pool.go')
-rw-r--r--internal/media/ffmpeg/pool.go31
1 files changed, 25 insertions, 6 deletions
diff --git a/internal/media/ffmpeg/pool.go b/internal/media/ffmpeg/pool.go
index 9f6446be3..e63b10e69 100644
--- a/internal/media/ffmpeg/pool.go
+++ b/internal/media/ffmpeg/pool.go
@@ -34,14 +34,33 @@ type wasmInstancePool struct {
}
func (p *wasmInstancePool) Init(ctx context.Context, sz int) error {
+ // Initialize for first time
+ // to preload module into the
+ // wazero compilation cache.
+ inst, err := p.inst.New(ctx)
+ if err != nil {
+ return err
+ }
+
+ // Clamp to 1.
+ if sz <= 0 {
+ sz = 1
+ }
+
+ // Allocate new pool instance channel.
p.pool = make(chan *wasm.Instance, sz)
- for i := 0; i < sz; i++ {
- inst, err := p.inst.New(ctx)
- if err != nil {
- return err
- }
- p.pool <- inst
+
+ // Store only one
+ // open instance
+ // at init time.
+ p.pool <- inst
+
+ // Fill reminaing with closed
+ // instances for later opening.
+ for i := 0; i < sz-1; i++ {
+ p.pool <- new(wasm.Instance)
}
+
return nil
}