Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(932)

Issue 10702050: Add SincResampler ported from WebKit. (Closed)

Created:
8 years, 5 months ago by DaleCurtis
Modified:
8 years, 5 months ago
CC:
chromium-reviews, feature-media-reviews_chromium.org
Visibility:
Public.

Description

Add SincResampler ported from WebKit. This is a partial port of WebAudio's SincResampler from WebKit formatted and culled for use by Chrome Media. We can't directly use the one in WebKit as it's layed under a ton of abstraction and is tightly coupled with WebKit objects. Test generates a swept sine wave and calculates the RMS error for common sample rates (via UMA stats). MultiChannelResampler and AudioRenderMixer changes to support resampling will come in later CLs. The 1000 ft view is that MultiChannelResampler will implement SincResampler:: AudioSourceProvider and AudioRendererMixer will implement a new MultiChannelResampler::MultiChannelAudioSourceProvider interface. When resampling is necessary AudioRenderMixer will feed itself into a MultiChannelResampler instance which will poll data as necessary and feed it channel by channel into a set of SincResamplers (one for each channel). We want to resample post-mixing since resampling is a much more expensive operation. Original for reference: http://git.chromium.org/gitweb/?p=external/Webkit.git&a=blob&f=Source/WebCore/platform/audio/SincResampler.cpp Visual plot of 44100 to 48000 for reference; red line is the resampled signal and the green line is the reference signal. Ideally only the pure signal (green) should be seen. Any bit of the resampled signal showing (red) is where the resampling algorithm is incorrect: http://i.imgur.com/1vsaI.png BUG=133637 TEST=New unittests. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=146219

Patch Set 1 : Initial Commit! #

Patch Set 2 : Zero-Initialize Arrays + Check Max Error. #

Total comments: 57

Patch Set 3 : Comments! #

Total comments: 32

Patch Set 4 : Review Fixes! #

Patch Set 5 : Remove unused variable. #

Total comments: 40

Patch Set 6 : Fixes. #

Total comments: 2

Patch Set 7 : Nits! #

Patch Set 8 : Decrease precision tests. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+554 lines, -0 lines) Patch
A media/base/sinc_resampler.h View 1 2 3 4 5 1 chunk +71 lines, -0 lines 0 comments Download
A media/base/sinc_resampler.cc View 1 2 3 4 5 6 1 chunk +227 lines, -0 lines 0 comments Download
A media/base/sinc_resampler_unittest.cc View 1 2 3 4 5 6 7 1 chunk +253 lines, -0 lines 0 comments Download
M media/media.gyp View 1 2 3 4 5 2 chunks +3 lines, -0 lines 0 comments Download

Messages

Total messages: 25 (0 generated)
DaleCurtis
PTAL. fischman: chrome style, unit test sanity review. crogers: resampler review. Thanks!
8 years, 5 months ago (2012-06-29 23:43:12 UTC) #1
Chris Rogers
Thanks Dale, I'll have a more detailed look later. The unit test looks like it's ...
8 years, 5 months ago (2012-06-30 00:02:19 UTC) #2
Ami GONE FROM CHROMIUM
not reviewed for math or audio at all yet. Will do once these comments (and ...
8 years, 5 months ago (2012-06-30 20:29:30 UTC) #3
DaleCurtis
Just comments, thanks again! http://codereview.chromium.org/10702050/diff/9002/media/base/sinc_resampler_unittest.cc File media/base/sinc_resampler_unittest.cc (right): http://codereview.chromium.org/10702050/diff/9002/media/base/sinc_resampler_unittest.cc#newcode58 media/base/sinc_resampler_unittest.cc:58: // which may have undefined ...
8 years, 5 months ago (2012-07-01 23:31:29 UTC) #4
Chris Rogers
Dale, although this is more verbose, here's a suggestion for a linear sweep from a ...
8 years, 5 months ago (2012-07-02 20:38:13 UTC) #5
Chris Rogers
> https://chromiumcodereview.appspot.com/10702050/diff/9002/media/base/sinc_resampler_unittest.cc#newcode145 > media/base/sinc_resampler_unittest.cc:145: > provider->ResetTimeState(output_rate); > Instead of re-using the existing object and exposing ...
8 years, 5 months ago (2012-07-02 20:48:44 UTC) #6
DaleCurtis
PTAL. Unit test is incomplete pending decision by crogers on exactly what error levels we ...
8 years, 5 months ago (2012-07-03 00:36:34 UTC) #7
DaleCurtis
http://codereview.chromium.org/10702050/diff/9002/media/base/sinc_resampler.h File media/base/sinc_resampler.h (right): http://codereview.chromium.org/10702050/diff/9002/media/base/sinc_resampler.h#newcode16 media/base/sinc_resampler.h:16: static const int kBlockSize; On 2012/07/03 00:36:34, DaleCurtis wrote: ...
8 years, 5 months ago (2012-07-03 01:53:07 UTC) #8
Chris Rogers
Dale, my previous suggestion for the linear sweep was flawed because there is significant phase ...
8 years, 5 months ago (2012-07-03 19:42:53 UTC) #9
Ami GONE FROM CHROMIUM
Basically LGTM with a bunch of nits and modulo leaving audio-bits review up to crogers@. ...
8 years, 5 months ago (2012-07-03 20:54:42 UTC) #10
DaleCurtis
http://codereview.chromium.org/10702050/diff/13005/media/base/sinc_resampler.h File media/base/sinc_resampler.h (right): http://codereview.chromium.org/10702050/diff/13005/media/base/sinc_resampler.h#newcode30 media/base/sinc_resampler.h:30: // The size of the internal buffer used by ...
8 years, 5 months ago (2012-07-09 20:35:34 UTC) #11
Chris Rogers
sinc_resampler.h / .cc look good. I'll wait until you update the unit-test with my suggestion ...
8 years, 5 months ago (2012-07-09 21:51:42 UTC) #12
DaleCurtis
http://codereview.chromium.org/10702050/diff/13005/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/13005/media/base/sinc_resampler.cc#newcode32 media/base/sinc_resampler.cc:32: // |virtual_source_idx_|, etc. On 2012/07/09 21:51:42, Chris Rogers wrote: ...
8 years, 5 months ago (2012-07-10 01:00:25 UTC) #13
Ami GONE FROM CHROMIUM
http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode18 media/base/sinc_resampler.cc:18: // <---------------------------------------> I hope you have tests covering the ...
8 years, 5 months ago (2012-07-10 03:23:00 UTC) #14
DaleCurtis
http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode18 media/base/sinc_resampler.cc:18: // <---------------------------------------> On 2012/07/10 03:23:00, Ami Fischman wrote: > ...
8 years, 5 months ago (2012-07-10 05:24:48 UTC) #15
Ami GONE FROM CHROMIUM
http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode18 media/base/sinc_resampler.cc:18: // <---------------------------------------> On 2012/07/10 05:24:48, DaleCurtis wrote: > On ...
8 years, 5 months ago (2012-07-10 16:48:50 UTC) #16
Chris Rogers
On 2012/07/10 16:48:50, Ami Fischman wrote: > http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc > File media/base/sinc_resampler.cc (right): > > http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode18 ...
8 years, 5 months ago (2012-07-10 17:01:03 UTC) #17
Chris Rogers
http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode172 media/base/sinc_resampler.cc:172: return; On 2012/07/10 16:48:50, Ami Fischman wrote: > What ...
8 years, 5 months ago (2012-07-10 17:37:10 UTC) #18
DaleCurtis
http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc File media/base/sinc_resampler.cc (right): http://codereview.chromium.org/10702050/diff/26001/media/base/sinc_resampler.cc#newcode18 media/base/sinc_resampler.cc:18: // <---------------------------------------> On 2012/07/10 16:48:50, Ami Fischman wrote: > ...
8 years, 5 months ago (2012-07-10 21:38:55 UTC) #19
Chris Rogers
LGTM - nice work! http://codereview.chromium.org/10702050/diff/1009/media/base/sinc_resampler_unittest.cc File media/base/sinc_resampler_unittest.cc (right): http://codereview.chromium.org/10702050/diff/1009/media/base/sinc_resampler_unittest.cc#newcode175 media/base/sinc_resampler_unittest.cc:175: * std::min(input_rate_, output_rate_)) { Instead ...
8 years, 5 months ago (2012-07-11 00:16:49 UTC) #20
DaleCurtis
http://codereview.chromium.org/10702050/diff/1009/media/base/sinc_resampler_unittest.cc File media/base/sinc_resampler_unittest.cc (right): http://codereview.chromium.org/10702050/diff/1009/media/base/sinc_resampler_unittest.cc#newcode175 media/base/sinc_resampler_unittest.cc:175: * std::min(input_rate_, output_rate_)) { On 2012/07/11 00:16:49, Chris Rogers ...
8 years, 5 months ago (2012-07-11 17:17:22 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dalecurtis@chromium.org/10702050/2006
8 years, 5 months ago (2012-07-11 17:17:34 UTC) #22
commit-bot: I haz the power
Try job failure for 10702050-2006 (retry) on win_rel for step "media_unittests". It's a second try, ...
8 years, 5 months ago (2012-07-11 19:42:30 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dalecurtis@chromium.org/10702050/4011
8 years, 5 months ago (2012-07-11 20:47:09 UTC) #24
commit-bot: I haz the power
8 years, 5 months ago (2012-07-11 21:58:09 UTC) #25
Change committed as 146219

Powered by Google App Engine
This is Rietveld 408576698