summaryrefslogtreecommitdiff
path: root/internal/media/ffmpeg/pool.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-07-17 15:26:33 +0000
committerLibravatar GitHub <noreply@github.com>2024-07-17 15:26:33 +0000
commit72ba5666a6ffd06ccdfd2db8dacc47de7f777a4c (patch)
treeac8c71af4f9a57c0233ffd30f8867d02616c46cc /internal/media/ffmpeg/pool.go
parent[feature] Allow users to set default interaction policies per status visibili... (diff)
downloadgotosocial-72ba5666a6ffd06ccdfd2db8dacc47de7f777a4c.tar.xz
[chore] media pipeline improvements (#3110)
* don't set emoji / media image paths on failed download, migrate FileType from string to integer * fix incorrect uses of util.PtrOr, fix returned frontend media * fix migration not setting arguments correctly in where clause * fix not providing default with not null column * whoops * ensure a default gets set for media attachment file type * remove the exclusive flag from writing files in disk storage * rename PtrOr -> PtrOrZero, and rename PtrValueOr -> PtrOrValue to match * slight wording changes * use singular / plural word forms (no parentheses), is better for screen readers * update testmodels with unknown media type to have unset file details, update attachment focus handling converting to frontend, update tests * store first instance in ffmpeg wasm pool, fill remaining with closed instances
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
}