mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore] pull in go-ffmpreg v0.4.1 (#3485)
* pull in go-ffmpreg v0.4.1 * bring back GTS_WAZERO_COMPILATION_CACHE
This commit is contained in:
67
vendor/codeberg.org/gruf/go-ffmpreg/wasm/runtime.go
generated
vendored
Normal file
67
vendor/codeberg.org/gruf/go-ffmpreg/wasm/runtime.go
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
package wasm
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/tetratelabs/wazero"
|
||||
"github.com/tetratelabs/wazero/api"
|
||||
"github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1"
|
||||
)
|
||||
|
||||
// CoreFeatures are the WebAssembly Core specification
|
||||
// features our embedded binaries are compiled with.
|
||||
const CoreFeatures = api.CoreFeatureSIMD |
|
||||
api.CoreFeatureBulkMemoryOperations |
|
||||
api.CoreFeatureNonTrappingFloatToIntConversion |
|
||||
api.CoreFeatureMutableGlobal |
|
||||
api.CoreFeatureReferenceTypes |
|
||||
api.CoreFeatureSignExtensionOps
|
||||
|
||||
// NewRuntime returns a new WebAssembly wazero.Runtime compatible with go-ffmpreg.
|
||||
func NewRuntime(ctx context.Context, cfg wazero.RuntimeConfig) (wazero.Runtime, error) {
|
||||
var err error
|
||||
|
||||
if cfg == nil {
|
||||
// Ensure runtime config is set.
|
||||
cfg = wazero.NewRuntimeConfig()
|
||||
}
|
||||
|
||||
// Set core features ffmpeg compiled with.
|
||||
cfg = cfg.WithCoreFeatures(CoreFeatures)
|
||||
|
||||
// Instantiate runtime with prepared config.
|
||||
rt := wazero.NewRuntimeWithConfig(ctx, cfg)
|
||||
|
||||
// Prepare default "env" host module.
|
||||
env := rt.NewHostModuleBuilder("env")
|
||||
|
||||
// Register setjmp host function.
|
||||
env = env.NewFunctionBuilder().
|
||||
WithGoModuleFunction(
|
||||
api.GoModuleFunc(setjmp),
|
||||
[]api.ValueType{api.ValueTypeI32},
|
||||
[]api.ValueType{api.ValueTypeI32},
|
||||
).Export("setjmp")
|
||||
|
||||
// Register longjmp host function.
|
||||
env = env.NewFunctionBuilder().
|
||||
WithGoModuleFunction(
|
||||
api.GoModuleFunc(longjmp),
|
||||
[]api.ValueType{api.ValueTypeI32, api.ValueTypeI32},
|
||||
[]api.ValueType{},
|
||||
).Export("longjmp")
|
||||
|
||||
// Instantiate "env" module.
|
||||
_, err = env.Instantiate(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Instantiate the wasi snapshot preview 1 in runtime.
|
||||
_, err = wasi_snapshot_preview1.Instantiate(ctx, rt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return rt, nil
|
||||
}
|
Reference in New Issue
Block a user