Closed
Bug 1221833
Opened 9 years ago
Closed 9 years ago
remove direct convolution stage; instead use largest initial FFT stage possible
Categories
(Core :: Web Audio, defect, P1)
Core
Web Audio
Tracking
()
RESOLVED
FIXED
mozilla45
Tracking | Status | |
---|---|---|
firefox45 | --- | fixed |
People
(Reporter: karlt, Assigned: karlt)
References
(Blocks 1 open bug)
Details
(Keywords: perf)
Attachments
(4 files)
Replacing direct convolution with an fft stage of the same size reduces
rendering thread cpu usage by 6% on attachment 8683409 [details].
Removing the first two half-block-size stages reduces rendering thread cpu usage by a further 2.5%.
Assignee | ||
Comment 1•9 years ago
|
||
bug 1221833 reduce FFTConvolver latency by one block r?padenot
Attachment #8683445 -
Flags: review?(padenot)
Assignee | ||
Comment 2•9 years ago
|
||
bug 1221833 replace initial direct convolution stage with fft r?padenot
Attachment #8683446 -
Flags: review?(padenot)
Assignee | ||
Comment 3•9 years ago
|
||
bug 1221833 remove first two half-block-size convolver stages r?padenot
Efficiency is proportional to stage size, so start with the largest size
possible.
Attachment #8683447 -
Flags: review?(padenot)
Assignee | ||
Comment 4•9 years ago
|
||
bug 1221833 remove now-unused direct convolver r?padenot
Attachment #8683448 -
Flags: review?(padenot)
Updated•9 years ago
|
Rank: 12
Priority: -- → P1
Comment 5•9 years ago
|
||
(In reply to Karl Tomlinson (ni?:karlt) from comment #2)
> Created attachment 8683446 [details]
> MozReview Request: bug 1221833 replace initial direct convolution stage with
> fft r?padenot
>
> bug 1221833 replace initial direct convolution stage with fft r?padenot
Why do you think it got initially written using direct computation? The fft size always has been big enough so that doing it in the frequency domain should have been a win, no?
Flags: needinfo?(karlt)
Comment 6•9 years ago
|
||
Comment on attachment 8683445 [details]
MozReview Request: bug 1221833 reduce FFTConvolver latency by one block r?padenot
https://reviewboard.mozilla.org/r/24351/#review21867
Attachment #8683445 -
Flags: review?(padenot) → review+
Comment 7•9 years ago
|
||
Comment on attachment 8683446 [details]
MozReview Request: bug 1221833 replace initial direct convolution stage with fft r?padenot
https://reviewboard.mozilla.org/r/24353/#review21869
Attachment #8683446 -
Flags: review?(padenot) → review+
Updated•9 years ago
|
Attachment #8683447 -
Flags: review?(padenot) → review+
Comment 8•9 years ago
|
||
Comment on attachment 8683447 [details]
MozReview Request: bug 1221833 remove first two half-block-size convolver stages r?padenot
https://reviewboard.mozilla.org/r/24355/#review21871
Comment 9•9 years ago
|
||
Comment on attachment 8683448 [details]
MozReview Request: bug 1221833 remove now-unused direct convolver r?padenot
https://reviewboard.mozilla.org/r/24357/#review21873
Attachment #8683448 -
Flags: review?(padenot) → review+
Assignee | ||
Comment 10•9 years ago
|
||
(In reply to Paul Adenot (:padenot) from comment #5)
> Why do you think it got initially written using direct computation? The fft
> size always has been big enough so that doing it in the frequency domain
> should have been a win, no?
The first FFT stage size was the same size as the direct stage, so, yes, I don't think the size of the stage was the reason for choosing to use the direct computation.
I suspect the reason for using the direct stage was just that the FFT stage implementation didn't support zero latency at any stage sizes.
I haven't looked at the code history but the existence of the Reverb/ReverbConvolver::latencyFrames() methods (to be removed in bug 1221831) and the reverbTotalLatency variable in the ReverbConvolver constructor might indicate that these were once non-zero. Perhaps, the FFTConvolver implementation may have been designed for a more general situation with variable block sizes.
Flags: needinfo?(karlt)
Comment 11•9 years ago
|
||
Comment 12•9 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/26eaa1b7e878
https://hg.mozilla.org/mozilla-central/rev/fe2266a55ca1
https://hg.mozilla.org/mozilla-central/rev/b69c165bf3c0
https://hg.mozilla.org/mozilla-central/rev/e66105937eef
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
status-firefox45:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in
before you can comment on or make changes to this bug.
Description
•