gpt4 book ai didi

rust - 在 wasm-bindgen 中扩展 AudioWorkletProcessor?

转载 作者:行者123 更新时间:2023-12-03 11:44:45 31 4
gpt4 key购买 nike

关于如何在 rust -> wasm 中使用现有 javascript Web 系统的文档使用 wasm-bindgen 的流程非常简单。简而言之:

  • 将所需功能列为依赖项
  • // cargo.toml

    [dependencies.web-sys]
    version = "0.3.4"
    features = [
    'AudioContext',
    'OscillatorNode'
    ]
  • 通过 web_sys 访问,并从那里正常对待它们。
  • // lib.rs

    #[wasm_bindgen]
    impl FmOsc {
    #[wasm_bindgen(constructor)]
    pub fn new() -> Result<FmOsc, JsValue> {
    let ctx = web_sys::AudioContext::new()?;
    let primary = ctx.create_oscillator()?;
    let fm_osc = ctx.create_oscillator()?;
    链接到 full example

    虽然这种方法适用于大多数 Web 系统,但对于需要您扩展类的系统来说并不那么简单。在这种情况下,我尝试使用 AudioWorkletProccessor from wasm-bindgen
    在标准用法中,您应该扩展 AudioWorkletProcessor类,然后注册它。 MDN Example

    我该如何解决这个问题?首先我需要扩展 AudioWorkletProcessor在 Rust(它不做普通类和继承)中,覆盖它的 process()功能。然后我需要确定 registerProcessor()被注入(inject)我的使用rust 空间。

    编辑: WASM docs on extends

    最佳答案

    您必须在 JavaScript 端执行此操作。 wasm-bindgen不支持扩展导入的类并将它们重新导出为 JavaScript;但是,他们确实希望最终支持它,并且有一个 issue跟踪它,以及相关的RFC .

    关于rust - 在 wasm-bindgen 中扩展 AudioWorkletProcessor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63893000/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com