renderFrames only collects audio from the first tab, so short clips can be missing with concurrency > 1

Abierto
#20 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@elwizard33 ya está trabajando en esto.

Desde el 2/11/2026.

  • #27 de @elwizard33 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
react, typescript

Línea de trabajo

Start at renderFrames, where the issue says audio sources are read from pages[0]; inspect how pages render queued frames and where audioSources is returned. Reproduce with the provided two-frame composition at concurrency 2, then check that sources from all pages are included and duplicate keys collapse. A fix is already being pursued in linked pull request #27.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

After rendering, renderFrames reads window.__RENDIV_AUDIO_SOURCES__ from pages[0] only. Each tab has its own window, and an <Audio> only registers in the tab that rendered a frame where it was mounted. So if a clip only mounts on frames that other tabs rendered, it isn't collected and silently drops out of the mix.

Since every tab pulls frames from the same queue, each one ends up rendering roughly every Nth frame (N = concurrency). In practice that means it mostly hits clips whose <Sequence> is shorter than the concurrency. Longer clips almost always get mounted in the first tab at some point too.

Repro:

const TwoTabs = () => (
  <>
    <Fill style={{ background: '#123' }} />
    <Sequence from={0} durationInFrames={1}><Audio src={staticFile('a.mp3')} /></Sequence>
    <Sequence from={1} durationInFrames={1}><Audio src={staticFile('b.mp3')} /></Sequence>
  </>
);
// <Composition id="TwoTabs" component={TwoTabs} durationInFrames={2} fps={30} width={320} height={180} />

With renderFrames({ ..., concurrency: 2 }), tab 1 renders frame 0 and tab 2 renders frame 1. On master (6d6aca2) the returned audioSources only has a.mp3.

Reading the map from every page and merging by key fixes it. The keys are already content-based, so duplicates collapse on their own. That's in #27.

Lenguaje dominante
TypeScript
Estrellas
159
Forks
32
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de thecodacus/rendiv

Todos los issues de thecodacus/rendiv

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.