v0.1首个正式支持的版本化规范查看版本范围

playback.write()

向已打开的输出提交交错、little-endian f32 PCM 帧,并返回可观察的背压结果。

Syntax

const result = await host.playback.write(output, samples);

Parameters

参数 类型 说明
output audio-output handle open() 返回的当前会话句柄
samples ByteSource 字节数为 channels × 4 整数倍的 PCM

采样值必须有限且位于 [-1, 1];越界值、NaN 和 Infinity 都必须拒绝。

输入必须含 1..playback.maxWriteFrames 个完整帧。调用在线性化点观察 queuedBefore,并返回 acceptedFrames = min(inputFrames, maxQueuedFrames - queuedBefore);同一句柄的并发写入按宿主接受调用的顺序线性化。

Return value

{ acceptedFrames: u32, queuedFrames: u32 }

queuedFrames = queuedBefore + acceptedFrames。缓冲已满时成功返回 acceptedFrames: 0;未接受尾部仍归 guest 所有,正常背压不得丢弃已经接受的帧。

Examples

const pcm = mixer.render(1024);
const result = await host.playback.write(
  stream.output,
  new Uint8Array(pcm.buffer, pcm.byteOffset, pcm.byteLength),
);
if (result.acceptedFrames < 1024) mixer.retainTail(result.acceptedFrames);

不要忙循环重试;等待 playback.ready

Errors

特有错误:stale-handleresource-deniedinvalid-formatbusydevice-unavailablelimit-exceeded

Requirements

  • 授权:handle-derived,不进入 manifest capability 列表
  • 需要 playback.open() 返回的活动 audio-output write 句柄
  • 信任档位:yellow

See also

playback.readyplayback.open()

Host API 版本与分层概览Host API v0.1版本非正式提议提议canvas API呈现canvas.getInfo()方法canvas.draw()方法canvas.present()方法canvas.measureText()方法canvas.frame event事件canvas.resize event事件asset API呈现asset.read()方法asset.loadFont()方法playback API呈现playback.open()方法playback.write()方法playback.stop()方法playback.ready event事件playback.ended event事件input API输入input.focus()方法input.pointer event事件input.key event事件input.wheel event事件input.focusChange event事件ime API输入ime.openSession()方法ime.updateState()方法ime.updateGeometry()方法ime.closeSession()方法ime.textUpdate event事件ime.composition event事件ime.formatUpdate event事件ime.characterBoundsRequest event事件ime.ended event事件capture API输入capture.requestCamera()方法capture.requestMic()方法capture.frame()方法capture.readAudio()方法capture.stop()方法capture.ended event事件store API数据store.get()方法store.put()方法store.delete()方法store.list()方法store.deletePrefix()方法clipboard API数据clipboard.readText()方法clipboard.writeText()方法env API平台集成env.snapshot()方法env.change event事件开始调用 Host API指南构建交互式绘图应用指南构建自绘文本编辑器指南管理媒体采集与播放指南组织本地数据与同步指南