Chromium Code Reviews
DescriptionMerge 57: Move destruction of VEAEncoder to encoding task runner
We were seeing random crashes in WebRtcMediaRecorderTest.*FiresErrorEvent tests
because:
- GpuVideoEncodeAcceleratorHost::Initialize() takes a naked ptr to |client|
which is VEAEncoder.
- GpuVideoEncodeAcceleratorHost::OnRequireBitstreamBuffers() calls
client->OnRequireBitstreamBuffers().
- While VEAEncoder::RequireBitstreamBuffers() is running on
|encoding_task_runner_|, ~VEAEncoder() gets called on main render thread
through ~VideoTrackRecorder() after the error event.
~ VEAEncoder() needs a mechanism similar to H264Encoder::ShutdownEncoder() to
make sure that shutdown tasks on |encoding_task_runner_| are completed before
moving on.
This CL solves the issues by making sure that dtor completes tasks on encoding
task runner via DestroyOnEncodingTaskRunner().
BUG=701030
TEST=WebRtcMediaRecorderTest.*FiresErrorEvent tests consistently pass on
local Mac builds.
Review-Url: https://codereview.chromium.org/2750993002
Cr-Commit-Position: refs/heads/master@{#457101}
(cherry picked from commit caa1c995a9a8dc99a4d6999d78f796aa4dbdae0f)
NOTRY=true
NOPRESUBMIT=true
TBR=mcasas@chromium.org
Review-Url: https://codereview.chromium.org/2766753003
Cr-Commit-Position: refs/branch-heads/2987@{#857}
Cr-Branched-From: ad51088c0e8776e8dcd963dbe752c4035ba6dab6-refs/heads/master@{#444943}
Committed: https://chromium.googlesource.com/chromium/src/+/cbd3849cd2254532cc0351c2c9211d343bd53d7c
Patch Set 1 #
Messages
Total messages: 6 (4 generated)
|
|||||||||||||||||||