M interpolating-renderer.sml +1 -1
@@ 245,7 245,7 @@ structure InterpolatingWaveformRenderer
"InterpolatingWaveformRenderer.render"
(fn () => render' renderer spec)
- fun new { source : RealRandomAccess.random_access, durationHint }
+ fun new { source : RealRandomAccess.random_access, durationHint, tempDir }
: renderer = {
audio = source,
oversampler = BqResample.new { channels = 1,
M summarising-renderer.sml +5 -5
@@ 359,15 359,15 @@ structure SummarisingWaveformRenderer :
"SummarisingWaveformRenderer.render busy")
(fn () => render' renderer spec)
- fun new { source, durationHint } =
+ fun new { source, durationHint, tempDir } =
let val towerArg = { sources = [ source ],
durationHint = durationHint,
seekDistanceHint = NONE,
spans = [ 32, 256, 4096, 65536 ],
- (* Has to be IN_MEMORY, because file
- backing hasn't been implemented for
- linear summary towers *)
- backing = SummaryTowerTypes.IN_MEMORY
+ backing = SummaryTowerTypes.FILE_BACKED {
+ tempDir = tempDir,
+ inMemoryAboveSpan = SOME 4096
+ }
}
in
{ audio = source,
M waveform-renderer.sig +2 -1
@@ 19,7 19,8 @@ signature WAVEFORM_RENDERER = sig
}
val new : { source : RealRandomAccess.random_access,
- durationHint : RealTime.t option
+ durationHint : RealTime.t option,
+ tempDir : string option
} -> renderer
val render : renderer -> render_spec -> render_result
M waveform-renderer.sml +3 -1
@@ 33,7 33,9 @@ structure WaveformRenderer : WAVEFORM_RE
renderFunc spec
end
- fun new (args as { source : RealRandomAccess.random_access, durationHint })
+ fun new (args as { source : RealRandomAccess.random_access,
+ tempDir,
+ durationHint })
: renderer = {
rate = #rate source,
summarising = SummarisingWaveformRenderer.new args,