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

Issue 2788483003: Introduce AudioBufferMemoryPool to avoid thrashing on audio buffers. (Closed)

Created:
3 years, 8 months ago by DaleCurtis
Modified:
3 years, 8 months ago
Reviewers:
slan, bbudge, xhwang
CC:
alokp+watch_chromium.org, chromium-reviews, darin-cc_chromium.org, eme-reviews_chromium.org, feature-media-reviews_chromium.org, halliwell+watch_chromium.org, jam, lcwu+watch_chromium.org, mlamouri+watch-content_chromium.org, posciak+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Introduce AudioBufferMemoryPool to avoid thrashing on audio buffers. We create thousands of AudioBuffer objects per minute in many cases, local testing on Linux desktop reveals we only end up reusing about 80% of what we allocate, so add a memory pool which ensures 99% reuse for common playback scenarios. The AudioPlayback clockless pipeline integration test shows an improvement in runs/s of ~4-20% depending on system load. This is a simple change, so the gains seem worth it. BUG=none TEST=new AudioBuffer unittests, existing ones pass. Review-Url: https://codereview.chromium.org/2788483003 Cr-Commit-Position: refs/heads/master@{#461308} Committed: https://chromium.googlesource.com/chromium/src/+/6a3eacc6ccf19f2779937859de92e35a3d3dd908

Patch Set 1 #

Patch Set 2 : Lock yo' pools! #

Total comments: 1

Patch Set 3 : Fix use-after-free. #

Patch Set 4 : Privatize methods. Remove cruft. #

Total comments: 4

Patch Set 5 : Add class comments. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+313 lines, -162 lines) Patch
M chromecast/media/cma/backend/alsa/audio_decoder_alsa.h View 2 chunks +3 lines, -0 lines 0 comments Download
M chromecast/media/cma/backend/alsa/audio_decoder_alsa.cc View 3 chunks +2 lines, -2 lines 0 comments Download
M content/renderer/pepper/content_decryptor_delegate.h View 2 chunks +3 lines, -0 lines 0 comments Download
M content/renderer/pepper/content_decryptor_delegate.cc View 3 chunks +4 lines, -8 lines 0 comments Download
M media/base/audio_buffer.h View 1 2 3 4 5 chunks +65 lines, -15 lines 0 comments Download
M media/base/audio_buffer.cc View 1 2 3 8 chunks +58 lines, -33 lines 0 comments Download
M media/base/audio_buffer_converter.h View 3 chunks +4 lines, -1 line 0 comments Download
M media/base/audio_buffer_converter.cc View 3 chunks +6 lines, -8 lines 0 comments Download
M media/base/audio_buffer_unittest.cc View 1 chunk +47 lines, -0 lines 0 comments Download
M media/cdm/cdm_adapter.h View 2 chunks +3 lines, -0 lines 0 comments Download
M media/cdm/cdm_adapter.cc View 2 chunks +2 lines, -1 line 0 comments Download
M media/filters/android/media_codec_audio_decoder.h View 2 chunks +4 lines, -0 lines 0 comments Download
M media/filters/android/media_codec_audio_decoder.cc View 3 chunks +4 lines, -4 lines 0 comments Download
M media/filters/ffmpeg_audio_decoder.h View 3 chunks +8 lines, -0 lines 0 comments Download
M media/filters/ffmpeg_audio_decoder.cc View 4 chunks +100 lines, -90 lines 0 comments Download

Messages

Total messages: 26 (18 generated)
DaleCurtis
xhwang@ please review all +bbudge for content/renderer/pepper stamp +slan for chromecast/ stamp
3 years, 8 months ago (2017-03-30 23:36:06 UTC) #2
bbudge
content/renderer/pepper lgtm
3 years, 8 months ago (2017-03-30 23:42:59 UTC) #5
DaleCurtis
https://codereview.chromium.org/2788483003/diff/20001/media/base/audio_buffer.cc File media/base/audio_buffer.cc (right): https://codereview.chromium.org/2788483003/diff/20001/media/base/audio_buffer.cc#newcode31 media/base/audio_buffer.cc:31: if (entries_.front().size == size) Whoops this is wrong. Will ...
3 years, 8 months ago (2017-03-31 03:44:40 UTC) #12
slan
On 2017/03/31 03:44:40, DaleCurtis wrote: > https://codereview.chromium.org/2788483003/diff/20001/media/base/audio_buffer.cc > File media/base/audio_buffer.cc (right): > > https://codereview.chromium.org/2788483003/diff/20001/media/base/audio_buffer.cc#newcode31 > ...
3 years, 8 months ago (2017-03-31 15:26:01 UTC) #13
xhwang
nice CL! lgtm % nit https://codereview.chromium.org/2788483003/diff/60001/media/base/audio_buffer.cc File media/base/audio_buffer.cc (right): https://codereview.chromium.org/2788483003/diff/60001/media/base/audio_buffer.cc#newcode25 media/base/audio_buffer.cc:25: AudioBufferMemoryPool::AudioMemory AudioBufferMemoryPool::CreateBuffer( Could you ...
3 years, 8 months ago (2017-04-01 00:05:27 UTC) #18
DaleCurtis
Thanks for review! Updated class comment with buffer details. https://codereview.chromium.org/2788483003/diff/60001/media/base/audio_buffer.cc File media/base/audio_buffer.cc (right): https://codereview.chromium.org/2788483003/diff/60001/media/base/audio_buffer.cc#newcode25 media/base/audio_buffer.cc:25: ...
3 years, 8 months ago (2017-04-01 01:00:01 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2788483003/80001
3 years, 8 months ago (2017-04-01 01:00:23 UTC) #22
commit-bot: I haz the power
3 years, 8 months ago (2017-04-01 03:01:22 UTC) #26
Message was sent while issue was closed.
Committed patchset #5 (id:80001) as
https://chromium.googlesource.com/chromium/src/+/6a3eacc6ccf19f2779937859de92...

Powered by Google App Engine
This is Rietveld 408576698