(bind-func pipeline_stage:[FilterData*,!a,i64]*
(lambda (filt depth)
(let ((rate 1)
(datasize (* rate (filt.push) depth))
(d (alloc datasize))
(b (QBuffer 0 0 datasize d))
(p:i1 (or (refcheck filt prepush)
(refcheck filt prepeek)
(refcheck filt prepop)))
(work (filt b))
(lwork:[void]* work) ;; because rate is always 1 we ignore lwork
(prework:[void]* (if p (work.prework) work)))
(FilterData rate b b work lwork prework #f #t))))